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 Sie sich in chroot befinden, können Sie das Laufwerk-Image erstellen. Um ein Container-Optimized OS-Image zu erstellen, geben Sie lakitu für den Board-Namen so an:

(cr) ~/trunk/src/scripts $ ./build_packages --board=lakitu
(cr) ~/trunk/src/scripts $ ./build_image --board=lakitu 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.

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 KVM ausführen

Um das Image in KVM zu starten, führen Sie den folgenden Befehl aus:

~/cos $ 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

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:

~/cos $ ssh root@localhost -p 9222 -i src/build/images/lakitu/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:

~/cos $ tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/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.