B.2. Utilizar o preseed

Primeiro tem de criar um ficheiro de pré-configuração e colocá-lo no local a partir de onde o pretende utilizar. A criação do ficheiro de pré-configuração é descrita mais á frente neste apêndice. Colocá-lo no local correcto é razoavelmente simples para o preseed por rede ou se desejar ler o ficheiro a partir de uma disquete ou de uma pen usb. Se deseja incluir o ficheiro num CD ou DVD, terá de reconstruir a imagem ISO. Como ter o ficheiro de pré-configuração incluído no initrd está fora do âmbito deste documento; por favor consulte a documentação dos developers para o debian-installer

Um exemplo de ficheiro de pré-configuração que pode utilizar como base para o seu próprio ficheiro de pré-configuração está disponível a partir de https://www.debian.org/releases/buster/example-preseed.txt. Este ficheiro é baseado nos fragmentos de configuração incluídos neste apêndice.

B.2.1. Carregar o ficheiro de pré-configuração

Se está a utilizar o preseed por initrd tem apenas de certificar-se que um ficheiro chamado preseed.cfg foi incluído no directório raiz do initrd. O instalador irá automaticamente verificar se este ficheiro está presente e carregá-lo.

Para os outros métodos de preseed tem de indicar ao instalador qual o ficheiro a utilizar quando o arranca. Isto é normalmente feito ao passar um argumento de arranque ao kernel, quer manualmente no arranque do sistema ou ao editar o ficheiro de configuração do gestor de arranque (p.e. syslinux.cfg) e adicionar esse parâmetro ao final da(s) linha(s) de "append" para o kernel.

Se especificar um ficheiro de pré-configuração na configuração do gestor de arranque, você pode alterar a configuração de modo a não precisar de carregar em enter para arrancar o instalador. Para o syslinux isto significa indicar o 'timeout' para 1 em syslinux.cfg.

Para ter a certeza que o instalador obtém o ficheiro de pré-configuração correcto, opcionalmente pode especificar 'checksum' para esse ficheiro. Actualmente este tem de ser um 'md5sum', e se for especificado deve coincidir com o ficheiro de pré-configuração ou o instalador irá recusar-se a utilizá-lo.

Parâmetros de arranque a especificar:
- se estiver a arrancar pela rede:
  preseed/url=http://host/caminho/para/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- ou 
  preseed/url=tftp://host/caminho/para/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- se estiver a arrancar por um CD remastered:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- se estiver a instalar por um meio USB (coloque o
  ficheiro de pré-configuração no directório raiz da pen USB):
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

Note que quando são passados como parâmetros de arranque preseed/url pode ser abreviado para apenas url, preseed/file para file preseed/file/checksum para preseed-md5.

B.2.2. Utilizar parâmetros de arranque para fazer preseed a questões

Se um ficheiro de pré-configuração não puder ser utilizado para fazer preseed a algumas etapas, a instalação pode mesmo assim ser totalmente automatizada, pois pode passar valores de preseed na linha de comandos quando arrancar o instalador.

Os parâmetros de arranque também podem ser utilizados se você não quiser mesmo utilizar o preseed, mas apenas quiser fornecer uma resposta a uma questão específica. Alguns exemplos onde isto pode ser útil estão documentados noutro local deste manual.

Para definir um valor para ser utilizado dentro do debian-installer, passe apenas caminho/para/variável=valor para quaisquer das variáveis de preseed listadas nos exemplos neste apêndice. Se um valor é para ser utilizado para configurar pacotes para o sistema alvo, você tem de acrescentar antes o dono[18] da variável como em dono:caminho/para/variável=valor. Se não especificar o dono, o valor da variável não será copiado para a base de dados debconf no sistema alvo e assim ficará por utilizar durante a configuração do pacote relevante.

Normalmente, fazer preseed, desta forma, a uma questão significa que a questão não será colocada. Para definir um valor por omissão específico para uma questão, mas mesmo assim a questão ser colocada, utilize ?= como operados em vez de =. Veja também Secção B.5.2, “Utilizar o preseed para alterar valores por omissão”.

Note que algumas variáveis que são frequentemente definidas na prompt de arranque têm uma abreviatura. Se estiver disponível uma abreviatura, será utilizada nos exemplos deste apêndice em vez da variável completa. Em particular. Por exemplo, a variável preseed/url tem a abreviatura url. Outro exemplo é a abreviatura tasks, que se traduz como tasksel:tasksel/first.

Um --- nas opções de arranque tem um significado especial. Os parâmetros do kernel que aparecem depois do último --- podem ser copiados para a configuração do gestor de arranque no sistema instalado (se for suportado pelo instalador para o gestor de arranque). O instalador irá filtrar automaticamente quaisquer opções (tais como opções de pré-configuração) que reconheça.

[Nota] Nota

Os actuais kernels (2.6.9 e posteriores) aceitam um máximo de 32 argumentos pela linha de comandos e 32 variáveis de ambiente, incluindo quaisquer escolhas acrescentadas por omissão para o instalador. Se estes números forem excedidos, o kernel irá criar um "panic" (estourar). (Para kernels anteriores, estes números eram mais baixos.)

Para a maioria das instalações algumas das escolhas por omissão no ficheiro de configuração do bootlader, como por exemplo vga=normal, podem ser removidas de forma segura e irá permitir adicionar mais opções para o preseeding.

[Nota] Nota

Pode não ser sempre possível especificar valores com espaços para os parâmetros de arranque, mesmo que os delimite com aspas.

B.2.3. Modo Auto

Existem várias funcionalidades do Instalador de Debian que se combinam para permitirem linhas de comandos simples na prompt de arranque para resultarem em complexas instalações automáticas personalizadas.

Isto é activado ao escolher no arranque a opção Automated install, também chamada de auto em algumas arquitecturas ou métodos de arranque. Nesta secção, auto não é um parâmetro, significa escolher essa opção de arranque, e acrescentar os seguintes parâmetros de arranque na prompt de arranque.

Para ilustrar isto, aqui estão alguns exemplos que podem ser utilizados na prompt de arranque:

auto url=autoserver

Isto baseia-se na existência de um servidor de DHCP que levará a máquina ao ponto em que o autoserver possa ser resolvido pelo DNS, talvez após acrescentar o domínio local se isso foi disponibilizado pelo DHCP. Se isto foi feito num sitio onde o domínio é example.com, e isto resultar numa configuração de DHCP razoavelmente sã, isto iria resultar no ficheiro de preseed ser obtido de http://autoserver.example.com/d-i/buster/./preseed.cfg.

A última parte desse url (d-i/buster/./preseed.cfg) é retirada de auto-install/defaultroot. Por omissão inclui o directório buster para permitir que futuras versões especifiquem o seu próprio nome de código para deixar as pessoas migrar para o seguinte de uma forma controlada. A parte do /./ é utilizada para indicar uma raiz relativa à qual possam ser ancorados caminhos subsequentes (para utilizar em preseed/include e preseed/run). Isto permite que os ficheiros sejam especificados quer como URLs completos, caminhos que começam por / que estão assim ancorados, ou mesmo como caminhos relativos à localização onde foi encontrado o último ficheiro preseed. Isto pode ser utilizado para construir scripts mais portáveis onde uma hierarquia completa de scripts pode ser movida sem estragar nada, por exemplo copiar os ficheiros para um stick USB quando estes começaram num servidor web. Neste exemplo, se o ficheiro de preseed define preseed/run para /scripts/late_command.sh então o ficheiro será obtido a partir de http://autoserver.example.com/d-i/buster/./scripts/late_command.sh.

Se não existir uma infra-estrutura local de DHCP ou de DNS, ou se não desejar utilizar o caminho por omissão para o preseed.cfg, ainda assim pode utilizar um url explícito, e se não utilizar o elemento /./ será ancorado ao inicio do caminho (i.e. o terceiro / no URL). Está aqui um exemplo que necessita de suporte mínimo da estrutura de rede local:

auto url=http://192.168.1.2/path/to/mypreseed.file

A forma como funciona isto é:

  • se faltar o protocolo ao URL, é assumido http,

  • se a secção do hostname não tiver pontos finais, tem acrescentado o domínio derivado do DHCP, e

  • se não existir nenhum / depois do hostname, então é acrescentado o caminho por omissão.

Além de especificar o url, também pode especificar configurações que não afectam directamente o comportamento do próprio debian-installer, mas podem ser passadas através de scripts especificadas utilizando preseed/run no ficheiro preseed carregado. Actualmente, o único exemplo disto é auto-install/classes, que tem uma abreviatura classes. Isto pode ser utilizado da seguinte forma:

auto url=example.com classes=class_A;class_B

As classes podem por exemplo denotar o tipo de sistema a ser instalado, ou a localização a ser utilizada.

Claro que é possível estender este conceito, e se o fizer, é razoável utilizar o namespace auto-install para isto. Por isso poderá ter algo do tipo auto-install/style que é então utilizado nos seus scripts. Se acha que necessita fazer isto, por favor mencione-o na mailing list para que nós possamos evitar conflitos de namespace, e talvez acrescentar um alias ao parâmetro para si.

A escolha de arranque auto ainda não está definida em todas as arquitecturas. O mesmo efeito pode ser alcançado ao simplesmente acrescentar os dois parâmetros auto=true priority=critical à linha de comandos do kernel. O parâmetro do kernel auto é uma abreviatura para auto-install/enable e defini-lo como true atrasa as questões do locale e do teclado até que exista a possibilidade de fazer preseed a estas, enquanto que priority é uma abreviatura para debconf/priority e defini-la como critical previne que sejam colocadas quaisquer questões com prioridade inferior.

Opções adicionais que podem ter interesse enquanto tenta automatizar uma instalação enquanto utilizar DHCP são: interface=auto netcfg/dhcp_timeout=60 que faz com que a máquina escolha a primeira placa de rede viável e seja mais paciente com a espera da resposta ao seu pedido DHCP.

[Dica] Dica

Em exemplo extensivo acerca de como utilizar esta plataforma de trabalho, incluindo scripts e classes de exemplo, pode ser encontrado no website do developer. Os exemplos disponíveis também mostram muitos outros efeitos agradáveis que podem ser alcançados através do uso criativo da pré-configuração.

B.2.4. Abreviaturas úteis com o preseed

Os seguintes aliases podem ser úteis ao utilizar (modo auto) preseeding. Note que estes são apenas abreviaturas para os nomes das questões, e você tem também de especificar sempre um valor: por exemplo, auto=true ou interface=eth0.

priority debconf/priority
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
theme debian-installer/theme
auto auto-install/enable
classes auto-install/classes
ficheiro preseed/file
url preseed/url
domain netcfg/get_domain
hostname    netcfg/get_hostname
interface netcfg/choose_interface
protocol mirror/protocol
suite mirror/suite
modules anna/choose_modules
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop tasksel:tasksel/desktop
dmraid disk-detect/dmraid/enable
keymap keyboard-configuration/xkb-keymap
preseed-md5 preseed/file/checksum

B.2.5. Utilizar um servidor de DHCP para especificar ficheiros de pré-configuração

Também é possível utilizar DHCP para especificar um ficheiro de pré-configuração a fazer download a partir da rede. DHCP permite especificar um nome de ficheiro. Normalmente este é um ficheiro para fazer netboot, mas se for um URL então o meio de instalação que suporte preseed através da rede irá fazer o download do ficheiro a partir do URL e utilizá-lo como ficheiro de pré-configuração. Aqui está um exemplo de como configurar o dhcpd.conf para a versão 3 do servidor ISC DHCP (o pacote Debian isc-dhcp-server).

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

Note que o exemplo acima limita este ficheiro a clientes DHCP que se identifiquem a eles próprios como "d-i", por isso não irá afectar cliente DHCP normais, mas apenas o instalador. Pode também colocar o texto num bloco para apenas um host, para evitar que seja feito preseed a todas as instalações na sua rede.

Uma boa forma de utilizar o preseed de DHCP é fazer o preseed apenas de valores específicos para a sua rede, tais como o mirror Debian a utilizar. Desta forma as instalações na sua rede irão sempre obter uma boa escolha de mirror, mas o resto da instalação pode ser feita interactivamente. Utilizar o preseed de DHCP para automatizar totalmente as instalações de Debian deve ser feito com cuidado.



[18] O dono da variável debconf (ou template) é normalmente o nome do pacote que contém o correspondente template debconf. Para variáveis utilizadas no próprio instalador o dono é d-i. Os templates e variáveis podem ter mais de um dono que ajuda a determinar se podem ser removidos da base de dados debconf se o pacote tiver sido purgado.