Mudanças entre as edições de "PXE Server"
(→Passo 1: Preparar a Estrutura Web e Baixar os Menus) |
(→Passo 2: Configurar o Servidor TFTP) |
||
| Linha 54: | Linha 54: | ||
<pre> | <pre> | ||
# Garante que o diretório exista | # Garante que o diretório exista | ||
| − | + | mkdir -p /srv/tftp | |
# Reinicia e habilita o serviço | # Reinicia e habilita o serviço | ||
| − | + | systemctl restart tftpd-hpa | |
| − | + | systemctl enable tftpd-hpa | |
</pre> | </pre> | ||
| + | |||
== Passo 3: Compilar o iPXE Customizado == | == Passo 3: Compilar o iPXE Customizado == | ||
Para o boot offline, vamos compilar os arquivos injetando um script que aponta diretamente para o endereço web do servidor da UNESP. | Para o boot offline, vamos compilar os arquivos injetando um script que aponta diretamente para o endereço web do servidor da UNESP. | ||
Edição das 15h54min de 30 de abril de 2026
Índice
- 1 Servidor PXE Local com Netboot.xyz no Debian
- 1.1 Pré-requisitos e Firewall
- 1.2 Passo 1: Preparar a Estrutura Web e Baixar os Menus
- 1.3 Passo 2: Configurar o Servidor TFTP
- 1.4 Passo 3: Compilar o iPXE Customizado
- 1.5 Passo 4: Configurar o Samba (Para Boot do Windows)
- 1.6 Passo 5: Script de Automação para Imagens Windows
- 1.7 Passo 6: Preparando as Imagens Linux (Live CD)
- 1.8 Passo 7: Configurando o Menu Customizado
- 1.9 Passo 8: Configuração do Servidor DHCP (Roteador/Firewall da Rede)
Servidor PXE Local com Netboot.xyz no Debian
Este guia detalha a implementação de um servidor de boot PXE local utilizando o netboot.xyz. A estrutura utiliza o Apache (HTTP) para transferência rápida de arquivos, TFTP para o boot inicial, Samba (SMB) para instalação automatizada do Windows e uma compilação customizada do iPXE. Dados do Ambiente: IP do Servidor: 200.145.119.100 Endereço Web: pxe.franca.unesp.br Diretório Web: /var/www/pxe
Pré-requisitos e Firewall
O servidor já possui Apache, wget e nano instalados. Vamos instalar os demais pacotes necessários:
sudo apt update sudo apt install -y tftpd-hpa samba wimtools genisoimage build-essential git liblzma-dev iptables-persistent
Regras de Firewall (iptables): Para garantir que os computadores da rede consigam se comunicar com os serviços (HTTP, TFTP e Samba), aplique as regras de liberação abaixo:
# Libera porta HTTP (Apache) iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Libera porta TFTP (Boot inicial) iptables -A INPUT -p udp --dport 69 -j ACCEPT # Libera portas do Samba (Mapeamento do Windows) iptables -A INPUT -p tcp --dport 139 -j ACCEPT iptables -A INPUT -p tcp --dport 445 -j ACCEPT iptables -A INPUT -p udp --dport 137 -j ACCEPT iptables -A INPUT -p udp --dport 138 -j ACCEPT # Salva as regras para persistirem após a reinicialização (requer iptables-persistent) netfilter-persistent save
Passo 1: Preparar a Estrutura Web e Baixar os Menus
Vamos criar a estrutura de diretórios em um único comando e realizar o download dos menus oficiais do netboot.xyz.
# Cria a estrutura principal e os subdiretórios de categorias
mkdir -p /var/www/pxe/{netboot,assets/{Windows,Linux,Utilitarios}}
# Acessa a pasta do netboot e baixa os menus
cd /var/www/pxe/netboot
wget https://github.com/netbootxyz/netboot.xyz/releases/latest/download/menus.tar.gz
# Extrair os arquivos (o comando tar extrai o conteúdo direto na pasta atual)
sudo tar -xzf menus.tar.gz
# Remover o arquivo compactado para limpar a pasta
rm menus.tar.gz
# Reaplicar as permissões do Apache
chown -R www-data:www-data /var/www/pxe/
Passo 2: Configurar o Servidor TFTP
O TFTP entrega os primeiros megabytes do boot. Utilizaremos o diretório padrão /srv/tftp.
# Garante que o diretório exista mkdir -p /srv/tftp # Reinicia e habilita o serviço systemctl restart tftpd-hpa systemctl enable tftpd-hpa
Passo 3: Compilar o iPXE Customizado
Para o boot offline, vamos compilar os arquivos injetando um script que aponta diretamente para o endereço web do servidor da UNESP.
cd ~ git clone https://github.com/ipxe/ipxe.git cd ipxe/src # Criar o script de redirecionamento (chainload) apontando para o domínio web cat <<EOF > boot.ipxe #!ipxe dhcp chain http://pxe.franca.unesp.br/netboot/menu.ipxe EOF # Compilar arquivo para máquinas antigas (Legacy/BIOS) make bin/undionly.kpxe EMBED=boot.ipxe # Compilar arquivo para máquinas novas (UEFI) make bin-x86_64-efi/ipxe.efi EMBED=boot.ipxe # Mover os arquivos gerados para o TFTP sudo cp bin/undionly.kpxe /srv/tftp/ sudo cp bin-x86_64-efi/ipxe.efi /srv/tftp/
Passo 4: Configurar o Samba (Para Boot do Windows)
Abra e edite o arquivo /etc/samba/smb.conf conforme as instruções abaixo:
Vá até o final do arquivo e adicione a configuração do compartilhamento apontando para a pasta web:
[PXEWIN] path = /var/www/pxe/assets/Windows guest ok = yes read only = yes browseable = yes
Após salvar, reinicie o serviço do Samba:
sudo systemctl restart smbd sudo systemctl enable smbd
Passo 5: Script de Automação para Imagens Windows
Abra e edite o arquivo ~/preparar_windows.sh conforme as instruções abaixo, colando o conteúdo a seguir:
#!/bin/bash # ========================================== # CONFIGURAÇÕES DO AMBIENTE # ========================================== IP_SERVIDOR="200.145.119.100" DESTINO="/var/www/pxe/assets/Windows" # ========================================== ARQUIVO_ISO=$1 NOME_PASTA=$2 PASTA_WINDOWS="$DESTINO/$NOME_PASTA" if [ -z "$ARQUIVO_ISO" ] || [ -z "$NOME_PASTA" ]; then echo "Uso: sudo ./preparar_windows.sh <caminho_da_iso> <nome_da_pasta>" echo "Exemplo: sudo ./preparar_windows.sh /home/usuario/win10.iso Win10" exit 1 fi echo "1. Criando pasta $PASTA_WINDOWS..." mkdir -p "$PASTA_WINDOWS" echo "2. Montando a ISO e copiando os arquivos..." mkdir -p /mnt/iso_temp mount -o loop "$ARQUIVO_ISO" /mnt/iso_temp cp -r /mnt/iso_temp/* "$PASTA_WINDOWS/" umount /mnt/iso_temp rm -rf /mnt/iso_temp echo "3. Baixando o arquivo wimboot oficial..." if [ ! -f "$DESTINO/wimboot" ]; then wget -qO "$DESTINO/wimboot" https://github.com/ipxe/wimboot/releases/latest/download/wimboot fi echo "4. Criando script de auto-conexao (startnet.cmd)..." cat <<EOF > startnet.cmd wpeinit @echo Aguardando inicializacao da rede... ping -n 5 127.0.0.1 >nul @echo Conectando ao servidor $IP_SERVIDOR... net use z: \\\\$IP_SERVIDOR\\PXEWIN\\$NOME_PASTA /user:nobody "" z:\\setup.exe EOF echo "5. Injetando o script dentro do boot.wim..." wimupdate "$PASTA_WINDOWS/sources/boot.wim" 2 <<EOF add startnet.cmd /Windows/System32/startnet.cmd EOF rm startnet.cmd echo "6. Ajustando permissoes..." chmod -R 777 "$PASTA_WINDOWS" echo "CONCLUIDO! Arquivos preparados com sucesso."
Dê permissão de execução:
chmod +x ~/preparar_windows.sh
Como usar:
sudo ./preparar_windows.sh /caminho/para/imagem-windows.iso Win11
Passo 6: Preparando as Imagens Linux (Live CD)
Para o Linux funcionar corretamente sem perder a conexão HTTP ao iniciar:
Extraia o conteúdo da ISO (ou apenas os arquivos vmlinuz e initrd localizados na pasta casper ou boot).
Mova esses dois arquivos para /var/www/pxe/assets/Linux/.
Copie a ISO inteira também para /var/www/pxe/assets/Linux/ubuntu.iso.
Passo 7: Configurando o Menu Customizado
Abra e edite o arquivo /var/www/pxe/netboot/custom.ipxe conforme as instruções abaixo, substituindo todo o seu conteúdo pelo script a seguir:
#!ipxe
# --- MENU PRINCIPAL ---
:custom_menu
clear custom_choice
menu Menu PXE Local - UNESP Franca
item --gap Selecione uma Categoria:
item menu_windows Instaladores Windows
item menu_linux Distribuicoes Linux (Live)
item menu_utils Ferramentas e Utilitarios
item --gap
item return Voltar ao Menu Anterior
choose custom_choice || goto custom_exit
goto ${custom_choice}
# --- SUBMENU WINDOWS ---
:menu_windows
clear win_choice
menu Instaladores Windows
item win11 Windows 11 (Automatizado)
item --gap
item custom_menu [ Voltar ]
choose win_choice || goto custom_menu
goto ${win_choice}
:win11
kernel http://pxe.franca.unesp.br/assets/Windows/wimboot
initrd http://pxe.franca.unesp.br/assets/Windows/Win11/boot/bcd bcd
initrd http://pxe.franca.unesp.br/assets/Windows/Win11/boot/boot.sdi boot.sdi
initrd http://pxe.franca.unesp.br/assets/Windows/Win11/sources/boot.wim boot.wim
boot || goto custom_menu
# --- SUBMENU LINUX ---
:menu_linux
clear lin_choice
menu Distribuicoes Linux
item ubuntu_live Ubuntu Live CD
item --gap
item custom_menu [ Voltar ]
choose lin_choice || goto custom_menu
goto ${lin_choice}
:ubuntu_live
kernel http://pxe.franca.unesp.br/assets/Linux/vmlinuz
initrd http://pxe.franca.unesp.br/assets/Linux/initrd
imgargs vmlinuz initrd=initrd ip=dhcp url=http://pxe.franca.unesp.br/assets/Linux/ubuntu.iso
boot || goto custom_menu
# --- SUBMENU UTILITÁRIOS ---
:menu_utils
clear util_choice
menu Ferramentas e Utilitarios
item hirens Hirens BootCD PE
item --gap
item custom_menu[ Voltar ]
choose util_choice || goto custom_menu
goto ${util_choice}
:hirens
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/hirens.iso || goto custom_menu
# --- SAÍDA ---
:custom_exit
exit
Passo 8: Configuração do Servidor DHCP (Roteador/Firewall da Rede)
Para que os clientes localizem o servidor de boot automaticamente na rede, configure o servidor DHCP informando: Next-Server (Servidor TFTP): 200.145.119.100 Boot Filename (Arquivo de Boot):
- Para máquinas UEFI:
ipxe.efi - Para máquinas Legacy/BIOS:
undionly.kpxe
- Para máquinas UEFI:
Para acessar a interface, inicie a máquina via Boot pela Rede (Network Boot / F12), selecione Custom Menu na tela do netboot.xyz e utilize o ambiente de imagens local.