Container-Optimized OS basiert auf dem Open-Source-Projekt Chromium OS und wurde mit den entsprechenden Tools erstellt. Wenn Sie möchten, können Sie selbst ein Container-Optimized OS-Image direkt aus dem Quellcode des Container-Optimized OS erstellen.
Vorbereitung
Um ein Container-Optimized OS-Image zu erstellen, müssen Sie die folgenden Tools auf Ihrem Entwicklungsrechner installieren:
git
undcurl
- Ein Paket mit Chromium-Skripts namens
depot_tools
, das Tools wierepo
undcros_sdk
enthält.
Quellcode von Container-Optimized OS abrufen
Sie können den Quellcode für Container-Optimized OS mit dem repo
-Tool herunterladen, das in depot_tools
enthalten ist.
Erstellen Sie zuerst ein Verzeichnis zum Speichern des Quellcodes. Beispiel: cos-src
in Ihrem Basisverzeichnis:
mkdir $HOME/cos-src
cd $HOME/cos-src
Laden Sie nun den Quellcode mit den folgenden Befehlen herunter:
repo init -u https://cos.googlesource.com/cos/manifest.git \
--repo-url https://chromium.googlesource.com/external/repo.git
repo sync
Container-Optimized OS-Image erstellen
Zum Erstellen eines Container-Optimized OS müssen Sie eine entsprechende chroot
-Umgebung erstellen. Mit dem in depot_tools
enthaltenen Tool cros_sdk
können Sie eine für die Kompilierung des Container-Optimized OS geeignete chroot
erstellen und aufrufen. Dazu führen Sie folgenden Befehl in dem Quellverzeichnis aus, das Sie im vorherigen Schritt erstellt haben:
cd $HOME/cos-src
cros_sdk --enter
Sobald der Zugriff auf chroot
erfolgt ist, können Sie das Laufwerk-Image erstellen. Zum Erstellen
Container-Optimized OS, geben Sie lakitu
(x86-Image) oder lakitu-arm64
an
(Armbild) für den Boardnamen:
x86-Bild
build_packages --board=lakitu
build_image --board=lakitu test
Armbild
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 test
Zusätzlich zu test
können Sie entweder ein base
- oder ein dev
-Image erstellen. Übergeben Sie dazu den entsprechenden Parameter an den Skriptbefehl ./build image
. Wenn Sie keinen Parameter angeben, wird standardmäßig das dev
-Image erstellt.
Das dev
-Image enthält einige zusätzliche Fehlerbehebungstools, die auf dem base
-Image installiert werden. Das test
-Image enthält die Fehlerbehebungstools des dev
-Images sowie die Tools, die zum Ausführen automatischer Container Optimized OS-Tests erforderlich sind.
Anforderungen an die Quellenangabe
Wenn Sie ein Container-Optimized OS-Image
erstellen, müssen Sie verschiedene
Anforderungen hinsichtlich der Namensnennung von Drittanbieterlizenzen. Das von einem Build generierte Bild
alle relevanten Zuordnungsinformationen in
/opt/google/chrome/resources/about_os_credits.html
Als separater Build
Artefakt ist in der Build-Ausgabe auch als license_credits.html
-Datei verfügbar
-Verzeichnis.
Image ausführen
Sobald Sie das Container-Optimized OS-Image erstellt haben, können Sie das Image mit KVM ausführen oder das Image in eine Compute Engine-Instanz importieren.
Wird in Hypervisor ausgeführt
Um das Image im Hypervisor zu starten, führen Sie den folgenden Befehl aus:
x86-Bild
kvm -m 1024 -nographic -net nic,model=virtio -net user,hostfwd=tcp:127.0.0.1:9222-:22 -hda src/build/images/lakitu/latest/chromiumos_test_image.bin
Arm-Image
sudo apt-get install qemu-system-arm qemu-efi
dd if=/dev/zero of=/tmp/flash0.img bs=1M count=64
dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=/tmp/flash0.img conv=notrunc
sudo qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt -nographic \ -pflash /tmp/flash0.img \ -device virtio-scsi-pci,id=scsi \ -drive if=none,file=src/build/images/lakitu-arm64/latest/chromiumos_test_image.bin,id=hd0 \ -device scsi-hd,drive=hd0,bootindex=0 \ -net nic \ -net user,hostfwd=tcp::9222-:22
Beim Starten auf diese Weise bleibt der serielle Port der VM mit der Konsole verbunden, sodass Sie sich ohne SSH anmelden können. Wenn Sie ein test
-Image ausführen, können Sie sich mit folgender Kombination aus Nutzername und Passwort anmelden: "root/test0000".
Sobald die VM gestartet ist, können Sie über SSH auf Ihr dev
- oder test
-Image zugreifen. Verwenden Sie den für dieses Image generierten Schlüssel, um eine SSH-Verbindung zum Image herzustellen:
x86-Image
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Armbild
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa
Auf Compute Engine ausführen
Um Ihr Image in eine Compute Engine-Instanz zu importieren, müssen Sie das Image in eine .tar
-Datei komprimieren. Um das Image zu komprimieren, führen Sie den folgenden Befehl aus:
x86-Image
tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'
Armbild
tar -Sczf compressed-image.tar.gz images/lakitu-arm64/latest/chromiumos_image.bin --transform 's|images/lakitu-arm64/latest/chromiumos_image.bin|disk.raw|'
Nachdem Sie die .tar
-Datei erstellt haben, können Sie der Anleitung unter Vorhandenes Image importieren in der Compute Engine-Dokumentation folgen.