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
É 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.
. 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”. foo
/bar
?=valor
É 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.