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:
gitycurl- Un paquete de secuencias de comandos de Chromium llamado
depot_toolsque incluye herramientas comorepoycros_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=lakitubuild_image --board=lakitu test
Imagen de brazo
build_packages --board=lakitu-arm64build_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.binImagen de brazo
sudo apt-get install qemu-system-arm qemu-efidd if=/dev/zero of=/tmp/flash0.img bs=1M count=64dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=/tmp/flash0.img conv=notruncsudo 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_rsaImagen de brazo
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsaEjecutar 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.