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
ecurl
- Um pacote de scripts do Chromium denominado
depot_tools
que inclui ferramentas comorepo
ecros_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 chroot
ambiente 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.