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