Cómo compilar Container-Optimized OS desde la fuente

Container-Optimized OS se basa en las herramientas del proyecto de código abierto de Chromium OS y se compila con el uso de las herramientas de tal proyecto. Si lo deseas, puedes compilar una imagen de Container-Optimized OS directamente desde el código fuente de Container-Optimized OS.

Requisitos previos

Para compilar una imagen de Container-Optimized OS, tendrás que instalar las siguientes herramientas en la máquina de desarrollo:

  • git y curl
  • Un paquete de secuencias de comandos de Chromium llamado depot_tools que incluya herramientas como repo y cros_sdk

Cómo obtener el código fuente de Container-Optimized OS

Puedes descargar el código fuente para Container-Optimized OS con la herramienta repo que se incluye en depot_tools.

Primero, crea un directorio para almacenar el código fuente. Por ejemplo, cos-src en tu directorio principal:

$ mkdir $HOME/cos-src
$ cd $HOME/cos-src

Ahora, descarga el código fuente con los siguientes comandos:

$ repo init -u https://cos.googlesource.com/cos/manifest.git \
  --repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync

Cómo compilar una imagen de Container-Optimized OS

Para compilar Container-Optimized OS, debes crear un entorno chroot adecuado. Puedes usar la herramienta de cros_sdk incluida en depot_tools a fin de crear y, luego, ingresar un chroot que está listo para la compilación de Container-Optimized OS, ejecuta el siguiente comando en el directorio del código fuente que creaste en el paso anterior:

$ cd $HOME/cos-src
$ cros_sdk --enter

Una vez dentro del chroot, puedes compilar la imagen. A fin de compilar Container-Optimized OS, especifica lakitu para el nombre de la pizarra de la siguiente manera:

(cr) ~/trunk/src/scripts $ ./build_packages --board=lakitu
(cr) ~/trunk/src/scripts $ ./build_image --board=lakitu test

Además de test, puedes compilar una imagen base o dev si pasas el parámetro adecuado para el comando de la secuencia de comandos ./build image. Si no especificas un parámetro, la imagen dev se compila de forma predeterminada.

La imagen de dev contiene algunas herramientas de depuración adicionales instaladas en la parte superior de la imagen de base. La imagen test incluye las herramientas de depuración de la imagen dev y las herramientas necesarias para ejecutar pruebas automáticas de Container-Optimized OS.

Cómo ejecutar la imagen

Una vez que hayas compilado la imagen de Container-Optimized OS, puedes ejecutar la imagen con el uso de KVM, o importar la imagen a una instancia de Compute Engine.

Cómo ejecutar en KVM

Para iniciar la imagen en KVM, ejecuta el siguiente comando:

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

El arranque de esta manera deja el puerto en serie de la VM conectado a la consola, lo que te permite acceder sin usar SSH. Si ejecutas una imagen test, puedes acceder con el par de nombre de usuario/contraseña “root/test0000”.

Una vez que se inicia la VM, puedes acceder a la imagen dev o test con el uso de SSH. Para emplear SSH en la imagen, utiliza la clave generada para esa imagen de la siguiente manera:

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

Cómo ejecutar en Compute Engine

Para importar la imagen a una instancia de Compute Engine, debes comprimir la imagen en un archivo .tar. Para comprimir la imagen, ejecuta el siguiente comando:

~/cos $ tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'

Una vez que hayas creado el archivo .tar, puedes seguir las instrucciones para importar una imagen existente en la documentación de Compute Engine.