Personalize uma VM VirtualBox Ubuntu 20.04
Eu preciso produzir VMs VirtualBox personalizadas (enviadas como .ova) para o ensino: um é um servidor Ubuntu com interface de terminal e LAMP, o outro tem um Ubuntu de desktop mínimo com apenas aplicativos selecionados disponíveis. Preciso que eles sejam leves porque os alunos os usam para redes e a qualidade de seus computadores BYOD varia.
No passado (18.04LTS), eu costumava baixar um .iso mínimo e proceder de forma incremental. Agora isso não é mais possível, uma vez que apenas os .iso completos estão disponíveis (por exemplohttps://cdimage.ubuntu.com/lubuntu/releases/20.04.1/release/lubuntu-20.04.1-desktop-amd64.iso) por 20.04. Não quero prosseguir de forma decrescente, pois o resultado não é ideal, incerto e demorado.
Eu naveguei na Web, mas (bastante surpreendentemente) sem encontrar uma solução para isso. Suspeito que perdi algo relevante, então pergunto aqui antes de dedicar um tempo para descobrir a água fervente.
Obrigado pela ajuda!
Respostas
Uma solução usando imagens em nuvem
Meu problema é a criação de um Ubuntu VirtualBox VM personalizado começando de um mínimo. O resultado deve consistir em uma VM em execução em uma instalação local do VirtualBox (não na nuvem).
Essa tarefa era executada anteriormente usando a instalação mínima mini.iso. Mas esta imagem de disco agora é um legado, embora ainda não oficialmente disponível.
Eu queria uma solução bem documentada e de longo prazo, possivelmente baseada em lançamentos oficiais. Navegando na Internet encontrei várias sugestões, mas não uma solução completa. Abaixo está um guia passo a passo baseado em tais sugestões.
A solução pode explicar porque o baseado em "mini.iso" será descartado. Na verdade, o novo é mais rápido de executar e retorna uma VM que provavelmente está melhor configurada para uso em um ambiente VirtualBox. Além disso, o processo pode ser totalmente automatizado (verhttps://gist.github.com/atoato88/5840807 ou https://gist.github.com/smoser/6066204), enquanto o antigo requer uma instalação manual demorando muito.
A solução parte de uma imagem de nuvem, conforme sugerido em um dos posts sobre o assunto (https://askubuntu.com/questions/1264128/how-to-do-a-minimal-install-of-20-04)
Eu dividi o processo, que é projetado para uma máquina Linux, em etapas:
- instale a imagem da nuvem
- configurar a VM
- configurar a imagem da nuvem
- definir credenciais de usuário
- prepare-se para personalização
Também dou algumas sugestões não testadas para seu uso em um ambiente Windows.
Instale a imagem da nuvem
As imagens da nuvem estão disponíveis em várias fontes. Este guia se aplica àqueles no site oficial do Ubuntu, que oferece vários sabores. Selecionei o 20.04 no formato OVA, que é fácil de usar no VirtualBox (https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.ova) Editando o URL, você encontra outros formatos e o repositório.
Baixe a imagem e crie a VM usando Arquivo -> Importar aplicativo virtual na GUI do VirtualBox, sem iniciá-lo. Pode ser conveniente alterar o nome na descrição (clique duas vezes na linha de descrição) por um mais simples, como '' minimal-focal ''.
Configure a VM
Networking
Na configuração de rede da Máquina Virtual, configure o adaptador de rede como "NAT" e (na caixa "Avançado") redirecione a porta do host 2222 (ou o que você quiser) para 22. Desta forma, sua VM será conectada a a Internet e acessível através de ssh.
Armazenamento
Na configuração de armazenamento da VM:
- Remova o driver de disquete inútil
- Crie uma nova unidade de DVD e deixe-a vazia
Configure a imagem da nuvem
Crie uma imagem .iso contendo os arquivos que o cloud-init usará quando a VM for inicializada. Em um local conveniente, crie os dois arquivos YAML a seguir:
meta-dados:
instance-id: desktop local-hostname: vb-desktopdados do usuário:
#cloud-config users: - name: user sudo: ['ALL=(ALL) NOPASSWD:ALL'] shell: /bin/bash
Aqui você tem a opção de configurar dois detalhes na VM: o nome do host (aqui o valor '' vb-desktop '' para o campo '' local-hostname '' no arquivo de metadados) e o nome de usuário (aqui o ' valor 'user' 'para o campo' 'nome' 'no arquivo de dados do usuário). Verifica ahttps://cloudinit.readthedocs.io/en/latest/topics/format.html para mais detalhes.
Em seguida, crie o arquivo .iso (por exemplo, ciconf.iso) com o comando
$ cloud-localds ciconf.iso user-data meta-data
O comando '' cloud-localds '' está no pacote "cloud-image-utils", que (no Debian / Ubuntu) você instala com
$ sudo apt install cloud-image-utils
As mesmas funções devem estar disponíveis também para usuários do Windows.
Na seção Armazenamento da GUI do VirtualBox, instale o arquivo .iso que você acabou de criar na unidade IDE criada na etapa anterior.
Inicie a VM e aguarde o login do terminal, depois "desligue a ACPI". Você não pode fazer o login porque não tem credenciais.
Defina as credenciais do usuário
Mova para o diretório do disco virtual VM (pode ser ~ / VirtualBox VMs / minimal-focal) e monte a imagem do disco. O pacote qemu é necessário, que é instalado com
$ sudo apt install qemu
Para instalar a imagem do disco, proceda da seguinte forma:
$ sudo modprobe nbd max_part=8
$ sudo qemu-nbd -c /dev/nbd0 ubuntu-focal-20.04-cloudimg.vdi
$ sudo mount /dev/nbd0p1 /mnt
O '' ubuntu-focal-20.04-cloudimg.vdi '' refere-se ao arquivo de imagem, substitua pelo seu. No final, o sistema de arquivos VM está disponível no diretório / mnt.
Para criar a credencial de usuário '' chroot '' para o sistema de arquivos VM, altere as credenciais do usuário (o comando '' passwd '' solicitará uma nova senha) e saia do ambiente '' chroot '':
$ sudo chroot /mnt
$ passwd user
$ sync
$ exit
Substitua '' usuário '' pelo nome de usuário configurado na etapa anterior. As chances de bagunçar seu sistema usando o comando chroot são limitadas, então tome cuidado com isso. Se você não sabe sobre isso, verifique a página de manual.
Somente quando você tiver deixado o ambiente '' chroot '' com segurança (verifique), copie sua chave pública (presumo que você tenha uma), dentro do sistema de arquivos VM:
$ mkdir /mnt/home/user/.ssh
$ cat ~/.ssh/id_rsa.pub >> /mnt/home/user/.ssh/authorized_keys
A etapa acima é opcional, mas extremamente conveniente. No caso de você não ter uma chave pública, existem milhares de tutoriais para isso ('' ssh-keygen '').
Quando terminar, desmonte a imagem de disco da VM:
$ sync
$ sudo umount /dev/nbd0p1
$ sudo qemu-nbd -d /dev/nbd0
$ sudo rmmod nbd
Se você se esquecer de desmontar, o disco da VM está danificado e você precisa reiniciar tudo. Verifique novamente antes de continuar.
Prepare-se para personalização
Inicie a máquina a partir da interface GUI do VirtualBox e faça o login usando o nome de usuário '' usuário '' e a senha definida.
A VM pode ser acessada também a partir da linha de comando em seu PC com
$ ssh user@localhost -p 2222
('' usuário '' substituído pelo seu nome de usuário, 2222 é o número da porta configurada na primeira etapa).
Então use do jeito que você gosta (eu sugiro '' ssh '') para terminar o trabalho.
Faça login na VM e, usando um editor de linha, corrija um detalhe ausente no arquivo '' / etc / hosts '' na VM: adicione no final da linha '' localhost '' o nome da nova máquina, em o exemplo '' minimal-focal ''.
Em seguida, dê os seguintes comandos:
$ sudo dpkg-reconfigure keyboard-configuration
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install linux-modules-extra-$(uname -r) tasksel
O primeiro comando adapta o teclado VM ao que você usa, enquanto o resto atualiza a configuração, instala um pacote contendo módulos que estão faltando em uma imagem de nuvem e o utilitário tasksel que é útil para customização.
Verificação final e conclusões
Usando o comando '' tasksel '', você pode instalar vários tipos de pacotes, por exemplo, um servidor LAMP. Mas você pode decidir instalar sua coleção de pacotes favorita, assim como com o mini.iso.
O processo descrito acima é conceitualmente mais difícil do que o realizado com o mini.iso, mas é mais rápido, levando cerca de 10 'para ter a máquina pronta para customização. Em contraste, você precisa baixar um VDI maior do que o mini.iso. Finalmente, a tecnologia de nuvem veio para ficar, então espero que esta modalidade esteja disponível para vários lançamentos do Ubuntu depois que o mini.iso for finalmente abandonado.
A verificação final pode consistir na instalação de uma distribuição de desktop, como o Xubuntu, usando o tasksel. O teste é significativo para verificar se um gerenciador de exibição pode operar corretamente. Para executar a verificação, clone a VM e chame '' tasksel '' do terminal VM. Em seguida, selecione (com '' espaço '') a "Área de trabalho mínima do Xubuntu". Aguarde até que a instalação seja concluída e reinicie.
Os usuários do Windows devem ser capazes de usar a mesma estratégia, mas as etapas que requerem a montagem do sistema de arquivos VM e do comando chroot são realizadas usando campos específicos no arquivo de dados do usuário.