B.5. Opções avançadas

B.5.1. Executar comandos personalizados durante a instalação

Uma opção muito poderosa e flexível oferecida pelas ferramentas de pré-configuração é a habilidade de correr comandos ou scripts em certos pontos da instalação.

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

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

# Este comando é corrido mesmo antes da instalação terminar, mas quando
# ainda existe um directório /target utilizável. Pode fazer chroot a
# /target e utilizá-lo directamente, ou utilizar o apt-get install e
# comandos no alvo para instalar facilmente pacotes e correr comandos
# no sistema alvo.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

B.5.2. Utilizar o preseed para alterar valores por omissão

É possível utilizar o preseeding para alterar a resposta por omissão a uma questão, mas a questão será colocada na mesma. Para fazer tem de ser feito o reset para “false” á flag seen após definir o valor para a questão.

d-i foo/bar string value
d-i foo/bar seen false

Pode ser alcançado o mesmo efeito para todas as questões definindo na prompt de arranque o parâmetro preseed/interactive=true. Isto também pode ser útil para testar ou depurar o seu ficheiro de pré-configuração. Se está a fazer preseed utilizando parâmetros de arranque, pode fazer o instalador colocar a questão correspondente utilizando o operador “?=”, i.e. foo/bar?=valor. Claro que isto só terá efeito para parâmetros que correspondam ás questões mostradas durante a instalação e não para parâmetros “internos”.

B.5.3. Carregamento em série dos ficheiros de pré-configuração

É possível incluir outros ficheiros de pré-configuração a partir de um ficheiro de pré-configuração. Quaisquer definições nesses ficheiros irão sobrepôr-se às definições pré-existentes carregadas anteriormente. Isto torna possível pôr, por exemplo, definições gerais de rede para o seu local num ficheiro e mais definições específicas para certas configurações noutros ficheiros.

# Podem ser listados mais do que um ficheiro, separados por espaços;
# todos serão carregados. Os ficheiros incluídos podem ter também
# directivas de preseed/include deles próprios. Note que se os nomes dos
# ficheiros forem relativos, serão tirados do mesmo directório do ficheiro
# de pré-configuração que os incluí.
#d-i preseed/include string x.cfg

# O instalador pode opcionalmente verificar os checksums dos ficheiros de
# pré-configuração antes de os utilizar. Actualmente apenas são
# suportados md5sums, liste os md5sums na mesma ordem que a lista de
# ficheiros a incluir.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d

# De forma mais fléxivel, isto corre um comando da shell e se mostrar os
# nome dos ficheiros de pré-configuração, inclui esses ficheiros. 
#d-i preseed/include_command \
#      string echo if [ "`hostname`" = bob ]; then echo bob.cfg; fi

# Da forma mais flexível, isto faz o download um programa e corre-o.
# O programa pode utilizar comandos como o debconf-set para manipular a
# base de dados do debconf.
# Pode ser listado mais do que um script, separado por espaços.
# Note que se os nomes dos ficheiros são relativos, serão retirados do mesmo
# directório do ficheiro de pré-configuração que os corre.
d-i preseed/run string foo.sh

Também é possível carregar a partir do initrd ou da fase de preseed de ficheiro, para o preseed de rede definindo preseed/url nos ficheiros anteriores. Isto irá fazer com que seja feito preseed por rede quando a rede ficar disponível. Tem de ter cuidado ao fazer isto, já que existem duas execuções distintas de preseed, significa por exemplo que pode ter outra oportunidade de correr o comando preseed/early, a segunda acontece após a rede estar disponível.