Container-Optimized OS se basa en herramientas del conjunto de datos código abierto Chromium en un proyecto final. 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
ycurl
- Un paquete de secuencias de comandos de Chromium llamado
depot_tools
que incluye herramientas comorepo
ycros_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. Para compilar
Container-Optimized OS, especifica lakitu
(imagen x86) o lakitu-arm64
(imagen del brazo) para el nombre de la placa de la siguiente manera:
Imagen x86
build_packages --board=lakitu
build_image --board=lakitu test
Imagen ARM
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 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.
Requisitos de atribución
Cuando produces una imagen de Container-Optimized OS, debes cumplir con varios
requisitos de atribución de las licencias de terceros. La imagen generada por una compilación
contiene toda la información de atribución relevante en
/opt/google/chrome/resources/about_os_credits.html
Como una compilación independiente
artefacto, también está disponible como archivo license_credits.html
en el resultado de la compilación
.
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.
Ejecución en hipervisor
Para iniciar 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 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
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:
Imagen x86
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Imagen ARM
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/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:
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 ARM
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 existente en la documentación de Compute Engine.