Creazione di un sistema operativo ottimizzato per i container dall'origine

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Prerequisiti

Per creare un'immagine di un sistema operativo ottimizzato per i container, devi installare i seguenti strumenti nella 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 del sistema operativo ottimizzato per i container

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

In primo luogo, crea una directory per archiviare il codice sorgente. Ad esempio, cos-src nella 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 Container-Optimized OS

Per creare un sistema operativo ottimizzato per i container, devi creare un ambiente chroot adatto. Puoi utilizzare lo strumento cros_sdk incluso in depot_tools per creare e inserire un elemento 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 un sistema operativo ottimizzato per i container, specifica lakitu (immagine x86) o lakitu-arm64 (immagine di sistema) per il nome della lavagna, in questo modo:

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 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 eseguire i test automatici del sistema operativo ottimizzato.

Esecuzione dell'immagine

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

Esecuzione in hypervisor

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

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, consentendoti di accedere senza utilizzare SSH. Se esegui un'immagine test, puoi accedere con la coppia nome utente/password "root/test0000".

Una volta avviata la VM, puoi accedere all'immagine dev o test tramite SSH. Per accedere a SSH nell'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 del braccio

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

In esecuzione su Compute Engine

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

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 del 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.