Criar o SO otimizado para contentores a partir da origem

O SO otimizado para contentores baseia-se e é criado com ferramentas do projeto de código aberto Chromium OS. Se quiser, pode criar uma imagem do SO otimizado para contentores diretamente a partir do código fonte do SO otimizado para contentores.

Pré-requisitos

Para criar uma imagem do SO otimizado para contentores, tem de instalar as seguintes ferramentas no seu computador de desenvolvimento:

  • git e curl
  • Um pacote de scripts do Chromium denominado depot_tools que inclui ferramentas como repo e cros_sdk.

Obter o código fonte do SO otimizado para contentores

Pode transferir o código-fonte do SO otimizado para contentores através da ferramenta repo incluída no depot_tools.

Primeiro, crie um diretório para armazenar o código fonte. Por exemplo, cos-src no diretório inicial:

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

Agora, transfira o código-fonte através dos seguintes comandos:

repo init https://cos.googlesource.com/cos/manifest.git
repo sync

Criar uma imagem do SO otimizado para contentores

Para criar o SO otimizado para contentores, tem de criar um chrootambiente adequado. Pode usar a ferramenta cros_sdk incluída no depot_tools para criar e introduzir um chroot que esteja pronto para a compilação do SO otimizado para contentores executando o seguinte comando no diretório de origem que criou no passo anterior:

cd $HOME/cos-src
cros_sdk --enter

Depois de aceder ao chroot, pode criar a imagem de disco. Para criar o SO otimizado para contentores, especifique lakitu (imagem x86) ou lakitu-arm64 (imagem Arm) para o nome da placa da seguinte forma:

Imagem x86

   build_packages --board=lakitu
   build_image --board=lakitu test

Imagem do grupo

   build_packages --board=lakitu-arm64
   build_image --board=lakitu-arm64 test

Além de test, pode criar uma imagem base ou dev transmitindo o parâmetro adequado para o comando de script ./build image. Se não especificar um parâmetro, a imagem dev é criada por predefinição.

A imagem dev contém algumas ferramentas de depuração adicionais instaladas em cima da imagem base. A imagem test inclui as ferramentas de depuração da imagem dev, bem como as ferramentas necessárias para executar testes automáticos do SO otimizado para contentores.

Requisitos de atribuição

Quando produz uma imagem do SO otimizado para contentores, tem de cumprir vários requisitos de atribuição de licenças de terceiros. A imagem gerada por uma compilação contém todas as informações de atribuição relevantes em /opt/google/chrome/resources/about_os_credits.html. Como um artefacto de compilação separado, também está disponível como um ficheiro license_credits.html no diretório de saída de compilação.

Executar a sua imagem

Depois de criar a imagem do SO otimizado para contentores, pode executá-la com o KVM ou importá-la para uma instância do Compute Engine.

Em execução no hipervisor

Para arrancar a imagem no hipervisor, execute o seguinte comando:

Imagem 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

Imagem do grupo

   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
   

O arranque desta forma deixa a porta série da VM ligada à sua consola, o que lhe permite iniciar sessão sem usar o SSH. Se estiver a executar uma imagem test, pode iniciar sessão com o par de nome de utilizador/palavra-passe "root/test0000".

Assim que a VM for iniciada, pode aceder à sua imagem dev ou test através de SSH. Para SSH na imagem, use a chave gerada para essa imagem, da seguinte forma:

Imagem x86

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

Imagem do grupo

   ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa

Em execução no Compute Engine

Para importar a sua imagem para uma instância do Compute Engine, tem de comprimir a imagem num ficheiro .tar. Para comprimir a imagem, execute o seguinte comando:

Imagem x86

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

Imagem do grupo

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

Depois de criar o ficheiro .tar, pode seguir as instruções para importar uma imagem existente na documentação do Compute Engine.