Container-Optimized OS si basa e crea utilizzando strumenti del Chromium OS open source progetto. 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 quanto segue di sviluppo software sul tuo computer di sviluppo:
git
ecurl
- Un pacchetto di script 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 il comando
Strumento repo
incluso in depot_tools
.
Innanzitutto, crea una directory in cui archiviare il codice sorgente. Ad esempio, cos-src
in
nella tua 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 di Container-Optimized OS
Per creare Container-Optimized OS, devi creare un'entità chroot
adatta
completamente gestito di Google Cloud. 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 creare
Container-Optimized OS, specifica lakitu
(immagine x86) o lakitu-arm64
(Immagine Arm) per il nome della lavagna, 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 di 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 nella parte superiore della
Immagine base
. L'immagine test
include gli strumenti di debug dall'immagine dev
come
e gli strumenti necessari per eseguire
test automatici di Container-Optimized OS.
Requisiti di attribuzione
Quando produci un'immagine di Container-Optimized OS, devi soddisfare vari
requisiti di attribuzione delle licenze di terze parti. L'immagine generata da una build
contenga tutte le informazioni sull'attribuzione pertinenti in
/opt/google/chrome/resources/about_os_credits.html
. Come build separata
artefatto è disponibile anche come file license_credits.html
nell'output della build
.
Esecuzione dell'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,
che ti permette di accedere senza utilizzare SSH. Se esegui un'immagine test
, puoi
accedi con la coppia nome utente/password "root/test0000".
Una volta avviata la VM, puoi accedere all'immagine dev
o test
utilizzando SSH. A
Accedi tramite SSH all'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 arma
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 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 arma
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.