Container-Optimized OS est basé sur les outils le système Open Source Chromium OS projet. Si vous le souhaitez, vous pouvez créer une image Container-Optimized OS directement à partir du code source de Container-Optimized OS.
Prérequis
Pour créer une image de Container-Optimized OS, vous devez installer sur votre ordinateur de développement les outils suivants :
git
etcurl
- Un package de scripts Chromium appelé
depot_tools
qui inclut des outils tels querepo
etcros_sdk
.
Obtenir le code source de Container-Optimized OS
Vous pouvez télécharger le code source de Container-Optimized OS à l'aide de l'outil repo
inclus dans depot_tools
.
Tout d'abord, créez un répertoire pour stocker le code source. Par exemple, cos-src
dans votre répertoire d'accueil :
mkdir $HOME/cos-src
cd $HOME/cos-src
Téléchargez maintenant le code source à l'aide des commandes suivantes :
repo init -u https://cos.googlesource.com/cos/manifest.git \
--repo-url https://chromium.googlesource.com/external/repo.git
repo sync
Construire une image Container-Optimized OS
Pour créer une image Container-Optimized OS, vous devez créer un environnement chroot
approprié. Vous pouvez utiliser l'outil cros_sdk
inclus dans depot_tools
pour créer et saisir un chroot
prêt pour la compilation de Container-Optimized OS en exécutant la commande suivante dans le répertoire source que vous avez créé à l'étape précédente :
cd $HOME/cos-src
cros_sdk --enter
Une fois dans chroot
, vous pouvez créer l'image disque. Pour compiler
Container-Optimized OS, spécifiez lakitu
(image x86) ou lakitu-arm64
(image du bras) pour le nom du tableau, comme suit:
Image x86
build_packages --board=lakitu
build_image --board=lakitu test
Image du groupe
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 test
En plus de test
, vous pouvez créer une image base
ou dev
en transmettant le paramètre approprié à la commande de script ./build image
. Si vous ne spécifiez pas de paramètre, l'image dev
est créée par défaut.
L'image dev
contient des outils de débogage supplémentaires installés sur l'image base
. L'image test
inclut les outils de débogage de l'image dev
, ainsi que les outils nécessaires à l'exécution de tests automatiques de Container-Optimized OS.
Exigences d'attribution
Lorsque vous créez une image Container-Optimized OS, vous devez respecter diverses exigences d'attribution des licences tierces. Image générée par un build
contient toutes les informations d'attribution pertinentes
/opt/google/chrome/resources/about_os_credits.html
En tant que build distinct
artefact, il est également disponible en tant que fichier license_credits.html
dans la sortie de compilation
.
Exécuter votre image
Une fois que vous avez créé l'image Container-Optimized OS, vous pouvez l'exécuter à l'aide de KVM ou l'importer dans une instance Compute Engine.
Exécution dans un hyperviseur
Pour démarrer votre image dans l'hyperviseur, exécutez la commande suivante:
Image 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
Image de l'arm
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
En démarrant de cette manière, le port série de la VM reste connecté à votre console, ce qui vous permet de vous connecter sans utiliser SSH. Si vous exécutez une image test
, vous pouvez vous connecter avec les nom d'utilisateur et mot de passe suivants : "root" et "test0000".
Une fois que la VM est démarrée, vous pouvez accéder à votre image dev
ou test
en utilisant SSH. Pour vous connecter en SSH à l'image, utilisez la clé générée pour cette image, comme suit :
Image x86
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Image de l'arm
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa
Exécuter l'image sur Compute Engine
Pour importer votre image dans une instance Compute Engine, vous devez la compresser dans un fichier .tar
. Pour compresser l'image, exécutez la commande suivante :
Image x86
tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'
Image du groupe
tar -Sczf compressed-image.tar.gz images/lakitu-arm64/latest/chromiumos_image.bin --transform 's|images/lakitu-arm64/latest/chromiumos_image.bin|disk.raw|'
Après avoir créé votre fichier .tar
, vous pouvez suivre les instructions dans la documentation de Compute Engine pour savoir comment importer une image existante.