Ir para o conteúdo

Instalações não assistidas

A ISO do OmarOS pode instalar-se sozinha sem ninguém ao teclado. Se o instalador encontrar uma segunda unidade com a etiqueta cidata a conter os seus ficheiros de configuração, copia-os, salta por completo o assistente de configuração e reinicia por si só para o sistema acabado. Sem construção especial da ISO, sem entrada extra no menu de arranque — sem essa unidade ligada, nada muda e obtém o assistente normal.

Isto torna o OmarOS fantástico como imagem de base para ambientes de desenvolvimento descartáveis: crie uma VM no Proxmox ou com o Packer, arranque-a, afaste-se e entre por SSH. cidata é a etiqueta NoCloud do cloud-init, por isso todas as ferramentas de virtualização comuns já sabem ligar uma unidade dessas.

Os ficheiros de configuração

Os ficheiros são exatamente o que o próprio assistente do instalador escreve, por isso a forma mais fácil de obter um conjunto inicial é fazer uma instalação interativa (numa VM, por exemplo) e copiar o que ele escreveu para /root:

Ficheiro Obrigatório Finalidade
user_configuration.json Sim Disco, nome do anfitrião, fuso horário, teclado
user_credentials.json Sim Nome de utilizador e hash da palavra-passe
user_full_name.txt Não Nome completo do Git
user_email_address.txt Não E-mail do Git
user_encrypt_installation.txt Não true quando a configuração contém um bloco disk_encryption
authorized_keys Não Chaves públicas SSH, uma por linha
tailscale_authkey Não Chave de autenticação Tailscale para aderir à sua tailnet no primeiro arranque

Gere o hash da palavra-passe para user_credentials.json com openssl passwd -6 "yourpassword".

Também pode deixar um ficheiro vazio chamado defer-provisioning em vez de user_credentials.json. Isso executa a mesma instalação preparar para outro dono que pode acionar interativamente: a máquina instala-se sem detalhes pessoais, e quem a arrancar primeiro escolhe o seu teclado e cria o seu utilizador. Esse é o modo para plataformas de criação de imagens, onde a unidade não deve conter credenciais de ninguém.

Acesso SSH

Quando authorized_keys está presente, a instalação configura as chaves como o ~/.ssh/authorized_keys do utilizador, ativa o sshd e abre a firewall para ele. (Uma instalação OmarOS de origem vem com openssh com o serviço desativado e a porta fechada, por isso uma máquina não assistida ficaria de outra forma inatingível.) A instalação só adiciona as suas chaves — não afrouxa nenhuma das outras definições de autenticação do daemon SSH.

Quando tailscale_authkey está presente, a máquina junta-se em vez disso à sua tailnet no primeiro arranque: o Tailscale é instalado a partir dos pacotes incluídos na ISO, a firewall permite a interface da tailnet, e um trabalho em segundo plano executa a adesão assim que a máquina tiver realmente rede, tentando de novo até conseguir. Use uma chave reutilizável e pré-autorizada para uma imagem de unidade poder servir muitas máquinas.

Construir a unidade cidata

Qualquer sistema de ficheiros com a etiqueta certa funciona. Uma pequena ISO é a forma fácil:

mkdir cidata
cp user_configuration.json user_credentials.json authorized_keys cidata/
genisoimage -output cidata.iso -volid cidata -joliet -rock cidata/

Depois ligue-a à VM ao lado da ISO do OmarOS. Aqui está um exemplo completo para Proxmox:

qm create 101 --name my-omaros \
  --bios ovmf --machine q35 --cpu host --cores 4 --memory 8192 \
  --ostype l26 --scsihw virtio-scsi-single \
  --efidisk0 local-lvm:0,efitype=4m,pre-enrolled-keys=0 \
  --scsi0 local-lvm:40,discard=on,iothread=1 \
  --net0 virtio,bridge=vmbr0 --vga virtio --serial0 socket \
  --ide2 local:iso/omaros.iso,media=cdrom \
  --ide3 local:iso/cidata.iso,media=cdrom \
  --boot order='scsi0;ide2'

qm start 101

A ordem de arranque lista o disco primeiro de propósito: o disco vazio passa para a ISO no primeiro arranque, e o sistema instalado arranca a partir do disco para sempre.

Duas ressalvas

As instalações não assistidas encriptadas não são totalmente não assistidas — alguém continua a ter de escrever a frase-passe LUKS no primeiro arranque. E o bloco disk_encryption em user_configuration.json contém essa frase-passe em texto simples, por isso trate uma unidade cidata construída a partir de uma instalação encriptada como o segredo que ela é.