Container-Optimized OS über den Quellcode erstellen

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 und curl
  • Ein Paket mit Chromium-Skripts namens depot_tools, das Tools wie repo und cros_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. Geben Sie zum Erstellen von Container-Optimized OS lakitu (x86-Image) oder lakitu-arm64 (Arm-Image) für den Board-Namen an:

x86-Bild

   build_packages --board=lakitu
   build_image --board=lakitu test

Bild der Armlehne

   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 Attribution von Drittanbieterlizenzen erfüllen. Das von einem Build generierte Image enthält alle relevanten Attributionsinformationen 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.

In Hypervisor ausführen

Führen Sie den folgenden Befehl aus, um das Image im Hypervisor zu starten:

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

Bild der Armlehne

   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-Bild

   ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa

Bild der Armlehne

   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-Bild

   tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'

Bild der Armlehne

   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.