Créer un Container-Optimized OS à partir du code source

Container-Optimized OS est basé sur le projet Open Source Chromium OS et a été conçu avec les mêmes outils. 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 et curl
  • Un package de scripts Chromium appelé depot_tools, qui inclut des outils tels que repo et cros_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 créer Container-Optimized OS, spécifiez lakitu (image x86) ou lakitu-arm64 (image Arm) 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 répondre à diverses exigences d'attribution des licences tierces. L'image générée par une compilation contient toutes les informations d'attribution pertinentes dans /opt/google/chrome/resources/about_os_credits.html. En tant qu'artefact de compilation distinct, il est également disponible en tant que fichier license_credits.html dans le répertoire de 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écuter dans l'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 du groupe

   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 la VM démarrée, vous pouvez accéder à votre image dev ou test à l'aide de 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 du groupe

   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.