Container-Optimized OS se basa en herramientas del proyecto Chromium OS de código abierto y se ha desarrollado con ellas. Si lo desea, puede crear una imagen de Container-Optimized OS directamente desde su código fuente.
Prerrequisitos
Para crear una imagen de sistema operativo optimizada para contenedores, necesitará instalar las siguientes herramientas en su máquina de desarrollo:
-
git
ycurl
- Un paquete de scripts de Chromium llamado
depot_tools
que incluye herramientas comorepo
ycros_sdk
.
Obtención del código fuente del sistema operativo optimizado para contenedores
Puede descargar el código fuente de Container-Optimized OS utilizando la herramienta repo
que está incluida en depot_tools
.
Primero, crea un directorio para almacenar el código fuente. Por ejemplo, cos-src
en tu directorio personal:
mkdir $HOME/cos-src
cd $HOME/cos-src
Ahora descargue el código fuente usando los siguientes comandos:
repo init https://cos.googlesource.com/cos/manifest.git
repo sync
Creación de una imagen de sistema operativo optimizada para contenedores
Para compilar un sistema operativo optimizado para contenedores, debe crear un entorno chroot
adecuado. Puede usar la herramienta cros_sdk
, incluida en depot_tools
para crear e ingresar un chroot
listo para la compilación del sistema operativo optimizado para contenedores. Para ello, ejecute el siguiente comando en el directorio de origen creado en el paso anterior:
cd $HOME/cos-src
cros_sdk --enter
Una vez dentro de chroot
, puede crear la imagen de disco. Para crear un sistema operativo optimizado para contenedores, especifique lakitu
(imagen x86) o lakitu-arm64
(imagen ARM) como nombre de la placa, como se indica a continuación:
imagen x86
build_packages --board=lakitu
build_image --board=lakitu test
Imagen del brazo
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 test
Además de test
, puedes crear una imagen base
o dev
pasando el parámetro correspondiente al comando de script ./build image
. Si no especificas ningún parámetro, la imagen dev
se crea por defecto .
La imagen dev
contiene 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 del sistema operativo optimizado para contenedores.
Requisitos de atribución
Al generar una imagen de SO optimizada para contenedores, debe cumplir con varios requisitos de atribución de 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 artefacto de compilación independiente, también está disponible como archivo license_credits.html
en el directorio de salida de la compilación.
Ejecutando su imagen
Una vez que haya creado su imagen de sistema operativo optimizada para contenedores, puede ejecutar la imagen usando KVM o importarla a una instancia de Compute Engine .
Ejecutándose en el hipervisor
Para iniciar su imagen en el hipervisor, ejecute 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 del 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
Al arrancar de esta manera, el puerto serie de la máquina virtual permanece conectado a la consola, lo que permite iniciar sesión sin usar SSH. Si está ejecutando una imagen test
, puede iniciar sesión con el par de nombre de usuario y contraseña "root/test0000".
Una vez iniciada la máquina virtual, puede acceder a su imagen dev
o test
mediante SSH. Para acceder a la imagen mediante SSH, utilice la clave generada para ella, como se indica a continuación:
imagen x86
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Imagen del brazo
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa
Ejecutándose en Compute Engine
Para importar su imagen a una instancia de Compute Engine, debe comprimirla en un archivo .tar
. Para ello, ejecute 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 del 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|'
Después de haber creado su archivo .tar
, puede seguir las instrucciones para importar una imagen existente en la documentación de Compute Engine.