O Container-Optimized OS é baseado e criado com ferramentas do projeto de código aberto Chromium OS. 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:
gitecurl- Um pacote de scripts do Chromium chamado
depot_toolsque inclui ferramentas comorepoecros_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 https://cos.googlesource.com/cos/manifest.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 (imagem x86) ou lakitu-arm64
(imagem Arm) para o nome da placa da seguinte maneira:
Imagem x86
build_packages --board=lakitubuild_image --board=lakitu test
Imagem do braço
build_packages --board=lakitu-arm64build_image --board=lakitu-arm64 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.
Requisitos de atribuição
Ao produzir uma imagem do Container-Optimized OS, você precisa atender a vários
requisitos de atribuição de licenças de terceiros. A imagem gerada por um build
contém todas as informações de atribuição relevantes em
/opt/google/chrome/resources/about_os_credits.html. Como um artefato de build
separado, ele também está disponível como arquivo license_credits.html no diretório de saída
do build.
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.
Em execução no hipervisor
Para inicializar 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.binImagem do braço
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
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:
Imagem x86
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsaImagem do braço
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsaExecutar 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:
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 braço
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 arquivo .tar, siga as instruções para
importar uma imagem existente
na documentação do Compute Engine.