PXE (Preboot eXecution Environment, pronunciado pixie)
Veja Wikipedia: PXE
Como funciona?
Este é o meu entendimento!
- A máquina do cliente está ligada. O BIOS procura dispositivos. Em seguida, segue tentando carregar o carregador de boot a partir do dispositivo necessário, conforme listado em Boot Order / Sequence . Ele carrega o PXE da ROM da placa de rede.
-
PXE (do lado do cliente) transmite uma solicitação para um IP. Resposta do servidor DHCP com as informações necessárias: IP, IP do próximo servidor (IP do servidor TFTP),
pxelinux.0
(nome do arquivo do carregador de boot PXE), ... etc -
O PXE (lado do cliente) solicita o arquivo
pxelinux.0
do servidor TFTP, carrega-o na RAM e passa o controle parapxelinux.0
.pxelinux.0
obtém o arquivo de configuração de inicialização do servidor TFTP com nome como:
(se não existe, tenta com o próximo)- UUID
- MAC
- IP em maiúsculas
- Uma parte do IP
- Descarta o
default
file
-
Qualquer opção de usuário ou entrada de menu padrão.
pxelinux.0
solicita o kernel correspondente e o RAMDisk do servidor TFTP e os carrega na RAM.Em seguida, passa os parâmetros de inicialização e o controle para o kernel carregado.
-
O kernel carrega as partes restantes do servidor TFTP ou de qualquer outro servidor de protocolo, dependendo de seus recursos / propriedades.
Configuração do servidor
Existem várias maneiras de configurar o servidor PXE, este é um deles.
Estas instruções foram testadas no Ubuntu 9.10 & amp; Ubuntu 10.04 em uma máquina real. Eles ainda devem ser válidos com apenas algumas alterações. (Atualizado e testado para o Ubuntu 14.04 no VirtualBox, verifique as revisões de versões antigas)
Meu alvo era o PartedMagic 4.5 , ele deve ser semelhante ao Ubuntu ou qualquer distribuição Linux.
-
Instalar o DHCP & amp; Pacotes TFTP
sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
-
Configuração do DHCP
-
Edite
/etc/default/isc-dhcp-server
, interface Ethernet para o serviço DHCPINTERFACES="eth0"
-
Edite o
/etc/dhcp/dhcpd.conf
ou/etc/ltsp/dhcpd.conf
que existe, configuração do serviço DHCPConfigurações específicas do PXE:
filename
& amp;next-server
default-lease-time 600; max-lease-time 7200; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.50 192.168.10.100; option subnet-mask 255.255.255.0; option routers 192.168.10.123; option broadcast-address 192.168.10.255; filename "pxelinux.0"; next-server 192.168.10.123; }
-
Configure um IP estático para
eth0
,192.168.10.123
no meu caso usando o gerenciador de rede para edição de desktop ou/etc/network/interfaces
para edição do servidor.auto eth0 iface eth0 inet static address 192.168.10.123 netmask 255.255.255.0 network 192.168.10.0 broadcast 192.168.10.255
Reinicialize a interface de rede:
sudo ifdown eth0 sudo ifup eth0
-
Reinicie o serviço
sudo service isc-dhcp-server restart
Verifique o status
netstat -lu
Saída
Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:bootpc *:*
-
-
Configuração TFTP
-
Edite
/etc/inetd.conf
, remova#<off>#
do início detftp
linha ou adicione, se não estiver lá, em#:BOOT:
comentário. (Ignore isso com systemd, 15.10 e posterior)tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
-
Ativar serviço de inicialização para
inetd
sudo update-inetd --enable BOOT
-
Iniciar serviço
sudo service openbsd-inetd restart sudo service tftpd-hpa restart
Verifique o status
netstat -lu
Saída
Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:tftp *:*
-
-
Configuração dos arquivos de inicialização PXE
-
Descompacte
pmagic-pxe-4.5.zip
. Sepxelinux.0
não estiver disponível, obtenha o pacotesysliux-common
instalado em/usr/lib/syslinux/pxelinux.0
, Projeto Syslinux ou Ubuntu Netboot Image .Coloque-os em estrutura semelhante.
/var/lib/tftpboot/ |-- pxelinux.0 |-- pxelinux.cfg/ | '-- default '-- pmagic/ |-- bzimage '-- initramfs
-
Edite
/var/lib/tftpboot/pxelinux.cfg/default
, se necessário, caminhos de exemplo:pmagic/bzimage
& amp;pmagic/initramfs
DEFAULT partmagic LABEL partmagic MENU LABEL PartMagic 4.5 KERNEL pmagic/bzimage APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
-
Configurar permissões corretas
sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \; sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
-
Configuração do cliente
Altere a ordem de inicialização do BIOS por uma vez usando F9 ou F12 , para configuração permanente da configuração da BIOS DEL , F2 ou F12 . (Dependendo da marca da máquina)
Mover para o topo: [PXE | NIC | LAN | Ethernet | Network]
.
Notas
-
inetutils-inetd
ouxinetd
podem ser usados em vez deopenbsd-inetd
, algunsinetd
etapas são diferentes. -
O diretório raiz do TFTP pode ser alterado de
/etc/default/tftpd-hpa
. Lembre-se de atualizar/etc/inetd.conf
também. -
Muitos suporte de distribuição carregando RAMDisk através de muitos protocolos: SSH (SFTP), SMB, NFS ... Exemplo de suporte ao Ubuntu NFS.
-
Algumas placas de rede antigas não suportam PXE, iPXE ( Ex. gPXE ou Etherboot ) pode ser usado, seja em disquete, unidade USB, disco rígido (
/boot
partição) ou até mesmo flash para ROM (apenas alguns NIC suportados). O GRUB2 tem módulo para suportar a inicialização usando o PXE.Veja também Wikipedia: gPXE e ROM-O-matic .
-
Ubuntu Netboot Image de cdimage.ubuntu.com / netboot / fornece a instalação do Ubuntu pela rede e ele pedirá para baixar todos os pacotes requeridos do espelho oficial ou um local se você tiver um.
A maioria dos usuários está procurando a inicialização da imagem ao vivo por meio do PXE. Esta questão foi apenas para configurar um servidor PXE. Veja Wiki do Ubuntu: Instalação - LocalNet
-
O menu PXE pode ser personalizado, o melhor modelo para aprender é o Ubuntu NetBoot . Veja Pxeboot Imagem múltipla
-
memdisk
pode ser usado para carregar diretamente as imagens ISO ou de disquete através do PXE.syslinux-common
package tem uma cópia. O cliente deve ter RAM suficiente para manter a imagem e uma parte para executar o SO carregado.Exemplo de configuração:
/var/lib/tftpboot/ |-- FDSTD.144 |-- memdisk |-- pxelinux.0 |-- slitaz-cooking.iso |-- pxelinux.cfg | '-- default '-- pmagic/ |-- bzimage '-- initramfs
/pxelinux.cfg/default
DEFAULT partmagic LABEL partmagic MENU LABEL PartMagic 4.5 KERNEL pmagic/bzimage APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia LABEL slitaz MENU LABEL ^Slitaz.iso TEXT HELP Testing boot from iso. ENDTEXT KERNEL memdisk APPEND initrd=slitaz-cooking.iso LABEL freedos_std MENU LABEL ^FreeDOS STD TEXT HELP Testing boot from Floppy IMG. ENDTEXT KERNEL memdisk APPEND initrd=FDSTD.144
-
Os pacotes do PartedMagic foram retirados do site oficial depois que o desenvolvedor original decidiu torná-lo comercial, alguns lançamentos puderam ser encontrados através da rede de torrents. Minha resposta aqui é um resumo da primeira configuração do PXE que funcionou para mim. A Imagem do Netboot do Ubuntu deve funcionar com as mesmas instruções.