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, você pode criar uma imagem do Container-Optimized OS diretamente do código-fonte do Chromium.

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://chromium.googlesource.com/chromiumos/manifest.git \
  --repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync

Como criar uma imagem do Container-Optimized OS

Para criar qualquer projeto do Chromium 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 Chromium OS executando o seguinte comando no diretório de origem criado na etapa anterior:

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

Uma vez dentro de chroot, você pode criar a imagem. A criação de qualquer projeto do Chromium OS produz uma imagem de disco, que pode ser personalizada para diferentes máquinas (chamadas "placas"). Para criar o Container-Optimized OS, especifique lakitu para o nome da placa da seguinte maneira:

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

Além de test, você pode 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 Chromimum 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.