Creazione Container-Optimized OS dall'origine

Container-Optimized OS si basa e viene creato utilizzando strumenti del progetto open source Chromium OS. 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 i seguenti strumenti sulla tua macchina di sviluppo:

  • git e curl
  • Un pacchetto di script di 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 lo strumento repo incluso in depot_tools.

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

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 Container-Optimized OS

Per creare Container-Optimized OS, devi creare un ambiente chroot adatto. Puoi utilizzare lo strumento cros_sdk incluso in depot_tools per creare e inserire un chroot pronto per la compilazione Container-Optimized OS eseguendo il seguente comando nella directory di origine creata nel passaggio precedente:

cd $HOME/cos-src
cros_sdk --enter

Una volta eseguito l'accesso a chroot, puoi creare l'immagine disco. Per creare Container-Optimized OS, specifica lakitu (immagine x86) o lakitu-arm64 (immagine Arm) come nome della scheda come segue:

immagine x86

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

Immagine 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 dello 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 sopra l'immagine base. L'immagine test include gli strumenti di debug dell'immagine dev e gli strumenti necessari per l'esecuzione dei test automatici Container-Optimized OS.

Requisiti di attribuzione

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

Esecuzione dell'immagine

Dopo aver creato l'immagine di Container-Optimized OS, puoi eseguirla utilizzando un KVM o importarla in un'istanza di Compute Engine.

Esecuzione nell'hypervisor

Per avviare l'immagine in hypervisor, esegui questo 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 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
   

Questo tipo di avvio lascia la porta seriale della VM connessa alla console e ti permette di accedere senza utilizzare SSH. Se esegui un'immagine test, puoi accedere con la coppia nome utente/password "root/test0000".

Dopo l'avvio della VM, puoi accedere all'immagine dev o test tramite SSH. Per accedere tramite SSH all'immagine, utilizza la chiave generata per l'immagine in questione, come indicato di seguito:

immagine x86

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

Immagine braccio

   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 questo 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 braccio

   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 nella documentazione di Compute Engine.