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: 368 ]

Por: Buckminster em 28/07/2025


CUSTOMIZANDO A INSTALAÇÃO 1



ISO customizada COM Interface Gráfica para instalação via pendrive

O preseed.cfg aqui postado utiliza o Cinnamon como interface gráfica.
Lembrando que o arquivo preseed.cfg no caso de ser embutido no initrd.gz precisa obrigatoriamente ter o nome de preseed.cfg, nos outros casos o arquivo pode ter outro nome contanto que tenha a extensão .cfg.
Ao terminar o procedimento descrito aqui você terá uma imagem ISO pronta para instalação via pendrive.
Modificando o preseed você personaliza (customiza) a instalação, cria uma ISO de acordo com os programas que você utiliza constantemente.

Nesta parte do preseed (veja o preseed completo mais adiante):

### 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

é onde você configura qual interface gráfica será instalada, basta mudar, por exemplo, para o Gnome:

### Pacotes ###
tasksel tasksel/first multiselect standard, task-gnome-desktop, ssh-server <<< nesta linha você coloca o básico padrão do Debian
d-i pkgsel/include string sudo vim curl wget net-tools mousepad aptitude libu2f-udev gnome-terminal firefox-esr <<< nesta linha você coloca os programas/pacotes adicionais

Veja bem, essas são instalações limpas onde pacotes como Libre-office e Firefox não vem por padrão, portanto, você deve escrevê-los na linha ou instalar depois, caso queira.
Não tenho como abranger aqui todos os aspectos, você terá de se informar sobre preseed, mas verá que não é difícil, é um pouco trabalhoso, mas não é difícil.
Por exemplo, observe que o Google-Chrome não está em nenhuma das linhas, mas foi escrito no late_command (comandos pós-instalação) porque colocando o Chrome em uma das linhas "tasksel" ou "d-i pkgsel" a instalação falha com erro de "Falha na instalação de software" ou algo parecido. Essa foi uma das sugestões do parceirão Chat "Jarvis" GPT.
O preseed é xarope ao extremo nesse sentido de ordem de colocação, formatação e sintaxe.
Dependendo do pacote/programa você terá de ir na tentativa e no erro, porém, uma base forte é saber a ordem de instalação padrão do Debian, ou seja, basta observar em uma instalação com a interação do usuário o que vem primeiro: escolha do teclado, linguagem, rede, etc.
O preseed segue essa ordem e o que não estiver nessa ordem você coloca no late_command.

Para o Debian Bookworm que usa o Gnome 43, veja aqui pacotes para acrescentar na linha "d-i pkgsel":
https://people.debian.org/~fpeters/gnome/debian-gnome-43-status.html
https://wiki.debian.org/pt_BR/Gnome

Para o KDE veja aqui:
https://wiki.debian.org/pt_BR/KDE

INICIANDO

Após baixar a ISO no link recomendado, o qual repito aqui:
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/

debian-12.11.0-amd64-netinst.iso

salve numa pasta de sua preferência e depois altere o caminho no script ou salve no mesmo diretório onde está o script build-custom-iso.sh.

Crie o arquivo:
sudo vim build-custom-iso.sh

Copie e cole o conteúdo:

#!/bin/bash

### Arquivo para ISO COM e SEM Interface Gr&aacute;fica ###

Modifique a seu gosto (caso souber o que está fazendo) ##

set -e
### === VERIFICA&Ccedil;&Atilde;O DE ROOT ===
if [ "$EUID" -ne 0 ]; then
echo "Este script deve ser executado como root (use sudo)."
exit 1
fi

### Altere para o teu ambiente ###
ISO_ORIGINAL_PATH="$(pwd)/debian-12.11.0-amd64-netinst.iso"
ISO_CUSTOM="debian-12.11.0-customCOM.iso"
WORKDIR="$(pwd)/iso-build"
PRESEED="$(pwd)/preseed.cfg"

### === INSTALAR PACOTES NECESS&Aacute;RIOS ===
echo "Instalando pacotes..."
apt update
##aptitude safe-upgrade -y
apt install -y xorriso rsync syslinux syslinux-common pxelinux wget cpio unzip debconf-utils

### Verificar dependencias ###
for cmd in xorriso rsync; do
command -v $cmd >/dev/null || { echo "Erro: $cmd não está instalado."; exit 1; }
done

### Preparar diretorios ###
mkdir -p "$WORKDIR"/iso-original "$WORKDIR"/iso-custom
cd "$WORKDIR"

### Verificar ISO original ###
if [ ! -f "$ISO_ORIGINAL_PATH" ]; then
echo "ISO original não encontrada: $ISO_ORIGINAL_PATH"
exit 1
fi

### Extrair ISO original preservando estrutura e symlinks ###
xorriso -osirrox on -indev "$ISO_ORIGINAL_PATH" -extract / iso-original

### Copiar conteudo para ISO customizada ###
rsync -aHAX iso-original/ iso-custom/

### Copiar preseed.cfg para raiz da ISO ###
cp "$PRESEED" iso-custom/preseed.cfg

### Criar symlink /cdrom -&gt; . para o instalador localizar o preseed ###
rm -rf iso-custom/cdrom
ln -sf . iso-custom/cdrom

### Editar ISOLINUX (modo BIOS) ###

ISOLINUX_CFG="$WORKDIR/iso-custom/isolinux/txt.cfg"
GTK_CFG="$WORKDIR/iso-custom/isolinux/gtk.cfg"
MENU_CFG="$WORKDIR/iso-custom/isolinux/menu.cfg"

### Limpar entradas conflitantes ou duplicadas ###
sed -i '/^default /d' "$ISOLINUX_CFG"
sed -i '/^timeout/d' "$ISOLINUX_CFG"
sed -i '/^label auto$/,/^$/d' "$ISOLINUX_CFG"

# Remover qualquer defini&ccedil;&atilde;o de &#039;default&#039; e &#039;menu default&#039; do gtk.cfg
sed -i '/^default /d' "$GTK_CFG"
sed -i '/^\s*menu default\s*$/d' "$GTK_CFG"

### Substitui menu.cfg por nova versao com entrada personalizada no topo ###
cat > "$MENU_CFG" <<EOF
default auto
prompt 1
timeout 0

menu hshift 4
menu width 70
menu title Debian GNU/Linux installer menu (BIOS mode)

label auto
menu label Auto install (kluster)
menu default
kernel /install.amd/vmlinuz
append auto=true file=/cdrom/preseed.cfg initrd=/install.amd/initrd.gz ---

include stdmenu.cfg
include gtk.cfg
include txt.cfg
EOF

### Editar GRUB (modo UEFI) ###
GRUB_CFG="$WORKDIR/iso-custom/boot/grub/grub.cfg"

### Remove qualquer definicao existente de timeout ###
sed -i '/^set timeout=/d' "$GRUB_CFG"

### Adiciona entrada de instalacao automatica no topo ###
TEMP_GRUB="$(mktemp)"

cat >> "$TEMP_GRUB" <<EOF
set timeout=-1

menuentry "Auto install (kluster)" {
set background_color=black
linux /install.amd/vmlinuz auto=true file=/cdrom/preseed.cfg ---
initrd /install.amd/initrd.gz
}
EOF

### Concatenar com o restante do grub.cfg ###
cat "$GRUB_CFG" >> "$TEMP_GRUB"
mv "$TEMP_GRUB" "$GRUB_CFG"

### Corrigir permiss&otilde;es de arquivos isolinux ###
chmod 644 iso-custom/isolinux/isolinux.bin
chmod 644 iso-custom/isolinux/boot.cat

### Gerar nova ISO com suporte a BIOS e UEFI ###
cd "$WORKDIR/iso-custom"

xorriso -as mkisofs \
-o "$WORKDIR/$ISO_CUSTOM" \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-c isolinux/boot.cat \
-b isolinux/isolinux.bin \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-eltorito-alt-boot \
-e boot/grub/efi.img \
-no-emul-boot \
-isohybrid-gpt-basdat \
-r -J -l -cache-inodes .

echo "ISO personalizada criada com sucesso: $WORKDIR/$ISO_CUSTOM"

Salve e saia.

Permita a execução:
sudo chmod +x build-custom-iso.sh

Dentro do diretório /home/seu_usuario/pasta estarão os arquivos build-custom-iso.sh, debian-12.11.0-amd64-netinst.iso e preseed.cfg.
Depois de rodar o script build-custom-iso.sh criará uma pasta chamada iso-build e dentro dela estarão duas pastas (iso-custom e iso-original) e também a imagem ISO final debian-12.11.0-customCOM.iso pronta para instalação.
Nas pastas iso-custom e iso-original estará o conteúdo descompactado da ISO modificada e da ISO original.

sudo ./build-custom-iso.sh

Caso quiser pode excluir as duas pastas iso-custom e iso-original e salvar somente a imagem ISO custom num pendrive inicializável.
O menu de instalação reconhecerá se é BIOS ou UEFI e ficará assim:
CUSTOMIZANDO A INSTALAÇÃO 1
ou assim:
CUSTOMIZANDO A INSTALAÇÃO 1
ARQUIVO PRESEED.CFG
sudo vim preseed.cfg

Coloque o conteúdo dentro:

#_preseed_V1
### Arquivo para ISO COM Interface Grafica ###

### Descomente as opcoes caso souber exatamente sem sombra nenhuma de duvida o que esta fazendo! ###

### Idioma / teclado ###
d-i debian-installer/locale string pt_BR.UTF-8
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/xkb-keymap select br
d-i time/zone string America/Sao_Paulo

### Rede com IP estatico - Altere ###
#d-i netcfg/disable_dhcp boolean true
##d-i netcfg/get_ipaddress string 192.168.1.X
##d-i netcfg/get_netmask string 255.255.255.0
##d-i netcfg/get_gateway string 192.168.1.X
d-i netcfg/get_nameservers string 1.1.1.1 9.9.9.9
##d-i netcfg/confirm_static boolean true
#d-i netcfg/get_hostname string no01
#d-i netcfg/get_domain string local
d-i netcfg/choose_interface select auto

### Configurar manualmente o hostname na instalacao ###
# Configurar automaticamente o dominio - DNS #
#d-i netcfg/get_hostname string cluster
#d-i netcfg/get_domain string cluster
#d-i netcfg/hostname string cluster
d-i netcfg/get_hostname seen false
d-i netcfg/get_domain string localdomain
d-i netcfg/get_domain seen true

### Espelho Debian fixo para evitar interacao - erro de release ###
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

### Concurso de popularidade - N&atilde;o ###
popularity-contest popularity-contest/participate boolean false

### Usuario kluster com senha em grupo sudo ###
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

### Root tamb&eacute;m ativado ###
d-i passwd/root-password password cluster
d-i passwd/root-password-again password cluster

### Particionamento manual (usuario interage) ###
d-i partman-partitioning/confirm_write_new_label boolean true

### 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

### GRUB ###
#d-i grub-installer/only_debian boolean true
#d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev string /dev/sda

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

### Personalizacoes com late_command ###
d-i preseed/late_command string \
in-target bash -c 'set -e; \
echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list; \
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -; \
sed -i 's/^allow-hotplug/auto/' /etc/network/interfaces; \
#echo &quot;GRUB_CMDLINE_LINUX=\&quot;net.ifnames=0 biosdevname=0\&quot;&quot; &gt;&gt; /etc/default/grub; \
#echo &quot;net.ifnames=0 biosdevname=0&quot; &gt; /etc/kernel/cmdline || true; \
update-grub || true; \
update-initramfs -u || true; \
apt-get update || true; \
apt-get install -y sudo || true; \
apt-get install -y google-chrome-stable || true; \
mkdir -p /etc/sudoers.d; \
echo "kluster ALL=(ALL:ALL) ALL" > /etc/sudoers.d/kluster; \
chmod 0440 /etc/sudoers.d/kluster'
#echo \&quot;auto lo\&quot; &gt; /etc/network/interfaces; \
#echo \&quot;iface lo inet loopback\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot;\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot;auto eth0\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot;iface eth0 inet static\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot; address 192.168.1.X\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot; netmask 255.255.255.0\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot; gateway 192.168.1.X\&quot; &gt;&gt; /etc/network/interfaces; \
#echo \&quot; dns-nameservers 8.8.8.8 208.67.222.222\&quot; &gt;&gt; /etc/network/interfaces&#039;

Salve e saia.

O preseed acima instalará o Debian 12 com Cinnamon e já virá com o usuario "kluster" configurado com senha, sudo instalado, Google-chrome, além de outras configurações.
O Particionamento terá a intervenção do usuário, mas você pode configurar no preseed um particionamento automático, aliás, no preseed dá para configurar uma instalação totalmente automatizada sem intervenção nenhuma do usuário, como veremos adiante.
Na última página tem o preseed comentado com várias explicações.

Nesta parte:

### 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

é onde você configura qual interface gráfica será instalada, basta mudar, por exemplo, para o Gnome:

### Pacotes ###
tasksel tasksel/first multiselect standard, task-gnome-desktop, ssh-server <<< nessa linha você coloca o básico padrão do Debian
d-i pkgsel/include string sudo vim curl wget net-tools mousepad aptitude libu2f-udev gnome-terminal firefox-esr <<< nessa linha você coloca os programas/pacotes adicionais

Veja bem, essas são instalações limpas onde pacotes como Libre-office e Firefox não vem por padrão, portanto, você deve escrevê-los na linha ou instalar depois, caso queira.
Por exemplo, observe que o Google-Chrome não está em nenhuma das linhas, mas foi escrito no late_command (comandos pós-instalação) porque colocando o Chrome em uma das linhas "tasksel" ou "d-i pkgsel" a instalação falha com erro de "Falha na instalação de software" ou algo parecido. Essa foi uma das sugestões do parceirão Chat "Jarvis" GPT.
O preseed é xarope ao extremo nesse sentido.
Dependendo do pacote/programa você terá de ir na tentativa e no erro.
Na página do Debian sobre o preseed, na teoria tudo funciona que é uma maravilha, mas na prática é diferente.
Para quem trabalha com redes, por exemplo, e cuida de vários laboratórios de informática, sabe a importância de instalações em massa personalizadas via rede.

Para o Debian Bookworm que usa o Gnome 43, veja aqui pacotes para acrescentar na linha "d-i pkgsel":
https://people.debian.org/~fpeters/gnome/debian-gnome-43-status.html
https://wiki.debian.org/pt_BR/Gnome

Para o KDE veja aqui:
https://wiki.debian.org/pt_BR/KDE
Página anterior     Próxima página

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

Como ter o ChatGPT no seu site em PHP

Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

Redes de Computadores · IPtables · Endereços IPs - Explicações básicas

Instalar e Configurar o Slackware Linux em 2025

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

Leitura recomendada

Metodologia LFS - Contruindo seu Linux do zero

Configurando Servidor de Nomes - DNS (Debian)

Instalação do Nagios Core no CentOS 5.5

Instalando OpenWrt no TP-LINK MR3420

Remasterizando o Ubuntu

  
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