Customizar a Instalação do Linux Debian com Preseed

Entenda como customizar/personalizar a imagem ISO, configurar o arquivo /etc/network/interfaces, /etc/sudoers (além de outros), acoplar programas, etc, em suma: customizar a ISO para instalar seu Debian personalizado tanto em um único computador quanto em rede.

[ Hits: 417 ]

Por: Buckminster em 28/07/2025


CONSIDERAÇÕES FINAIS



Caso você queria somente instalar o Debian customizado em uma única máquina opte pela instalação com a ISO (CUSTOMIZANDO A INSTALAÇÃO 1).

Talvez tenha ficado algum erro menor ou outro em algum script, procurei testar todos antes de postar, porém, como se trata de um artigo extenso e um pouco complexo, mesmo tendo esmero na realização, ainda assim pode escapar alguma coisa.
Caso a execução de algum script incorra em erro para você, observe o que o erro diz e caso tenha sido um erro seu de digitação ou um erro de formatação ao copiar e colar procure corrigir você mesmo ou poste nos comentários.

Darei algumas explicações sobre preseed, na medida do possível.
Nas referências logo abaixo tem material suficiente para você ter uma boa base, apesar da documentação escassa em alguns pontos cruciais.

Alguns dos obstáculos que encontrei ao tentar uma instalação sem intervenção via Preseed incluem:
Falhas silenciosas causadas por tabulações ou espaços extras no particionamento (expert_recipe);
A partição swap sendo ignorada se colocada fora de ordem;
Problemas com compatibilidade em hardware mais antigo, principalmente com discos IDE ou BIOS legados;
preseed.cfg sendo ignorado mesmo que especificado via kernel boot line.

Preseed Embutido
Embutir o preseed.cfg diretamente no initrd.gz quando for via PXE e/ou iPXE e preseed embutido na imagem ISO quando for via pendrive, garante que o instalador sempre o carregue — independentemente da forma como o sistema inicializa, porém, em instalações em rede com muitos computadores torna-se contraproducente porque terá de fazer o processo de embutimento a cada instalação.
Por isso para instalações em rede opte pelo MÉTODO 2 na página 7.
Durante a instalação você notará que mesmo com o preseed embutido no initrd.gz, quase ao final da instalação aparecerá uma mensagem "Executando o preseed..." ou algo parecido, porém, essa mensagem diz respeito somente aos comandos pós-instalação (late_command).
Para saber se tudo está correndo bem na instalação via iPXE com preseed embutido, observe logo no começo durante a instalação se o particionamento aplicado corresponde ao do preseed.

Particionamento: ponto crítico:
O expert_recipe é extremamente sensível à formatação.

Algumas observações práticas:
Não use tabulações, apenas espaços simples;
Jamais deixe espaços em branco no final das linhas;
A ordem das partições importa — por exemplo, a swap deve vir após /boot e antes de / (raiz);
No esquema de particionamento não pode ter comentários entre as linhas da string expert_recipe, aliás, não pode ter nada além do esquema de particionamento;
Um erro mínimo de formatação e/ou sintaxe pode resultar em falha silenciosa do instalador.

Considerações Finais
Esse método provou-se confiável em servidores novos com UEFI e máquinas antigas com BIOS tradicional.
Testado com sucesso inclusive em hardware antigo com DDR2 e BIOS legado.
Evita depender de parâmetros instáveis em linha de kernel.
Pode ser adaptado para qualquer distribuição baseada no debian-installer.
O esquema total utilizado foi com label iPXE dentro de menu PXE com apache2, tftpd-hpa e isc-dhcp-server, mas pode ser utilizado com somente iPXE.

Não mostrei aqui como configurar mirrors no servidor com esse mesmo esquema apache2/dhcp/tftpd, ou seja, como transformar o servidor em um espelho interno com os pacotes sempre atualizados para que não dependa tanto da internet ao instalar/reinstalar os sistemas na rede.

Trabalhando com imagens ISO e PXE/iPXE você pode instalar Windows na sua rede, bastando para isso utilizar a própria imagem original do Windows e modificar ela com o NTLite:
https://www.ntlite.com

Apesar de que para instalação em massa do Windows via rede interna o mais aconselhado é criar uma imagem com o Clonezilla (que é baseado no Debian) e instalar em vários computadores ao mesmo tempo com o próprio Clonezilla:
https://www.vivaolinux.com.br/artigo/Instalacao-de-distro-Linux-em-computadores-netbooks-etc-em-rede-com-o-Clonezilla/

d-i significa Debian Installer.

PRESEED explicado

Abaixo repito o preseed comentado onde tem as seções em sequência com o título de cada configuração.

#_preseed_V1
###Preseed para boot PXE sem Interface Grafica###

Este é o preseed ##

O preseed segue uma sequência rígida que é pouco documentada e se você inverte alguma posição a instalação falha silenciosamente. O que se percebe é que, basicamente, a sequência das opções no preseed deve seguir a ordem do instalador do Debian, ou seja, a mesma
ordem caso você fizesse tudo manualmente, o instalador pergunta primeiro o local, depois a linguagem e assim por diante.

### Locale e linguagem ###
d-i debian-installer/locale string pt_BR.UTF-8
d-i console-setup/ask_detect boolean false


Configuracoes de teclado ###

d-i console-keymaps-at/keymap select br-abnt2 d-i keyboard-configuration/xkb-keymap select br
d-i keyboard-configuration/layout select br
d-i keyboard-configuration/model select abnt2
d-i keyboard-configuration/variant select abnt2
d-i keyboard-configuration/options string lv3:alt_switch,compose:rctrl
d-i keyboard-configuration/store_defaults_in_debconf_db boolean true
d-i time/zone string America/Sao_Paulo

Na configuração da rede torna-se imprescindível estabelecer os DNSs, pois senão a instalação pode falhar
com a mensagem de que não foi possível encontrar o espelho de rede e dá várias opções incertas do que pode ter acontecido.

### Hostname e rede ###
d-i netcfg/use_autoconfig boolean true
d-i netcfg/disable_dhcp_hostname boolean true
d-i netcfg/get_nameservers string 1.1.1.1 9.9.9.9
d-i netcfg/get_hostname string no01
d-i netcfg/get_hostname seen true
d-i netcfg/get_domain string localdomain
d-i netcfg/get_domain seen true
d-i netcfg/choose_interface select auto

### Repositorio Debian ###
d-i mirror/country string manual
d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

As configurações de usuário e senha são tranquilas e nunca deram problema.

### Usuario ###
d-i passwd/root-password password cluster
d-i passwd/root-password-again password cluster
d-i passwd/user-fullname string Kluster User
d-i passwd/username string kluster
d-i passwd/user-password password cluster
d-i passwd/user-password-again password cluster
d-i passwd/user-default-groups string sudo

### Popularidade ###
popularity-contest popularity-contest/participate boolean false

Caso tenha algum módulo/pacote/programa extra para instalar e pré-carregar coloque nesta parte.

### Instala e pre-carrega os modulos necessarios ###
d-i anna-install string btrfs-modules xfs-modules

Você pode criar vários early_command, somente, no caso de módulos extras, tenha o cuidado colocar os módulos numa ordem lógica,
senão a instalação falha caso você carregar um módulo antes de outro módulo que dependa deste.
Como utilizei btrfs na partição raiz fez-se necessário habilitar o módulo específico.
Com btrfs na partição raiz é obrigatório ter antes uma partição /boot bootável senão a instalação falha dizendo que não foi possível
definir uma partição raiz.
Com o xfs, talvez por ser mais antigo, não é tão necessário, mas coloquei como garantia:


d-i preseed/early_command string \
modprobe btrfs || true; \
modprobe xfs || true

### Configura o particionamento automatico ###

No particionamento por preseed não pode ter espaços em branco após as linhas, procure evitar tabulação, use somente espaçamento com a barra de espaços e
não pode ter comentários no esquema de particionamento.
Pode se observar que evitei colocar acentuação até nos comentários de todo o preseed.
A primeira linha abaixo define o método de particionamento:
  • regular: partições usuais para a arquitetura instalada;
  • lvm: para partições LVM;
  • crypto: para partições LVM com encriptação.

Na segunda linha podemos definir três tipos de receitas pré-definidas:
  • atomic: todo o particionamento numa única partição;
  • home: partição /home separada;
  • multi: partições /home, /var e /tmp separadas.

E podemos também definir a nossa receita de particionamento, no caso, repete-se o nome que vem
logo depois da linha "d-i partman-auto/expert_recipe string" que está em seguida.

d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select boot-root

A partir daqui começa o recipe (receita) de particionamento.
Pode colocar em uma linha lógica só, sem barras no final, mas por uma questão de organização fica melhor com barras ao final de cada linha,
porém, não abuse das barras e não pode ter espaço em branco após cada barra.
A receita segue uma ordem específica: a partição /boot ou /raiz (caso a partição /boot fique junto com a raiz) devem vir por primeiro e depois a swap.
Depois da swap vem as outras partições.
No caso eu "fechei" o disco colocando 4 partições primárias, caso queira somente uma partição primária e as outras lógicas, basta retirar

O parâmetro $bootable{ } é o mesmo que "flag inicializável ligado" da instalação gráfica e só pode ter uma única partição bootável, caso
você colocar duas ou mais o instalador falhará.
Os valores do tamanho de cada partição deve ser preferencialmente em MB (MegaBytes).
Entre as chaves sempre deve ter um espaço em branco não importando se tem escritos dentro das chaves,
senão a instalação falha silenciosamente.

d-i partman-auto/expert_recipe string \
boot-root :: \
40 50 512 ext4 \
$primary{ } $bootable{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /boot } . \
4096 4096 4096 linux-swap \
$primary{ } \
method{ swap } format{ } . \
51200 51200 51200 btrfs \
$primary{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ btrfs } \
mountpoint{ / } . \

Nesta parte abaixo os parâmetros 512 e -1 significam que é para utilizar todo o espaço vazio restante do SD/HD na partição ali definida com um mínimo de 512 MB,
ou seja, a partição começará com 512 MB e ocupará todo o restante do disco.
O parâmetro mountpoint é o mesmo que escolher o tipo de partição ou "Definir manualmente a partição" ou algo parecido na instalação gráfica.

512 512 -1 xfs \
$primary{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ xfs } \
mountpoint{ /orangefs } .

### Confirma as acoes do particionador ###
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

Esta parte instala a interface gráfica e pacotes/programas extras, como se pode perceber.
A linha tasksel destina-se aos pacotes básicos padrões do Debian.
A linha "d-i pkgsel" destina-se mais aos pacotes/programas adicionais/extras.
Na página CUSTOMIZANDO A INSTALAÇÃO 1 tem mais algumas explicações logo no começo.

### Pacotes ###
tasksel tasksel/first multiselect standard, ssh-server
d-i pkgsel/include string sudo vim curl wget net-tools aptitude libu2f-udev console-setup keyboard-configuration console-data

Repetindo as linhas com instalação de interface gráfica, no caso, o Cinnamon:
### Pacotes ###
tasksel tasksel/first multiselect standard, cinnamon-desktop, ssh-server
d-i pkgsel/include string sudo vim curl wget net-tools mousepad aptitude libu2f-udev gnome-terminal firefox-esr console-setup keyboard-configuration console-data

Aqui instala-se o GRUB na partição /dev/sda ou default.
Coloquei default mesmo tendo um único disco, porém, com dois ou mais discos é necessário ser default porque daí o GRUB
será instalado no mesmo disco onde o particionamento recebeu a partição /boot bootável ou a partição raiz bootável.

### GRUB ###
d-i grub-installer/bootdev string default

Neste parâmetro dizemos ao instalador para não perguntar e não parar a instalação com "Retire o disco de instalação e clique em Continuar" ou algo parecido.

### Finalizacao ###
d-i finish-install/reboot_in_progress note

Aqui temos os comandos pós-instalação onde faz-se as configurações extras ou reforça-se alguma configuração cujos d-i não satisfizeram, por exemplo,
as configurações de teclado abnt2 tiveram de ser feitas aqui porque os parâmetros ## Configuracoes de teclado ### não foram aplicados, porém, caso se
comentar os parâmetros o instalador para e pergunta as opções de teclado, não sei explicar o porquê disso.

### Comandos pos-instalacao ###
d-i preseed/late_command string \
in-target bash -c 'echo "XKBMODEL=\"abnt2\"" > /etc/default/keyboard; \
echo "XKBLAYOUT=\"br\"" >> /etc/default/keyboard; \
echo "XKBVARIANT=\"abnt2\"" >> /etc/default/keyboard; \
echo "XKBOPTIONS=\"lv3:alt_switch,compose:rctrl\"" >> /etc/default/keyboard; \
echo "BACKSPACE=\"guess\"" >> /etc/default/keyboard'; \
in-target dpkg-reconfigure -f noninteractive keyboard-configuration; \
in-target setupcon --force; \
in-target update-initramfs -u; \
in-target bash -c 'set -e; \
apt-get clean || true; \
apt-get update || true; \
sed -i "s/^allow-hotplug/auto/" /etc/network/interfaces; \
update-grub || true; update-initramfs -u || true; \
mkdir -p /etc/sudoers.d; \
echo "kluster ALL=(ALL:ALL) ALL" > /etc/sudoers.d/kluster; \
chmod 0440 /etc/sudoers.d/kluster'

Aqui tem o exemplo oficial (mas deficiente) do Debian:
Referências
Página anterior    

Páginas do artigo
   1. INTRODUÇÃO
   2. CUSTOMIZANDO A INSTALAÇÃO 1
   3. CUSTOMIZANDO A INSTALAÇÃO 2
   4. CUSTOMIZANDO A INSTALAÇÃO 3
   5. CUSTOMIZANDO A INSTALAÇÃO 4
   6. CUSTOMIZANDO A INSTALAÇÃO 5
   7. CUSTOMIZANDO A INSTALAÇÃO 6
   8. CONSIDERAÇÕES FINAIS
Outros artigos deste autor

Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Instalar e configurar o Nftables com exemplos básicos de configurações

Compilação do Squid 3 no Debian Wheezy

Criar entrada (menuentry) ISO no Grub

VMD no Debian - Instalação e configuração

Leitura recomendada

Slackware - Instalação com Tagfiles

NoBreak SMS e GNU/Linux (FC5) - Parte 1 - Fazendo o Nobreak funcionar

Acessando remotamente máquina Windows dentro de uma VPN através do Ubuntu

Criando um repositório local do Fedora

A pós-instalação do Arch Linux

  
Comentários
[1] Comentário enviado por Zoiudo em 28/07/2025 - 16:24h

@Buckminster, tem que falar isso (agradecer a IA) praquele cara que postou que estava com problema na máquina e não quis testar recomendações dadas "porque eram de IA"; deve estar f*did* até agora, hehehe...


#
##
###
#### Conhecimento não vem de graça, valorize o aprendizado e a ajuda recebida! ####



#
##
###
#### Conhecimento não vem de graça, valorize o aprendizado e a ajuda recebida! ####

[2] Comentário enviado por Buckminster em 28/07/2025 - 20:55h

Aqui a formatação dos scripts e do artigo ficaram um pouco melhor:
https://julioseibei.blogspot.com/2025/07/customizar-instalacao-do-linux-debian.html


[b]_________________________________________________________[/b]
[i]Rule number one: Always listen 'to' Buck![/i]
Enquanto o cursor estiver pulsando, há vida!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts