Container-Optimized OS se basa en herramientas del proyecto de código abierto Chromium OS y se ha creado con ellas. Si quieres, puedes compilar una imagen de Container-Optimized OS directamente desde el código fuente de Container-Optimized OS.
Requisitos previos
Para crear una imagen de Container-Optimized OS, debes instalar las siguientes herramientas en tu máquina de desarrollo:
git
ycurl
- Un paquete de secuencias de comandos de Chromium llamado
depot_tools
que incluye herramientas comorepo
ycros_sdk
.
Obtener el código fuente de Container-Optimized OS
Puedes descargar el código fuente de Container-Optimized OS con la herramienta repo
incluida 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 https://cos.googlesource.com/cos/manifest.git
repo sync
Crear una imagen de Container-Optimized OS
Para compilar Container-Optimized OS, debe crear un chroot
entorno adecuado. Puedes usar la herramienta cros_sdk
incluida en depot_tools
para crear e introducir un chroot
que esté listo para la compilación de Container-Optimized OS. Para ello, ejecuta el siguiente comando en el directorio de origen que has creado en el paso anterior:
cd $HOME/cos-src
cros_sdk --enter
Una vez dentro de chroot
, puedes crear la imagen de disco. Para compilar Container-Optimized OS, especifica lakitu
(imagen x86) o lakitu-arm64
(imagen Arm) en el nombre de la placa de la siguiente manera:
Imagen x86
build_packages --board=lakitu
build_image --board=lakitu test
Imagen de brazo
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 test
Además de test
, puedes crear una imagen base
o dev
si envías el parámetro adecuado al comando de secuencia de comandos ./build image
. Si no especifica ningún parámetro, la imagen dev
se genera de forma predeterminada.
La imagen dev
contiene algunas herramientas de depuración adicionales instaladas sobre la imagen base
. La imagen test
incluye las herramientas de depuración de la imagen dev
, así como las herramientas necesarias para ejecutar pruebas automáticas de Container-Optimized OS.
Requisitos de atribución
Cuando creas una imagen de Container-Optimized OS, debes cumplir varios requisitos de atribución de licencias de terceros. La imagen generada por una compilación contiene toda la información de atribución pertinente en /opt/google/chrome/resources/about_os_credits.html
. Como artefacto de compilación independiente, también está disponible como archivo license_credits.html
en el directorio de salida de la compilación.
Ejecutar la imagen
Una vez que hayas creado tu imagen de Container-Optimized OS, puedes ejecutarla con KVM o importarla a una instancia de Compute Engine.
Se está ejecutando en el hipervisor
Para arrancar la imagen en el hipervisor, ejecuta el siguiente comando:
Imagen 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
Imagen de brazo
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
Si arrancas de esta forma, el puerto serie de la VM se conectará a tu consola, lo que te permitirá iniciar sesión sin usar SSH. Si estás ejecutando una imagen test
, puedes iniciar sesión con el par de nombre de usuario y contraseña "root/test0000".
Una vez que se haya iniciado la VM, podrás acceder a tu imagen de dev
o test
mediante SSH. Para acceder a la imagen mediante SSH, usa la clave generada para esa imagen, como se indica a continuación:
Imagen x86
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Imagen de brazo
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa
Ejecutar en Compute Engine
Para importar una imagen a una instancia de Compute Engine, debes comprimirla en un archivo .tar
. Para comprimir la imagen, ejecuta el siguiente comando:
Imagen x86
tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'
Imagen de brazo
tar -Sczf compressed-image.tar.gz images/lakitu-arm64/latest/chromiumos_image.bin --transform 's|images/lakitu-arm64/latest/chromiumos_image.bin|disk.raw|'
Una vez que hayas creado el archivo .tar
, puedes seguir las instrucciones para importar una imagen
en la documentación de Compute Engine.