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.
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