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 de Container-Optimized OS directement à partir du code source de Chromium.

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://chromium.googlesource.com/chromiumos/manifest.git \
  --repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync

Construire une image Container-Optimized OS

Pour créer un projet Chromium 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 Chromium 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. La construction de n'importe quel projet Chromium OS produit une image disque, qui peut être personnalisée pour différentes machines (appelées "cartes"). Pour créer Container-Optimized OS, spécifiez lakitu pour le nom de la carte comme suit:

(cr) ~/trunk/src/scripts $ setup_board --board=lakitu
(cr) ~/trunk/src/scripts $ ./build_packages --board=lakitu
(cr) ~/trunk/src/scripts $ ./build_image --board=lakitu 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 Chromium OS.

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 l'image dans KVM

Pour démarrer l'image dans KVM, exécutez la commande suivante :

~/cos $ 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

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 :

~/cos $ ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa

Exécuter l'image sur Compute Engine

Pour importer votre image dans une instance Compute Engine, vous devez compresser l'image dans un fichier .tar. Pour compresser l'image, exécutez la commande suivante :

~/cos $ tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/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.