Instalando o Ubuntu 7.10 via boot remoto

A nova versão do Ubuntu (7.10, codinome Gutsy Gibbon), foi lançada recentemente e resolvi testá-la, como sempre. O problema é que meu desktop tem pouca comunicação com o mundo através de mídias removíveis (sem drives de cd ou disquete). Anteriormente este problema foi resolvido com a ajuda do Debian Etch instalado lá previamente, criando uma partição com a imagem de instalação e ajustando o gerenciador de boot para inicializar o instalador de dentro do próprio HD.

Desta vez, para não ficar fazendo tudo sempre da mesma forma, resolvi instalar o Ubuntu 7.10 no desktop através de boot remoto, mantendo todos os arquivos necessários para instalação no notebook. A idéia pode ser expandida para a construção de um servidor de instalação, que pode ser bastante útil para um ambiente com vários computadores.

Vou explicar rapidamente qual é a idéia: considerando que seu computador é relativamente novo, verifique na BIOS se é possível dar boot via protocolo PXE através da sua placa de rede. Se sim, coloque-a para tentar o boot prioritariamente aos outros dispositivos, como cdrom e hd. Se sua placa não tiver suporte ao boot via PXE, você precisará de um drive de disquete e de uma imagem do Etherboot para sua placa.

Uma vez que a placa inicializa sua rotina de boot, ela aguardará por um servidor DHCP, para fornecer informações de configuração da rede. Uma dessas informações será a localização de um arquivo de boot para ser baixado via TFTP e executado. Este arquivo de boot irá baixar um kernel, que por sua vez, virá acompanhado de um sistema de arquivos que contém o instalador, tornando possível o boot completo do computador. Mais na frente haverá o problema da escolha da fonte dos pacotes de softwares usando na instalação. Como já baixamos a imagem de cd do Ubuntu 7.10, sabemos que ela já possui esses pacotes. O que faremos é expor este pacotes em um servidor web para serem baixados via HTTP pela máquina que está realizando a instalação.

O que precisamos ter instalado no servidor de instalação são justamente os softwares servidores que responderão por cada uma das requisições citadas anteriormente por cada cliente. No servidor, instale os seguintes pacotes (estou considerando que o servidor roda Debian Etch ou o próprio Ubuntu 7.10):

# apt-get install apache2 tftpd-hpa dhcp3-server

Com o Apache criaremos o “mirror” local dos pacotes (na verdade só disponibilizaremos os pacotes do cd de instalação alternate do ubuntu). Com o TFTPd, permitiremos o download do kernel e do sistema de arquivos que contém o instalador, e por fim, com o DHCP server, iremos informar tudo o que o cliente precisa saber para iniciar o processo de boot.

Neste ponto é importante que você já tenha baixado a imagem do cd de instalação alternate do Ubuntu 7.10. No próximo passo, estou movendo-o para o diretório apropriado, montando-o para não precisar queimar um cd para ter acesso aos dados, posicionando corretamente os componentes mencionados anteriormente que permitem o boot remoto (o cd alternate é o único que os possui).

# mv ubuntu.iso /var/lib/tftpboot
# cd /var/lib/tftpboot
# mkdir ubuntu
# mount -o loop ubuntu.iso ubuntu/
# cp -R ubuntu/install/netboot/ubuntu-installer .
# cp ubuntu-installer/i386/pxelinux.0 .
# cp -R ubuntu-installer/i386/pxelinux.cfg .

Agora edite o arquivo /etc/default/tftpd-hpa, para que possamos inicializá-lo em modo standalone, sem precisar do inetd. Deixe-o assim:

RUN_DAEMON=”yes”
OPTIONS=”-l -s /var/lib/tftpboot”

Inicie o servidor tftp:

# /etc/init.d/tftpd-hpa start

Agora iremos configurar o servidor DHCP. Primeiramente indique em qual interface o servidor vai responder às requisições no arquivo /etc/default/dhcp3-server.

Depois configure sua rede da forma que achar melhor no arquivo /etc/dhcp3/dhcpd.conf. Não esqueça de indicar o nome do arquivo binário com o boot pxe e as informações de boot. Abaixo segue uma sugestão de configuração do servidor DHCP (arquivo dhcpd.conf):

ddns-update-style none;
option domain-name “seudominio.org”;
option domain-name-servers 200.194.96.34, 200.194.96.35;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.210;
filename “pxelinux.0″;
option routers 192.168.1.1;
}

Agora inicie o servidor DHCP:

# /etc/init.d/dhcp3-server start

Verifique o arquivo /var/log/syslog para checar se algum erro aconteceu durante a inicialização do dhcp.

O último passo é expor o conteúdo do cd pelo Apache, para que os pacotes sejam acessíveis via repositório HTTP:

# cd /var/www
# ln -s /var/lib/tftpboot/ubuntu/

Pronto! Basta ligar seu computador cliente (certificando-se que ele está dando boot prioritariamente pela placa de rede), aguardar o carregamento do instalador do Ubuntu e instalá-lo normalmente. Quando o instalador perguntar por que repositório de pacotes utilizar, vá para o primeiro da lista, que é para indicar manualmente, e coloque o endereço IP do computador que está no papel de servidor de instalação. Se precisar instalar em mais computadores, basta colocá-los na mesma rede e ligar!

Artigos Relacionados:


Sobre este artigo