HOWTO: Boot remoto de resgate

De Wiki Hackstore

Introdução

O funcionamento do boot remoto no Yaxkin funciona da seguinte maneira:

  1. A BIOS do computador entra no modo PXE BOOT / Boot via LAN e procura por um servidor DHCP.
  2. O servidor DHCP envia para o computador um endereço de IP que ele pode usar, o endereço de IP de um servidor TFTP para ele fazer o download de um boot loader e o nome do arquivo do boot loader.
  3. O computador acessa o boot loader via TFTP, que carrega o kernel do Linux (também via TFTP).
  4. Se algum dos passos acima falhar, a BIOS passa ao próximo método de boot.
  5. O kernel do Linux faz uma nova requisição DHCP para configurar sua placa de rede automaticamente e acessar seu sistema de arquivos raiz a partir de um servidor NFS. O IP deste servidor NFS é passado como parâmetro do kernel do Linux.
  6. O kernel chama o '/sbin/init' que executa o resto do linux que está instalado no diretório NFS instalado.

Para este sistema funcionar é necessário que todos os servidores tenham a seguinte ordem de boot:

  • PXE / Boot via LAN
  • HD

No Yaxkin o servidor de DHCP está sempre desligado por padrão e então os computadores sempre dão boot no sistema operacional instalado localmente.

Criando um servidor de boot remoto

Referência: http://gentoo-wiki.com/HOWTO_Gentoo_Diskless_Install

Basta seguir os passos do guia acima. No nosso caso, ao inves de usar o diretório /diskless/eta vamos usar /diskless apenas. No nosso caso também colocamos o kernel do Linux em /diskless/boot/bzImage. O kernel usado deve funcionar em todos os servidores. Preferencialmente utilize o mesmo kernel padrão oficial dos servidores (desde que esse tenha suporte a IP=DHCP e NFSROOT=).

Se o pxegrub não funcionar (como foi meu caso), vamos usar o pxelinux.0 do pacote sys-boot/syslinux. Dê um emerge no sys-boot/syslinux. Isso vai criar o arquivo /usr/lib/syslinux/pxelinux.0. Copie-o para /diskless/boot. Crie um arquivo /diskless/boot/pxelinux.cfg/default contendo:

DEFAULT bzImage ip=dhcp root=/dev/nfs nfsroot=(IP DO SERVIDOR NFS):/diskless

O bloco de um servidor no dhcpd.conf, com o pxelinux.0, fica assim:

host teste151-rescue {
       hardware ethernet 00:11:2f:ee:ac:7d;
       fixed-address 192.168.0.241;
       next-server 192.168.0.8;
       filename "/boot/pxelinux.0";
}