Desculpem-me pela demora em postar esta segunda parte... planejava fazê-lo no último Sábado ou Domingo, mas a preguiça não permitiu.
Indo ao assunto deste post, a parte do preseed não é complicada (apesar de eu ter levado uns 2~3 dias para fazê-la funcionar devidamente, mas foi por problemas de "burrice" mesmo). No arquivo você define as respostas a todas as perguntas que são feitas durante a instalação do sistema, além de poder fazer algumas coisas mais, que não aparecem durante uma instalação convencional.
Quado gerei meu arquivo de preseed, utilizei como base o disponibilizado na própria documentação do Ubuntu (que, por sinal, é o mesmo da documentação do Debian). Ele já está bem completo e todo comentado, então, se precisarem de alguma opção que não for tratada aqui e tiverem dúvidas, não exitem em perguntar através dos comentários, pois eu tentarei ajudar.
Também gostaria de ressaltar que só falarei dos parâmetros que utilizei durante minha experiência com o assunto desta postagem. Não irei citar os demais, pois, além de não ter trabalhado com os mesmos, se fosse descrevê-los, o conteúdo iria ficar muito extenso, por isso recomendo a quem tiver dúvidas a fazer perguntas através dos comentários e também a dar uma olhada na própria documentação do Ubuntu, na parte que trata do conteúdo do arquivo de preseed.
Agora, vamos ao que realmente importa!
A sintaxe dos comandos é a seguinte:
<dono> <questão> <tipo> <valor>
Como exemplo, segue a linha abaixo.
d-i debian-installer/locale string en_US
No caso acima, o dono seria "d-i" (Debian Installer), a questão "debian-installer/locale", o tipo "string" e o valor "en_US".
A estrutura também segue algumas regrinhas, tais como:
- Deve haver apenas um espaço ou tabulação entre o "dono", a "questão", o "tipo" e o "valor";
- Uma linha pode ser quebrada em várias utilizando uma contra-barra ("barra invertida") no local da divisão (muito útil se for particionar o disco através do preseed);
- Algumas questões recebem valores na forma de "código", ao invés de seu valor em inglês, exibido em um instalação normal.
Para mais informações quanto a essas regras, questões, etc, dê uma olhada na própria documentação do Ubuntu!
Abaixo segue uma cópia de meu arquivo de preseed, sendo omitidos apenas os comentários e os valores de algumas questões:
d-i debian-installer/locale string pt_BR
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string br
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string meudominio
d-i netcfg/wireless_wep string
#d-i mirror/protocol string ftp
d-i mirror/country string enter information manually
d-i mirror/http/hostname string [ipDoServidorDeNetBoot]
d-i mirror/http/directory string /ubuntu/lucid/alternate
d-i mirror/http/proxy string
d-i mirror/suite string lucid
d-i mirror/udeb/components multiselect main, restricted
d-i clock-setup/utc boolean true
d-i time/zone string America/Sao_Paulo
d-i clock-setup/ntp boolean true
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/expert_recipe string boot-root :: 40 50 100 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /boot } . 10000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } . 7000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . 512 2000 2000 linux-swap method{ swap } format{ } .
d-i partman/default_filesystem string ext4
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i passwd/make-user boolean true
d-i passwd/root-password-crypted password [hash MD5 da senha do root]
d-i passwd/user-fullname string Nome Completo Do Usuario
d-i passwd/username string nomeDoUsuario
d-i passwd/user-password-crypted password [hash MD5 da senha do usuário]
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
tasksel tasksel/first multiselect ubuntu-desktop
d-i pkgsel/include string openssh-server build-essential
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean false
d-i grub-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/password password [senha]
d-i grub-installer/password-again password [senha]
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean false
xserver-xorg xserver-xorg/config/device/driver select vesa
xserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method \
select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
select 1024x768 @ 60 Hz
Agora, comentando as linhas:
Nas questões abaixo eu passei a linguagem e o país ("pt_BR"), desativei a detecção automática do teclado e informei o código do layout do mesmo ("br").
d-i debian-installer/locale string pt_BR
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string br
Em seguida, "configurei" a rede, passando para o "netcfg" que a interface deve ser escolhida automaticamente, informando também uma entrada "qualquer" para o hostname (como todos os computadores utilizam o mesmo arquivo de preseed durante a instalação, não é interessante especificar o nome nele, senão todas possuirão o mesmo hostname), um domínio e desabilitei a questão sobre a chave WEP (no caso de haver uma interface wireless), passando uma chave "em branco".d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string meudominio
d-i netcfg/wireless_wep string
Depois, defini os mirrors da seguinte maneira:- Não informo o protolo, sendo considerado o valor padrão (não recordo se é ftp mesmo ou http);
- Também não informo o país;
- Passo o hostname do mirror que, neste caso, é o ip do servidor utilizado para o NetBoot;
- Informo o caminho para o mirror, que, considerando o que foi feito na parte 2, referente ao NetBoot, é "ubuntu/lucid/alternate" (o local onde foi montada a imagem do Ubuntu 10.04 alternate);
- Passo uma resposta em branco para a questão do proxy;
- Informo o nome da versão (neste caso, "lucid"), de modo a ele encontrar na imagem montada, se não me engano, dentro de "dists" (onde tem uma pasta lucid) o arquivo "Releases";
- Digo de onde (de que "repositórios") os componentes adicionais serão buscados/instalados.
#d-i mirror/protocol string ftp
d-i mirror/country string enter information manually
d-i mirror/http/hostname string ipDoServidorDeNetBoot
d-i mirror/http/directory string /ubuntu/lucid/alternate
d-i mirror/http/proxy string
d-i mirror/suite string lucid
d-i mirror/udeb/components multiselect main, restricted
No bloco a seguir, defino o relógio como sendo baseado no "fuso horário" UTC, a time zone como sendo de São Paulo (as time zones podem ser encontradas em "/usr/share/zoneinfo", em um sistema já instalado) e informo que será utilizado um servidor ntp para ajustar a hora (como não especifico um em especial, ele usará o padrão).d-i clock-setup/utc boolean true
d-i time/zone string America/Sao_Paulo
d-i clock-setup/ntp boolean true
Agora vem o particionamento:- Eu o defini como "regular" (pode ser "regular", "lvm" ou "crypto");
- Permiti a remoção de uma configuração LVM que venha a existir (se fosse encontrada, haveria um alerta durante a instalação);
- Permiti também a remoção de um arranjo RAID que venha a existir;
- Confirmei a escrita de partições LVM;
- Passei uma "receita" (não encontrei forma melhor de dizer que não fosse a tradução literal de "recipe") com as configurações das novas partições a serem criadas (entrarei em detalhers sobre isso em outro post, pois, se fosse fazê-lo aqui, este texto ficaria mais longo do que já está);
- Difini o sistema de arquivos padrão como sendo ext4 (talvez não fosse necessário fazer uso desta opção, pois no recipe eu já especifiquei o sistema de arquivos);
- Confirmei a escrita dos rótulos das partições e aquelas questões "chatas", perguntando se eu realmente desejo efetuar as alterações, pedindo para confirmar isso e aquilo.
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-auto/expert_recipe string boot-root :: 40 50 100 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /boot } . 10000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } . 7000 100000 1000000000 ext4 method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . 512 2000 2000 linux-swap method{ swap } format{ } .
d-i partman/default_filesystem string ext4
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
Aqui, eu:- Confirmo a criação de um usuário normal (creio que não fosse necessário responder a questão, pois o valor padrão, se não me engano, é "true");
- Informo a senha do root de forma criptografada (posteriormente explicarei como criar o hash MD5);
- Passo o nome completo do usuário normal;
- Passo o log in dele (seu username propriamente dito);
- Informo a senha do mesmo de forma criptografada, assim como feito com o root;
- Confirmo previamente aquele aviso chato de senha fraca;
- Informo que o /home do usuário normal não deve ser criptografado.
d-i passwd/make-user boolean true
d-i passwd/root-password-crypted password [hash MD5 da senha do root]
d-i passwd/user-fullname string Nome Completo Do Usuario
d-i passwd/username string nomeDoUsuario
d-i passwd/user-password-crypted password [hash MD5 da senha do usuário]
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
Nas linhas abaixo eu apenas adiciono ao apt os repositórios "restricted" e "universe".d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
Nesta parte eu selecionei os pacotes a serem instalados e indiquei como as atualizações serão efetuadas. Especificamente, escolho os pacotes do Ubuntu Desktop (instalo a versão Desktop), como adicionais tenho o Open SSH e o build-essential, e, com relação as atualizações, através do "none", digo que as atualizações de segurança deve ser instaladas apenas manualmente. Quanto a "questão" pkgsel/updatebd", se receber true, pelo que entendi, ela atualiza o banco de dados do locate, o que pode levar algum tempo, então, respondi false, de modo a ganhar tempo. tasksel tasksel/first multiselect ubuntu-desktop
d-i pkgsel/include string openssh-server build-essential
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean false
Agora defini algumas questões quanto ao Boot Loader:- Não pulei a instalção do Grub (o que resultaria na instalação do lilo);
- Confirmei a instalação do mesmo na MBR apenas se nenhum outro sistema for encontrado (o HD já terá sido completamente formatado no momento, então, não haverá problemas);
- Por questões de segurança, optei por adicionar uma senha ao grub.
d-i grub-installer/skip boolean false
d-i grub-installer/only_debian boolean true
d-i grub-installer/password password [senha]
d-i grub-installer/password-again password [senha]
Neste pequeno pedaço, eu pulo o aviso de que a instalação foi concluída, reiniciando de imediato o PC, além de instruí-lo a não ejetar o CD, tendo em vista que é uma instalação pela rede, logo, não há CD.d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean false
Por fim, eu respondo a algumas questões do X.Como é feita uma instalação utilizando preseed, supostamente a escolha do driver de vídeo feita pelo X é ignorada, não sendo instalado o driver devido, então, eu informo que deverá ser instalado o vesa, que "funciona" praticamente com tudo quanto é VGA. Também o instruo a detectar o monitor automaticamente e escolho a configuração "medium" (creio que seja quanto aos efeitos gráficos), informando, depois de tudo, que a resolução do monitor deve ser de 1024 x 768 @ 60Hz
xserver-xorg xserver-xorg/config/device/driver select vesa
xserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method \
select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
select 1024x768 @ 60 Hz
Observações:
Como o hostname recebeu apenas uma resposta "provisória", torna-se necessário informá-lo como um parâmetro na hora da instalação.
hostname=nomeDaMaquina
Devido o fato de os mirrors terem sido apontados para o CD (imagem montada), é preciso alterá-los após a instalação. Para isso, basta editar o arquivo "/etc/apt/sources.list" e corrigir as URLs dos repositórios (substituir o IP do servidor de NetBoot pelo endereço do repositório na WEB). Abaixo segue um exemplo:
#Substituir:
deb http://[ipDoServidorDeNetBoot]/ubuntu/lucid/alternate lucid multiverse
#Por:
deb http://br.archive.ubuntu.com/ubuntu/ lucid multiverse
Estando com meu arquivo de preseed pronto, eu o salvei em "/var/lib/tftpboot/ubuntu/" com o nome de "preseed.cfg". Após isso, bastou dar boot pela rede no Ubuntu 10.04 ALTERNATE, no menu com as opções de instalação apertar
auto=true priority=critical url=http://[servidorDeNetBoot]/ubuntu/preseed.cfg console-keymaps-at/keymap=br locale=pt_BR hostname=nomeDaMaquina
Explicando os parâmtros passados:- auto=true > Indica que a instalação será feita de maneira automática;
- priority=critical > Indica a prioridade do debconf como "critical" (prioridade crítica);
- url=http://[servidorDeNetBoot]/ubuntu/preseed.cfg > especifica a localização do arquivo de preseed;
- console-keymaps-at/keymap=br > Indica o "mapa de caracteres" do teclado como sendo o do Brasil, pois, como foi dado boot pela rede e o arquivo de preseed ainda não foi carregado, ele usa uma configuração padrão (creio que seja o padrão norte-americano ou um "internacional");
- locale=pt_BR > praticamente o mesmo caso citado acima, mudando apenas que aqui se refere ao idioma a e localização;
- hostname=nomeDaMaquina > especifica o nome do computador, assim como eu, anteriormente, já havia citado que seria necessário ser feito.
Tem como passar muitos outros parâmetros, mas esses foram os que usei.
Depois disso é só apertar ENTER que a instalação irá se iniciar e seguirá de maneira completamente automática!
Se encontrarem algum erro no que foi descrito acima, por favor, avisem através dos comentários! Sei que tem algumas entradas no arquivo de preseed que são redundantes, então, se quiserem resaltá-las, o façam! Não as removi ainda, pois não tive tempo (Ok... na realidade tive, porem não me lembrei) de testar o arquivo sem as mesmas.
Se tiverem qualquer dúvida, novamente deixo a recomendação de recorrerem aos comentários (tentarei ajudar na medida do possível)!
Espero que este post tenha sido útil. Na próxima parte, descreverei a configuração de um servior "apt-cacher", cuja função é criar um cache local dos pacotes baixados.
Migração Linux - parte 2 / Migração Linux - parte 4
As formatações efetuadas nos comandos e trechos de arquivos de configuração foram geradas utilizando a "ferramenta" Source Code Formatter, encontrada neste link.
Nenhum comentário:
Postar um comentário