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:
gitecurl- Un pacchetto di script di Chromium chiamato
depot_toolsche include strumenti comerepoecros_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=lakitubuild_image --board=lakitu test
Immagine del braccio
build_packages --board=lakitu-arm64build_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.binImmagine del braccio
sudo apt-get install qemu-system-arm qemu-efidd if=/dev/zero of=/tmp/flash0.img bs=1M count=64dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=/tmp/flash0.img conv=notruncsudo 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_rsaImmagine del braccio
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsaEsecuzione 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.