Container-Optimized OS è basato e creato utilizzando gli strumenti del progetto open source Chromium OS. Se vuoi, puoi creare autonomamente un'immagine del sistema operativo ottimizzato per i container direttamente dal codice sorgente di Container-Optimized OS.
Prerequisiti
Per creare un'immagine del sistema operativo ottimizzato per i container, devi installare i seguenti strumenti sulla tua macchina di sviluppo:
git
ecurl
- Un pacchetto di script di Chromium chiamato
depot_tools
che include strumenti comerepo
ecros_sdk
.
Ottenere il codice sorgente di Container-Optimized OS
Puoi scaricare il codice sorgente di Container-Optimized OS utilizzando lo strumento repo
incluso in depot_tools
.
Per prima cosa, crea una directory per archiviare il codice sorgente. Ad esempio, cos-src
nella
tua home directory:
mkdir $HOME/cos-src
cd $HOME/cos-src
Ora scarica il codice sorgente utilizzando i seguenti comandi:
repo init https://cos.googlesource.com/cos/manifest.git
repo sync
Creazione di un'immagine del sistema operativo ottimizzato per i container
Per compilare Container-Optimized OS, devi creare un ambiente chroot
idoneo. 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 compilare
Container-Optimized OS, specifica lakitu
(immagine x86) o lakitu-arm64
(immagine ARM) per il nome della scheda 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 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
, nonché gli strumenti necessari per eseguire test automatici di Container-Optimized OS.
Requisiti di attribuzione
Quando produci un'immagine del sistema operativo ottimizzato per i container, devi soddisfare diversi requisiti di attribuzione delle licenze di terze parti. L'immagine generata da una compilazione contiene tutte le informazioni sull'attribuzione pertinenti in /opt/google/chrome/resources/about_os_credits.html
. Come elemento compilato distinto, è disponibile anche come file license_credits.html
nella directory di output della compilazione.
Eseguire l'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,
consentendoti di accedere senza utilizzare SSH. Se stai utilizzando un'immagine test
, puoi accedere con la coppia di nome utente/password "root/test0000".
Una volta avviata la VM, puoi accedere all'immagine dev
o test
utilizzando SSH. Per eseguire SSH nell'immagine, utilizza la chiave generata per l'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
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 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 riportate nella documentazione di Compute Engine.