C.1. Exemplo de Ficheiro de Pré-configuração

Este é um exemplo completo e funcional de um ficheiro de pré-configuração para uma instalação automatizada. A sua utilização é explicada em Secção 4.7, “Instalação Automática”. Você poderá querer descomentar algumas das linhas antes de utilizar o ficheiro.

Nota

De modo a ser possível apresentar correctamente este exemplo no manual, tivemos de dividir algumas linhas. Isto é indicado pela utilização do carácter de continuação de linha “\” e identação extra na linha seguinte. Num ficheiro de pré-configuração verdadeiro, estas linhas separadas têm de ser unidas numa única linha. Se não o fizer, a pré-configuração irá falhar com resultados imprevisíveis.

Um ficheiro de exemplo “limpo” está disponível a partir de http://www.debian.org/releases/sarge/example-preseed.txt.

#### Arranque.

# Para iniciar um ficheiro preseed, primeiro precisa de arrancar com o
# instalador , e dizer-lhe qual ficheiro de preseed a utilizar. Isto é
# feito passando um paramêtro de arranque ao kernel quer manualmente
# durante o arranque ou editando o ficheiro syslinux.cfg (ou similar) e 
# acrescentando o paramêtro no fim das linhas de append do kernel.
.#
# Se está a utilizar o netbooting, utilize isto:
#   preseed/url=http://host/path/to/preseed
# Se está a criar um CD, você pode utilizar isto:
#   preseed/file=/cdrom/preseed
# Se está a instalar a partir de media USB, utilize isto, e coloque o
# ficheiro de preseed no directório raiz do stick USB.
#  preseed/file=/hd-media/preseed
#
# Se se sentir confortável a alterar a imagem initrd do instalador, pode
# também colocar um ficheiro de preseed no directório raiz do sistema de
# ficheiros do initrd, chamado "preseed.cfg" -- se estiver presente o
# instalador irá sempre utilizar este ficheiro (nota: não suportado pela
# versão Sarge do instalador). Caso contrário assegure-se que copia o
# ficheiro para o local que especificou.
#
# Para se assegurar que o instalador obtém o ficheiro de preseed correcto,
# pode especificar um checksum para o ficheiro. Actualmente isto tem
# de ser um md5sum, e se especificado tem de coincidir com o ficheiro ou o
# instalador vai-se recusar a utilizar o ficheiro.
# preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
# preseed/file/checksum=5da499872becccfeda2c4872f9171c3d
#
# Algumas partes do processo de instalação não podem ser automatizadas
# utilizando algumas formas de preseeding, porque as questões são
# colocadas antes do ficheiro de preseed ser carregado. Se o ficheiro
# de preseed for obtido a partir da rede, primeiro tem de ser configurada
# a rede. Uma das razões para utilizar preseed com initrd é que permite
# fazer preseed mesmo nos passos iniciais do processo de instalação.
#
# Enquanto o está a fazer, você pode querer mandar para lá um
# debconf/priority=critical para evitar a maioria das questões mesmo que
# o preseeding abaixo falhe algumas. E você pode definir o timeout para 1
# em syslinux.cfg para evitar ter de carregar em
# enter para iniciar o instalador.
#
# Note que o kernel aceita um máximo de 8 opções de linha de comandos e
# 8 opções de ambiente (incluindo quaisquer opções adicionadas por omissão
# para o instalador). Se esses números forem excedidos, os kernels 2.4
# irão largar as opções em excesso e nos kernels 2.6 ocorrerá um panic.
# Com o kernel 2.6.9 ou mais recentes pode utilizar 32 opções de linha
# de comandos e 32 opções de ambiente
#
# Algumas das opções por omissão, como 'vga=normal' podem ser removidas 
# sem problemas na maioria das instalações, que lhe pode permitiri
# adicionar mais opções para preseeding.

# Para escolher o seu idioma e país, utilize esta configuração, mas
# lembre-se que isto só vai funcionar para preseed baseado no initrd,
# para outras formas de preseed deve converte-la para opções do kernel
# tais como debian-installer/locale=pt_PT
d-i debian-installer/locale string pt_PT

# Para escolher um teclado utilize esta configuração. Novamente terá de a
# passar como paramêtros ao kernel na maioria das configurações de preseed.
d-i console-keymaps-at/keymap select pt

#### Configuração de rede.

# Claro que, isto não vai funcionar se você está a carregar o ficheiro de preseed a partir da
# rede! Mas é óptimo se está a arrancar a partir de CD ou de um stick USB. Você pode
# passar parâmetros de configuração de rede nos parâmetros do kernel se você está
# a carregar os ficheiros de preseed a partir da rede.

# Se possível o netcfg irá escolher um interface que tenha uma ligação. Isto faz com que
# não mostre uma lista se existir mais de um interface.
d-i  netcfg/choose_interface select auto

# Se tiver um servidor dhcp lento e o instalador esgota o tempo à espera, 
# isto pode ser útil.
#d-i netcfg/dhcp_timeout string 60

# Se você preferir configurar a rede manualmente, aqui está como o fazer:
#d-i netcfg/disable_dhcp                boolean true
#d-i netcfg/get_nameservers             string 192.168.1.1
#d-i netcfg/get_ipaddress               string 192.168.1.42
#d-i netcfg/get_netmask                 string 255.255.255.0
#d-i netcfg/get_gateway                 string 192.168.1.1
#d-i netcfg/confirm_static              boolean true

# Note que qualquer hostname e nome de domínio adquiridos por dhcp tomam
# precedência sobre os valores definidos aqui. No entanto, definir os valores
# previne que as questões sejam mostradas mesmo que os valores venham por dhcp.
d-i  netcfg/get_hostname                string unassigned-hostname
d-i  netcfg/get_domain                  string unassigned-domain

# Desligar a irritante janela de diálogo da chave WEP.
d-i  netcfg/wireless_wep                string
# O hostname que alguns ISPs utilizam como password.
#d-i netcfg/dhcp_hostname               string radish

#### Configurações do mirror.

d-i  mirror/country                     string enter information manually
d-i  mirror/http/hostname               string http.us.debian.org
d-i  mirror/http/directory              string /debian
d-i  mirror/http/proxy                  string 

 Qual o conjunto de Debian a instalar.
#d-i mirror/suite string testing
# Qual o conjunto de Debian a instalar para carregar os componentes do
# instalador. (Por omissão será utilizado o mesmo de mirror/suite.)
#d-i mirror/udeb/suite string testing

#### Particionamento.

# Se o sistema tiver espaço livre suficiente você pode escolher particionar apenas esse espaço.
#d-i partman-auto/init_automatically_partition \
#    select Utilizar o maior espaço contíguo

# Alternativamente, você pode especificar um disco a particionar. O nome do dispositivo pode
# ser dado quer por devfs ou pelo formato tradicional não-devfs.
# Por exemplo, para utilizar o primeiro disco que devfs conhece:
d-i  partman-auto/disk                  string /dev/discs/disc0/disc

# você pode escolher a partir de qualquer umas das receitas de particionamento pré-definidas:
d-i  partman-auto/choose_recipe         select \
     Todos os ficheiros numa partição (recomendado para novos utilizadores)
#d-i partman-auto/choose_recipe         select Desktop machine
#d-i partman-auto/choose_recipe         select Multi-user workstation

# Ou disponibilize você uma receita sua...
# O formato de receita está documentado no ficheiro devel/partman-auto-recipe.txt.
# Se tiver como colocar um ficheiro de receita no ambiente do d-i, você pode
# apenas apontar para lá.
#d-i partman-auto/expert_recipe_file    string /hd-media/recipe

# Caso contrário, você pode colocar toda a receita numa linha. Este exemplo cria
# uma pequena partição /boot, adequada para swap, e utiliza o resto do espaço
# para a partição raiz:
#d-i partman-auto/expert_recipe         string boot-root :: \
#    20 50 100 ext3 $primary{ } $bootable{ } method{ format } format{ } \
#    use_filesystem{ } filesystem{ ext3 } mountpoint{ /boot } . \
#    500 10000 1000000000 ext3 method{ format } format{ } \
#    use_filesystem{ } filesystem{ ext3 } mountpoint{ / } . \
#    64 512 300% linux-swap method{ swap } format{ } . 
# Para referência, aqui está a mesma receita de uma forma mais legível:
#    boot-root ::
#       40 50 100 ext3
#          $primary{ } $bootable{ }
#          method{ format } format{ }
#          use_filesystem{ } filesystem{ ext3 }
#          mountpoint{ /boot }
#       .
#       500 10000 1000000000 ext3
#          method{ format } format{ }
#          use_filesystem{ } filesystem{ ext3 }
#          mountpoint{ / }
#       .
#       64 512 300% linux-swap
#          method{ swap } format{ }
#       .

# Isto faz o partman particionar automaticamente sem confirmação.
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
# select Terminar particionamento e escrever alteraçãoes no disco
d-i partman/confirm boolean true

#### Instalação do Gestor de Arranque.

# Grub é o gestor de arranque por omissão (para x86). Se você quer o lilo instalado
# em vez disso, tire o comentário desta linha:
#d-i grub-installer/skip                boolean true

# Fazer isto é normalmente seguro, se nenhum outro sistema operativo foi detectado
#faz com o grub se instale automaticamente na MBR
d-i  grub-installer/only_debian         boolean true

# Este faz com que o grub-installer se instale na MBR se também encontrar algum
# outro SO, que é menos seguro porque não ser possível iniciar o outro SO.
d-i  grub-installer/with_other_os       boolean true

# Em alternativa, se você quer instalar noutro local que não a MBR,
# tire o comentário e edite estas linhas:
#d-i grub-installer/bootdev             string (hd0,0)
#d-i grub-installer/only_debian         boolean false
#d-i grub-installer/with_other_os       boolean false

#### Terminar a instalação da primeira etapa.

# Evitar aquela última mensagem acerca da instalação estar completa.
d-i  prebaseconfig/reboot_in_progress   note 

#### Comandos da shell.

# O preseed do d-i é inerentemente não seguro. Nada no instalador
# verifica tentativas de buffer overflows ou outros exploits nos valores
# de um ficheiro de preseed como este. Utilize apenas ficheiros preseed
# de uma fonte de confiança! Para conseguir isso, e porque normalmente é
# útil, aqui está uma forma de correr automaticamente qualquer comando da
# shell dentro do instalador.

# O primeiro comando é executado tão cedo quanto possível, logo após
# ter sido lido o preseed.
#d-i preseed/early_command string anna-install some-udeb

# Este comando é executado imaediatamente antes da instalação terminar,
# mas quando ainda existe um directório /target que possa ser utilizado.
#d-i preseed/late_command string echo foo 
> /target/etc/bar

# Este comando é executado quando o base-config estiver a iniciar.
#base-config base-config/early_command string echo hi mom

# Este comando é executado após o base-config ter terminado e
# imediatamente antes da prompt login:. Esta é uma boa forma de instalar
# um conjunto de pacotes que queira, ou alterar a cnfiguração do sistema.
#base-config base-config/late_command string \
#    apt-get install zsh; chsh -s /bin/zsh

# Preseed para a 2ª etapa da instalação.

# Evitar a mensagem introdutória.
base-config  base-config/intro          note

# Evitar a mensagem final.
base-config  base-config/login          note

# Se você instalou um gestor de display, mas não quer inicia-lo imediatamente
# após o base-config terminar.
#base-config base-config/start-display-manager boolean false

# Algumas versões do instalador podem relatar de volta o que você instalou.
# O padrão é não relatar de volta, mas enviar relatórios ajuda o projecto
# a determinar qual o software mais popular e inclui-lo nos CDs.
#popularity-contest popularity-contest/participate boolean false

#### Configuração do Relógio e do Fuso Horário.

# Controla se o relógio de hardware está ou não definido para UTC.
d-i clock-setup/utc boolean true

# Você pode definir isto para qualquer configuração válida de $TZ;
para as opções veja o conteúdo de /usr/share/zoneinfo/ .
d-i time/zone string US/Eastern

# Este preseeding costumava ser mais complexo; o método antigo está
# aqui documentado para estar completo. Se está a utilizar o Sarge, vai
necessitar deste método.

# Controla de o relógio do hardware está definido para UTC.
#base-config tzconfig/gmt boolean true
# Se você disse ao instalador que está nos Estados Unidos, então você
# pode definir o fuso horário utilizando esta variável.
# (As escolhas são: Eastern, Central, Mountain, Pacific, Alaska, Hawaii,
# Aleutian, Arizona East-Indiana, Indiana-Starke, Michigan, Samoa, outros)
base-config  tzconfig/choose_country_zone/US          select Eastern
# Se disse que está no Canadá.
# (As escolhas são: Newfoundland, Atlantic, Eastern, Central,
# East-Saskatchewan, Saskatchewan, Mountain, Pacific, Yukon, outros)
base-config  tzconfig/choose_country_zone/CA          select Eastern
# Se disse que está no Brazil. (As escolhas são: East, West, Acre,
# DeNoronha, outros)
base-config  tzconfig/choose_country_zone/BR          select East
# Muito países têm apenas um fuso horário. Se disse ao instalador que está
# num desses países, você pode escolher o fuso horário standard através desta
# questão.
base-config  tzconfig/choose_country_zone_single      boolean true
# Esta pergunta é feita como recurso para outros países que não os
# listados acima, que têm mais de um fuso horário. você pode fazer o preseed de um dos
# fusos horários, ou "outros".
#base-config tzconfig/choose_country_zone_multiple    select 

#### Preparação de Contas.

# Para fazer o preseed à password de root, você tem de pô-la a descoberto neste
# ficheiro. Isso não é uma ideia muito boa, use com cautela!
#passwd passwd/root-password            password r00tme
#passwd passwd/root-password-again      password r00tme

# Se quer saltar a criação de uma conta de utilizador normal.
#passwd passwd/make-user                boolean false

# Em alternativa, pode fazer o preseed ao nome e password do utilizador.
#passwd passwd/user-fullname            string Debian User
#passwd passwd/username                 string debian
# As passwords deles, mas utilize com cautela!
#passwd passwd/user-password            password insecure
#passwd passwd/user-password-again      password insecure

#### Preparação do Apt.

# Esta questão controla qual a fonte que a instalação da segunda etapa vai utilizar
# para os pacotes. As escolhas são cdrom, http, ftp, filesystem, editar lista de fontes
# à mão
base-config  apt-setup/uri_type         select http

# Se você escolher http ou ftp, ser-lhe-á perguntado o país e o mirror.
base-config  apt-setup/country          select enter information manually
base-config  apt-setup/hostname         string http.us.debian.org
base-config  apt-setup/directory        string /debian
# Parar após escolher um mirror.
base-config  apt-setup/another          boolean false

# Você pode escolher instalar software contrib e non-free.
#base-config apt-setup/non-free         boolean true
#base-config apt-setup/contrib          boolean true

# Para permitir actualizações de segurança.
base-config  apt-setup/security-updates boolean true

#### Selecção de pacotes.

# Você pode escolher instalar qualquer combinação de tarefas que estejam
 # disponíveis. As tarefas disponíveis até à escrita deste documento 
# incluem: Ambiente Desktop, Servidor Web, Servidor de Impressão, Servidor
# de DNS, Servidor de Ficheiros, Servidor de Mail, Base de Dados SQL,
# Portátil, Sistema Padrão, selecção manual de pacotes. A última irá
# correr o aptitude. Você pode também escolher não instalar tarefas, e
# forçar a instalação de um conjunto de pacotes de alguma outra forma.
tasksel tasksel/first multiselect Desktop environment, Standard system
#tasksel tasksel/first multiselect Web server, Standard system

#### Configuração do Servidor de Mail.

# Durante uma instalação normal, o exim faz apenas algumas perguntas.
# Aqui está como evitar até essas. É possível um preseeding mais complicado.
exim4-config exim4/dc_eximconfig_configtype \
 escolher não configurar desta vez
exim4-config exim4/no
>config boolean true

# É boa ideia definir isto para qualquer que seja a conta que você escolha criar.
# Deixar o valor em branco resulta em o mail do postmaster ir para
# /var/mail/mail.
exim4-config exim4/dc_postmaster        string 

#### Configuração do X.

# Fazer o preseed a configuração do X do Debian é possível, mas provavelmente você tem de saber
# alguns detalhes sobre o hardware de vídeo da máquina, já que o configurador do
# X em Debian não faz a configuração automática de tudo.

# O X pode detectar o driver certo para algumas placas, mas se está a fazer preseed,
#você contorna o que foi detectado. Ainda assim, VESA vai funcionar na maioria dos casos.
#xserver-xfree86 xserver-xfree86/config/device/driver select vesa

# Um aviso acerca da auto-detecção do rato é que se falhar, o X vai tentar
# fazê-la sem parar. Se vai ser feito o preseed, existe a possibilidade de
# um ciclo infinito se o rato não for auto-detectado.
#xserver-xfree86 xserver-xfree86/autodetect_mouse     boolean true

# É recomendada a auto-detecção do monitor.
xserver-xfree86 xserver-xfree86/autodetect_monitor    boolean true
# Retire o comentário se tiver um ecrã LCD.
#xserver-xfree86 xserver-xfree86/config/monitor/lcd   boolean true
# O X tem três caminhos na configuração para o monitor. Aqui está como fazer o preseed:
# o caminho "medium", que está sempre disponível. O caminho "simple" pode não estar
# disponível, e o caminho "advanced" faz demasiadas questões.
xserver-xfree86  xserver-xfree86/config/monitor/selection-method \
    select medium
xserver-xfree86  xserver-xfree86/config/monitor/mode-list \
    select 1024x768 @ 60 Hz

#### Tudo o resto.

# Dependendo do software que você escolher instalar, ou se as coisas correrem mal
# durante o processo de instalação, é possível que outras questões possam ser
# colocadas. Você pode fazer o preseed também a essas, claro. Para obter uma lista de todas
# as possíveis questões que possam ser colocadas durante uma instalação, faça uma
# instalação, e depois corra estes comandos:
#   debconf-get-selections --installer 
> file
#   debconf-get-selections 
>
> file

# Se você quiser, pode incluir outros ficheiros de preseed neste.
# Quaisquer definições nesses ficheiros vão-se sobrepor às anteriores deste ficheiro.
# Pode ser listado mais do que um ficheiro, separado por espaços; todos serão
# carregados. Os ficheiros incluídos também podem ter directivas preseed/incluídas neles
# próprios. Note que se os ficheiros forem relativos, eles são tirados da
# mesma directoria que o ficheiros de preseed que os inclui.
#d-i preseed/include string x.cfg

# O instalador pode opcionalmente verificar checksums de ficheiros preseed
# antes de os utilizar. Actualmente apenas são suportados md5sums, liste os
# md5sums na mesma ordem da lista de ficheiros a incluir.
# (Checksums não são suportados no instalador sarge.)
#d-i pressed/include/checksum string 5da499872becccfeda2c4872f9171c3d

# Mais flexibilidade, isto corre um comando da shell e mostra os nomes dos
# ficheiros de preseed, inclui esses ficheiros. Por exemplo, para trocar configurações
# baseadas num particular dispositivo de armazenamento usb (neste caso, um
# leitor de cartões embebido):
#d-i preseed/include_command            string \
#    if $(grep -q "GUID: 0aec3050aec305000001a003" /proc/scsi/usb-storage-*/*); \
#    then echo kraken.cfg; else echo otherusb.cfg; fi