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:
git
ecurl
- Um pacote de scripts do Chromium chamado
depot_tools
que inclui ferramentas comorepo
ecros_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
Container-Optimized OS, especifique lakitu
(imagem x86) ou lakitu-arm64
(Imagem do grupo) para o nome da placa, da seguinte maneira:
Imagem x86
build_packages --board=lakitu
build_image --board=lakitu test
Imagem do grupo de controle
build_packages --board=lakitu-arm64
build_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 build separado
artefato, ele também está disponível como um arquivo license_credits.html
na saída do build.
diretório.
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.bin
Imagem do grupo de controle
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
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_rsa
Imagem do grupo de controle
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/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:
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.