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 https://cos.googlesource.com/cos/manifest.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. Um ein Container-Optimized OS-Image zu erstellen, geben Sie lakitu
(x86-Image) oder lakitu-arm64
(Arm-Image) für den Board-Namen so an:
x86-Image
build_packages --board=lakitu
build_image --board=lakitu test
Arm-Image
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 an die Quellenangabe von Lizenzen von Drittanbietern erfüllen. Das von einem Build generierte Bild enthält alle relevanten Informationen zur Attribution in /opt/google/chrome/resources/about_os_credits.html
. Als separates Build-Artefakt ist es auch als license_credits.html
-Datei im Build-Ausgabeverzeichnis verfügbar.
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.
Im Hypervisor ausgeführt
Um das Image im Hypervisor zu starten, führen Sie den folgenden Befehl aus:
x86-Image
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
Arm-Image
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|'
Arm-Image
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.