Creazione di Container-Optimized OS dall'origine

Container-Optimized OS si basa e crea utilizzando strumenti del Chromium OS open source progetto. Se vuoi, puoi creare autonomamente un'immagine Container-Optimized OS direttamente dal codice sorgente di Container-Optimized OS.

Prerequisiti

Per creare un'immagine Container-Optimized OS, devi installare quanto segue di sviluppo software sul tuo computer di sviluppo:

  • git e curl
  • Un pacchetto di script Chromium chiamato depot_tools che include strumenti come repo e cros_sdk.

Ottenere il codice sorgente di Container-Optimized OS

Puoi scaricare il codice sorgente per Container-Optimized OS utilizzando il comando Strumento repo incluso in depot_tools.

Innanzitutto, crea una directory in cui archiviare il codice sorgente. Ad esempio, cos-src in nella tua home directory:

mkdir $HOME/cos-src
cd $HOME/cos-src

Ora scarica il codice sorgente utilizzando i seguenti comandi:

repo init -u https://cos.googlesource.com/cos/manifest.git \
  --repo-url https://chromium.googlesource.com/external/repo.git
repo sync

Creazione di un'immagine di Container-Optimized OS

Per creare Container-Optimized OS, devi creare un'entità chroot adatta completamente gestito di Google Cloud. Puoi utilizzare lo strumento cros_sdk incluso in depot_tools per creare e inserire un chroot pronto per la compilazione del sistema operativo ottimizzato per i container eseguendo il seguente comando nella directory di origine creata nel passaggio precedente:

cd $HOME/cos-src
cros_sdk --enter

Una volta all'interno di chroot, puoi creare l'immagine disco. Per creare Container-Optimized OS, specifica lakitu (immagine x86) o lakitu-arm64 (Immagine Arm) per il nome della lavagna, come segue:

Immagine x86

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

Immagine del braccio

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

Oltre a test, puoi creare un'immagine base o dev passando il parametro appropriato al comando di script ./build image. Se non specifichi un parametro, l'immagine dev viene creata per impostazione predefinita.

L'immagine dev contiene alcuni strumenti di debug aggiuntivi installati nella parte superiore della Immagine base. L'immagine test include gli strumenti di debug dall'immagine dev come e gli strumenti necessari per eseguire test automatici di Container-Optimized OS.

Requisiti di attribuzione

Quando produci un'immagine di Container-Optimized OS, devi soddisfare vari requisiti di attribuzione delle licenze di terze parti. L'immagine generata da una build contenga tutte le informazioni sull'attribuzione pertinenti in /opt/google/chrome/resources/about_os_credits.html. Come build separata artefatto è disponibile anche come file license_credits.html nell'output della build .

Esecuzione dell'immagine

Dopo aver creato l'immagine del sistema operativo ottimizzato per i container, puoi eseguirla utilizzando KVM o importarla in un'istanza Compute Engine.

Esecuzione in hypervisor

Per avviare l'immagine nell'hypervisor, esegui il seguente comando:

Immagine x86

   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

Immagine del braccio

   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
   

L'avvio in questo modo lascia la porta seriale della VM connessa alla console, che ti permette di accedere senza utilizzare SSH. Se esegui un'immagine test, puoi accedi con la coppia nome utente/password "root/test0000".

Una volta avviata la VM, puoi accedere all'immagine dev o test utilizzando SSH. A Accedi tramite SSH all'immagine, utilizza la chiave generata per quell'immagine, come segue:

Immagine x86

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

Immagine arma

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

In esecuzione su Compute Engine

Per importare l'immagine in un'istanza Compute Engine, devi comprimerla in un file .tar. Per comprimere l'immagine, esegui il seguente comando:

Immagine x86

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

Immagine arma

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

Dopo aver creato il file .tar, puoi seguire le istruzioni per importare un'immagine esistente riportate nella documentazione di Compute Engine.