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 correto é razoavelmente simples para o preseed por rede ou se desejar, ler o ficheiro a partir de uma pen usb. Se desejar incluir o ficheiro numa imagem ISO de instalação, terá de reconstruir a imagem. 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/bookworm/example-preseed.txt. Este ficheiro é baseado nos fragmentos de configuração incluídos neste apêndice.
Se estiver a utilizar o preseed por initrd tem apenas de certificar-se que um ficheiro chamado preseed.cfg
foi incluído no diretó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 correto, opcionalmente pode especificar um checksum para esse ficheiro. Atualmente 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 uma imagem de instalação reconstruída: 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 diretó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
.
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 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
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, terá de acrescentar antes o dono[18] da variável como em 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. dono
:caminho/para/variável
=valor
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 a Secção B.5.2, “Utilizar o preseed para alterar valores predefinidos”.
Note que algumas variáveis que são frequentemente definidas na linha de comandos 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. 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 | |
---|---|
Os kernel atuais (2.6.9 e posteriores) aceitam um máximo de 32 argumentos pela linha de comandos e 32 variáveis de ambiente, incluindo quaisquer opções acrescentadas por predefinição ao instalador. Se estes números forem excedidos, o kernel irá fazer "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 | |
---|---|
Pode não ser sempre possível especificar valores com espaços para os parâmetros de arranque, mesmo que os delimite com aspas. |
Existem várias funcionalidades do Instalador de Debian que se combinam para permitirem linhas de comandos simples na linha de comandos de arranque para resultarem em complexas instalações personalizadas automáticas.
Isto é ativado ao escolher no arranque a opção Automated install
, também chamada de auto
em algumas arquiteturas ou métodos de arranque. Nesta seção, auto
não é um parâmetro, significa escolher essa opção de arranque, e acrescentar os seguintes parâmetros de arranque na linha de comandos de arranque.
Para ilustrar isto, aqui estão alguns exemplos que podem ser utilizados na linha de comandos 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 em http://autoserver.example.com/d-i/bookworm/./preseed.cfg
.
A última parte desse url (d-i/bookworm/./preseed.cfg
) é retirada de auto-install/defaultroot
. Por predefinição inclui o diretório bookworm
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 uma pen 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/bookworm/./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 seção do hostname não tiver pontos finais, é acrescentado o domínio derivado de DHCP, e
se não existir nenhum /
depois do hostname, então é acrescentado o caminho predefinido.
Além de especificar o url, também pode especificar configurações que não afetam diretamente o comportamento do próprio debian-installer
, mas podem ser passadas através de scripts especificados utilizando preseed/run
no ficheiro preseed carregado. Atualmente, 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 achar que necessita de fazer isto, por favor mencione-o na mailing list <debian-boot@lists.debian.org>
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 arquiteturas. 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 | |
---|---|
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. |
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 |
auto | auto-install/enable |
classes | auto-install/classes |
ficheiro | preseed/file |
url | preseed/url |
theme | debian-installer/theme |
language | debian-installer/language |
country | debian-installer/country |
locale | debian-installer/locale |
keymap | keyboard-configuration/xkb-keymap |
modules | anna/choose_modules |
firmware | hw-detect/firmware-lookup |
interface | netcfg/choose_interface |
domain | netcfg/get_domain |
hostname | netcfg/get_hostname |
protocol | mirror/protocol |
suite | mirror/suite |
recommends | base-installer/install-recommends |
tasks | tasksel:tasksel/first |
desktop | tasksel:tasksel/desktop |
preseed-md5 | preseed/file/checksum |
Aqui estão alguns exemplos de como parecer a linha de comandos (terá de adaptar isto à sua necessidade).
Para definir Português como linguagem e Portugal como país: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=pt country=PT --- quiet # Para definir Inglês como linguagem e Português como país e utilizar uma disposição de teclado de Português: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=PT locale=en_US.UTF-8 keymap=pt --- quiet # Para instalar o ambiente de trabalho MATE: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet # Para instalar a tarefa web-server: /install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---
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á afetar clientes 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 interativamente. 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.