Para instalações autônomas em vários computadores, é possível fazer instalações totalmente automáticas usando o próprio Ubuntu Installer. Pois, o próprio suporta a automatização de instalações através de arquivos de pré-configuração. Siga os passos descritos abaixo para criar uma instalação autônoma:

Passo 1 - Baixar a ISO do Ubuntu Server 16.04:

Faça o download de uma ISO de instalação não gráfica do ubuntu (servidor ou CD de instalação alternativa)

wget http://releases.ubuntu.com/16.04/ubuntu-16.04.6-server-amd64.iso

Passo 2 - Montar o Ubuntu ISO

Você precisará montar os arquivos (ISO) que foram baixados anteriormente para poder editar.

mkdir -p /mnt/iso
mount -o loop ubuntu-16.04.6-server-amd64.iso /mnt/iso

Passo 3 - Copiar arquivos (ISO)

Precisaremos copiar os arquivos que acabamos de montar em /mnt/iso para um diretório diferente para editá-los. Pois, quando montamos uma imagem só temos permissão de leitura. Sinta-se livre para usar qualquer diretório que desejar, escolhi o diretório /opt para seguir o tutorial do qastack.

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

Passo 4 - Gerando um arquivo de configuração usando o Kickstart

O instalador do Ubuntu suporta a automatização de instalações usando arquivos Kickstart. Este método não é tão flexível quanto o método do arquivo de pré-configuração ‘.preseed’, mas, devida sua interface gráfica, requer menos conhecimento de como o instalador funciona.

Para gerar um arquivo Kickstart, instale o system-config-kickstartpacote e execute system-config-kickstart. Isso oferece uma interface gráfica do usuário para as várias opções disponíveis.

system-config-kickstartpacote arquivos Kickstart

sudo apt-get install system-config-kickstart
cd /opt/ubuntuiso && system-config-kickstart

Lembre-se de salvar o arquivo com o nome ks.cfg. Pois, foi o arquivo que passamos como parâmetro em /opt/ubuntuiso/isolinux/txt/cfg

Esse é o meu arquivo ks.cfg:

#Generated by Kickstart Configurator
#platform=x86

#Idioma do sistema
lang pt_BR
#Módulos de idioma a serem instalados
langsupport pt_BR
#Teclado do sistema
keyboard br_nativo
#Mouse do sistema
mouse
#Fuso horário do sistema
timezone America/Bahia
#Senha root
rootpw --iscrypted $1$oyEi7H9.$zjp/ZBPJWFBPeEnbQgeH8.
#Usuário inicial
user projetokube --fullname "ProjetoKube" --iscrypted --password $1$iSuxu0eH$QOrRISU8tFmNziRG.hkwl.
#Reinicie após a instalação
reboot
#Usar instalação em modo texto
text
#Install OS instead of upgrade
install
#Use a mídia de instalação do CDROM
cdrom
#Configuração do carregador de inicialização do sistema
bootloader --location=mbr 
#Limpar o registro mestre de inicialização
zerombr yes
#Informações de Limpeza da Partição
clearpart --all 
#Informações de particionamento de disco
part / --fstype ext4 --size 2048
part swap --size 4096
part /boot --fstype ext4 --size 512 
part /var --fstype ext4 --size 1 --grow 
#Informações de autorização do sistema
auth  --useshadow  --enablemd5 
#Configuração de firewall
firewall --disabled 
#Não configure o sistema X Window
skipx
#Informações de instalação de pacotes
%packages
@ubuntu-server
openssh-server
ftp
build-essential
ansible
# Script que sera executado no final da instalação
%post
echo 'Projeto Kube - Ubuntu Server 16-04' > /etc/issue
sed -i 's,Welcome to,Seja bem-vindo,g' /etc/update-motd.d/00-header
echo 'printf "\n* O Projeto Kube nasceu em meados de 2015\n* Hoje tem seu foco expandido e busca atacar os assuntos de cloud computing e Devops\n"' >> /etc/update-motd.d/00-header
echo '#!/bin/sh' > /etc/update-motd.d/10-help-text
echo 'printf "\n"' >> /etc/update-motd.d/10-help-text
echo 'printf " * Site do projeto:  https://projetokube.github.io\n"' >> /etc/update-motd.d/10-help-text
echo 'printf " * Suporte do ubuntu:  https://ubuntu.com/advantage\n"' >> /etc/update-motd.d/10-help-text
git clone https://github.com/reinanhs/projetokube-silence.git
mkdir -p projetokube-silence /boot/grub/themes/projetokube-silence
cp -a projetokube-silence /boot/grub/themes/
echo 'GRUB_THEME="/boot/grub/themes/projetokube-silence/theme/theme.txt"' >> /etc/default/grub
sed -i 's,GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`,GRUB_DISTRIBUTOR="Projetokube",g' /etc/default/grub
grub-mkconfig -o /boot/grub/grub.cfg
rm -rf projetokube-silence/
wget https://raw.githubusercontent.com/franciscojsc/scripts-install-kubernetes/master/ubuntu/master.sh
chmod +x master.sh
bash ./master.sh

Depois de ter um arquivo Kickstart, você pode editá-lo, se necessário, para adicionar pacotes para a instalação, adicione uma %package ao arquivo kickstart do ks.cfg, acrescente ao final do arquivo ks.cfg algo parecido com isto.

%packages
@ubuntu-server
openssh-server
ftp
build-essential
ansible

Isso instalará o “pacote” do ubuntu-server e adicionará os pacotes openssh-server, ftp e build-essential.

Passo 5 - Adicione um arquivo preseed, para suprimir outras perguntas

echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' > ks.preseed

Passo 6 - Impedir que o menu de seleção de idioma apareça:

echo en >isolinux/lang

Passo 7 - Edite o arquivo txt.cfg

Editaremos o arquivo /opt/ubuntuiso/isolinux/txt.cfg e personalizaremos nossos parâmetros de inicialização para obter uma instalação completamente autônoma, que incluirá um arquivo preseed. Recomento que delete todas as linhas que tem dentro desse arquivo para que fique só a instalação personalizada como opção na tela inicial.

nano /opt/ubuntuiso/isolinux/txt/cfg
default live-install
label live-install
  # Título da instalação
  menu label ^Install ProjetoKube kubernete master
  kernel /install/vmlinuz
  # Configurações para a inicialização da instalação 
  append  file=/cdrom/preseed/ubuntu-server.seed auto=true priority=critical ubiquity/reboot=true boot=casper automatic-ubiquity initrd=/install/initrd.gz ks=cdrom:/ks.cfg ---

Observe algumas coisas:

  • menu label: Título que aparece na tela de instalação
  • append: Configurações para a inicialização da instalação

Passo 8 - Criar nova ISO

Agora temos que recriar a Imagem ISO com as alterações feitas

mkisofs -D -r -V "UNATTENDED_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/ubuntu-server-unattended-install.iso /opt/ubuntuiso

Sinta-se livre para alterar o nome da saída e o diretório em que você a salvará.

Referências

Como crio uma instalação completamente autônoma do Ubuntu Desktop 16.04.1 LTS?. QAstack, 2019. Disponível em: https://qastack.com.br/ubuntu/806820/how-do-i-create-a-completely-unattended-install-of-ubuntu-desktop-16-04-1-lts. Acesso em: 24 fev. 2020.

How do I create a completely unattended install of Ubuntu. In: askubuntu, 2012 abr 16. Disponível em: https://askubuntu.com/questions/122505/how-do-i-create-a-completely-unattended-install-of-ubuntu. Acesso em: 26 fev. 2020.

Automatic Installation. help Ubuntu. Disponível em: https://help.ubuntu.com/lts/installation-guide/amd64/ch04s06.html. Acesso em: 25 fev. 2020.