Como criar o Container-Optimized OS a partir do código-fonte

O Container-Optimized OS é baseado e criado com ferramentas do projeto Chromium OS de código aberto. Se quiser, é possível criar uma imagem do Container-Optimized OS diretamente do código-fonte dele.

Pré-requisitos

Para criar uma imagem do Container-Optimized OS, instale as seguintes ferramentas na sua máquina de desenvolvimento:

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

Como conseguir o código-fonte do Container-Optimized OS

É possível fazer o download do código-fonte do Container-Optimized OS usando a ferramenta repo incluída em depot_tools.

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

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

Faça o download do código-fonte usando os seguintes comandos:

$ repo init -u https://cos.googlesource.com/cos/manifest.git \
  --repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync

Como criar uma imagem do Container-Optimized OS

Para criar o Container-Optimized OS, é preciso criar um ambiente chroot adequado. É possível usar a ferramenta cros_sdk incluída em depot_tools para criar e inserir um chroot pronto para a compilação do Container-Optimized OS executando o seguinte comando no diretório de origem que você criou na etapa anterior:

$ cd $HOME/cos-src
$ cros_sdk --enter

Uma vez dentro de chroot, é possível criar a imagem do disco. Para criar o Container-Optimized OS, especifique lakitu para o nome da placa da seguinte maneira:

(cr) ~/trunk/src/scripts $ ./build_packages --board=lakitu
(cr) ~/trunk/src/scripts $ ./build_image --board=lakitu test

Além de test, é possível criar uma imagem base ou dev passando o parâmetro apropriado para o comando de script ./build image. Se você não especificar um parâmetro, a imagem dev será criada por padrão.

A imagem dev contém algumas ferramentas de depuração adicionais instaladas na 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 Container-Optimized OS.

Como executar sua imagem

Assim que for criada, sua imagem do Container-Optimized OS poderá ser executada usando KVM ou importada para uma instância do Compute Engine.

Executar no KVM

Para inicializar sua imagem em uma KVM, execute o seguinte comando:

~/cos $ 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

Inicializar dessa maneira deixa a porta serial da VM conectada ao seu console, permitindo que você faça login sem usar SSH. Se você estiver executando uma imagem test, faça login com o par de nome de usuário/senha "root/test0000".

Depois que a VM for iniciada, você poderá acessar sua imagem dev ou test usando SSH. Para usar SSH na imagem, use a chave gerada para a imagem, da seguinte maneira:

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

Executar no Compute Engine

Para importar sua imagem para uma instância do Compute Engine, você deve comprimir a imagem em uma .tar arquivo. Execute o seguinte comando para a compactação:

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

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