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:
gitecurl- Um pacote de scripts do Chromium denominado
depot_toolsque inclui ferramentas comorepoecros_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 chrootambiente 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=lakitubuild_image --board=lakitu test
Imagem do grupo
build_packages --board=lakitu-arm64build_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.binImagem do grupo
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
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_rsaImagem do grupo
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsaEm 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.