Mudanças entre as edições de "PXE Server"
(Created page with "= 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 Apa...") |
|||
| Linha 1: | Linha 1: | ||
= Servidor PXE Local com Netboot.xyz no Debian = | = 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 | + | 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. |
| − | == Pré-requisitos == | + | '''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: | ||
<pre> | <pre> | ||
| − | sudo apt update | + | sudo apt update |
| − | sudo apt install -y | + | sudo apt install -y tftpd-hpa samba wimtools genisoimage build-essential git liblzma-dev iptables-persistent |
</pre> | </pre> | ||
| − | + | '''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: | |
<pre> | <pre> | ||
| − | # | + | # Libera porta HTTP (Apache) |
| − | sudo | + | sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
| − | |||
| − | # | + | # Libera porta TFTP (Boot inicial) |
| − | cd /var/www/ | + | sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT |
| + | |||
| + | # Libera portas do Samba (Mapeamento do Windows) | ||
| + | sudo iptables -A INPUT -p tcp --dport 139 -j ACCEPT | ||
| + | sudo iptables -A INPUT -p tcp --dport 445 -j ACCEPT | ||
| + | sudo iptables -A INPUT -p udp --dport 137 -j ACCEPT | ||
| + | sudo iptables -A INPUT -p udp --dport 138 -j ACCEPT | ||
| + | |||
| + | # Salva as regras para persistirem após a reinicialização (requer iptables-persistent) | ||
| + | sudo netfilter-persistent save | ||
| + | </pre> | ||
| + | == 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. | ||
| + | <pre> | ||
| + | # Cria a estrutura principal e os subdiretórios de categorias | ||
| + | sudo mkdir -p /var/www/pxe/{netboot,assets/{Windows,Linux,Utilitarios}} | ||
| + | |||
| + | # Acessa a pasta do netboot e baixa os menus | ||
| + | cd /var/www/pxe/netboot | ||
sudo wget https://github.com/netbootxyz/netboot.xyz/releases/latest/download/netboot.xyz.tar.gz | sudo wget https://github.com/netbootxyz/netboot.xyz/releases/latest/download/netboot.xyz.tar.gz | ||
| − | # | + | # Extrai e limpa o arquivo compactado |
sudo tar -xzf netboot.xyz.tar.gz | sudo tar -xzf netboot.xyz.tar.gz | ||
sudo rm netboot.xyz.tar.gz | sudo rm netboot.xyz.tar.gz | ||
| − | # | + | # Ajusta as permissões para o Apache gerenciar os arquivos |
| − | sudo chown -R www-data:www-data /var/www/ | + | sudo chown -R www-data:www-data /var/www/pxe/ |
</pre> | </pre> | ||
== Passo 2: Configurar o Servidor TFTP == | == Passo 2: Configurar o Servidor TFTP == | ||
| − | O TFTP | + | O TFTP entrega os primeiros megabytes do boot. Utilizaremos o diretório padrão <code>/srv/tftp</code>. |
<pre> | <pre> | ||
| − | # | + | # Garante que o diretório exista |
sudo mkdir -p /srv/tftp | sudo mkdir -p /srv/tftp | ||
| − | # | + | # Reinicia e habilita o serviço |
sudo systemctl restart tftpd-hpa | sudo systemctl restart tftpd-hpa | ||
sudo systemctl enable tftpd-hpa | sudo systemctl enable tftpd-hpa | ||
</pre> | </pre> | ||
== Passo 3: Compilar o iPXE Customizado == | == Passo 3: Compilar o iPXE Customizado == | ||
| − | Para | + | Para o boot offline, vamos compilar os arquivos injetando um script que aponta diretamente para o endereço web do servidor da UNESP. |
| − | |||
<pre> | <pre> | ||
cd ~ | cd ~ | ||
| Linha 43: | Linha 63: | ||
cd ipxe/src | cd ipxe/src | ||
| − | # Criar o script de redirecionamento (chainload) | + | # Criar o script de redirecionamento (chainload) apontando para o domínio web |
cat <<EOF > boot.ipxe | cat <<EOF > boot.ipxe | ||
#!ipxe | #!ipxe | ||
dhcp | dhcp | ||
| − | chain http:// | + | chain http://pxe.franca.unesp.br/netboot/menu.ipxe |
EOF | EOF | ||
| Linha 61: | Linha 81: | ||
</pre> | </pre> | ||
== Passo 4: Configurar o Samba (Para Boot do Windows) == | == Passo 4: Configurar o Samba (Para Boot do Windows) == | ||
| − | + | Abra e edite o arquivo <code>/etc/samba/smb.conf</code> conforme as instruções abaixo: | |
| − | + | Vá até o final do arquivo e adicione a configuração do compartilhamento apontando para a pasta web: | |
| − | < | ||
| − | |||
| − | </ | ||
| − | Vá até o final do arquivo e adicione | ||
<pre> | <pre> | ||
[PXEWIN] | [PXEWIN] | ||
| − | path = /var/www/ | + | path = /var/www/pxe/assets/Windows |
guest ok = yes | guest ok = yes | ||
read only = yes | read only = yes | ||
browseable = yes | browseable = yes | ||
</pre> | </pre> | ||
| − | + | Após salvar, reinicie o serviço do Samba: | |
<pre> | <pre> | ||
sudo systemctl restart smbd | sudo systemctl restart smbd | ||
sudo systemctl enable smbd | sudo systemctl enable smbd | ||
</pre> | </pre> | ||
| − | == Passo 5: Script de Automação para | + | == Passo 5: Script de Automação para Imagens Windows == |
| − | + | Abra e edite o arquivo <code>~/preparar_windows.sh</code> conforme as instruções abaixo, colando o conteúdo a seguir: | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | </ | ||
| − | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
# ========================================== | # ========================================== | ||
| − | # CONFIGURAÇÕES | + | # CONFIGURAÇÕES DO AMBIENTE |
# ========================================== | # ========================================== | ||
| − | IP_SERVIDOR=" | + | IP_SERVIDOR="200.145.119.100" |
| − | DESTINO="/var/www/ | + | DESTINO="/var/www/pxe/assets/Windows" |
# ========================================== | # ========================================== | ||
| Linha 125: | Linha 135: | ||
cat <<EOF > startnet.cmd | cat <<EOF > startnet.cmd | ||
wpeinit | wpeinit | ||
| − | @echo Aguardando rede... | + | @echo Aguardando inicializacao da rede... |
ping -n 5 127.0.0.1 >nul | ping -n 5 127.0.0.1 >nul | ||
@echo Conectando ao servidor $IP_SERVIDOR... | @echo Conectando ao servidor $IP_SERVIDOR... | ||
| Linha 145: | Linha 155: | ||
Dê permissão de execução: | Dê permissão de execução: | ||
<pre> | <pre> | ||
| − | chmod +x preparar_windows.sh | + | chmod +x ~/preparar_windows.sh |
</pre> | </pre> | ||
'''Como usar:''' | '''Como usar:''' | ||
<pre>sudo ./preparar_windows.sh /caminho/para/imagem-windows.iso Win11</pre> | <pre>sudo ./preparar_windows.sh /caminho/para/imagem-windows.iso Win11</pre> | ||
== Passo 6: Preparando as Imagens Linux (Live CD) == | == Passo 6: Preparando as Imagens Linux (Live CD) == | ||
| − | Para o Linux funcionar | + | Para o Linux funcionar corretamente sem perder a conexão HTTP ao iniciar: |
| − | Extraia | + | Extraia o conteúdo da ISO (ou apenas os arquivos <code>vmlinuz</code> e <code>initrd</code> localizados na pasta <code>casper</code> ou <code>boot</code>). |
| − | + | Mova esses dois arquivos para <code>/var/www/pxe/assets/Linux/</code>. | |
| − | Copie a ISO inteira | + | Copie a ISO inteira também para <code>/var/www/pxe/assets/Linux/ubuntu.iso</code>. |
== Passo 7: Configurando o Menu Customizado == | == Passo 7: Configurando o Menu Customizado == | ||
| − | + | Abra e edite o arquivo <code>/var/www/pxe/netboot/custom.ipxe</code> conforme as instruções abaixo, substituindo todo o seu conteúdo pelo script a seguir: | |
| − | < | ||
| − | |||
| − | </ | ||
| − | |||
<pre> | <pre> | ||
#!ipxe | #!ipxe | ||
| Linha 166: | Linha 172: | ||
:custom_menu | :custom_menu | ||
clear custom_choice | clear custom_choice | ||
| − | menu Menu PXE Local - | + | menu Menu PXE Local - UNESP Franca |
item --gap Selecione uma Categoria: | item --gap Selecione uma Categoria: | ||
item menu_windows Instaladores Windows | item menu_windows Instaladores Windows | ||
| Linha 189: | Linha 195: | ||
:win11 | :win11 | ||
| − | kernel http:// | + | kernel http://pxe.franca.unesp.br/assets/Windows/wimboot |
| − | initrd http:// | + | initrd http://pxe.franca.unesp.br/assets/Windows/Win11/boot/bcd bcd |
| − | initrd http:// | + | initrd http://pxe.franca.unesp.br/assets/Windows/Win11/boot/boot.sdi boot.sdi |
| − | initrd http:// | + | initrd http://pxe.franca.unesp.br/assets/Windows/Win11/sources/boot.wim boot.wim |
boot || goto custom_menu | boot || goto custom_menu | ||
| Linha 207: | Linha 213: | ||
:ubuntu_live | :ubuntu_live | ||
| − | kernel http:// | + | kernel http://pxe.franca.unesp.br/assets/Linux/vmlinuz |
| − | initrd http:// | + | initrd http://pxe.franca.unesp.br/assets/Linux/initrd |
| − | imgargs vmlinuz initrd=initrd ip=dhcp url=http:// | + | imgargs vmlinuz initrd=initrd ip=dhcp url=http://pxe.franca.unesp.br/assets/Linux/ubuntu.iso |
boot || goto custom_menu | boot || goto custom_menu | ||
| Linha 219: | Linha 225: | ||
item hirens Hirens BootCD PE | item hirens Hirens BootCD PE | ||
item --gap | item --gap | ||
| − | item custom_menu [ Voltar ] | + | item custom_menu[ Voltar ] |
choose util_choice || goto custom_menu | choose util_choice || goto custom_menu | ||
goto ${util_choice} | goto ${util_choice} | ||
:hirens | :hirens | ||
| − | sanboot http:// | + | sanboot http://pxe.franca.unesp.br/assets/Utilitarios/hirens.iso || goto custom_menu |
| Linha 231: | Linha 237: | ||
exit | exit | ||
</pre> | </pre> | ||
| − | == Passo 8: Configuração do Servidor DHCP (Roteador/Firewall) == | + | == Passo 8: Configuração do Servidor DHCP (Roteador/Firewall da Rede) == |
| − | Para que os clientes | + | Para que os clientes localizem o servidor de boot automaticamente na rede, configure o servidor DHCP informando: |
| − | '''Next-Server (Servidor TFTP):''' | + | '''Next-Server (Servidor TFTP):''' 200.145.119.100 |
'''Boot Filename (Arquivo de Boot):''' | '''Boot Filename (Arquivo de Boot):''' | ||
** Para máquinas UEFI: <code>ipxe.efi</code> | ** Para máquinas UEFI: <code>ipxe.efi</code> | ||
** Para máquinas Legacy/BIOS: <code>undionly.kpxe</code> | ** Para máquinas Legacy/BIOS: <code>undionly.kpxe</code> | ||
| − | + | 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. | |
Edição das 15h44min 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) sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Libera porta TFTP (Boot inicial) sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT # Libera portas do Samba (Mapeamento do Windows) sudo iptables -A INPUT -p tcp --dport 139 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 445 -j ACCEPT sudo iptables -A INPUT -p udp --dport 137 -j ACCEPT sudo iptables -A INPUT -p udp --dport 138 -j ACCEPT # Salva as regras para persistirem após a reinicialização (requer iptables-persistent) sudo 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
sudo mkdir -p /var/www/pxe/{netboot,assets/{Windows,Linux,Utilitarios}}
# Acessa a pasta do netboot e baixa os menus
cd /var/www/pxe/netboot
sudo wget https://github.com/netbootxyz/netboot.xyz/releases/latest/download/netboot.xyz.tar.gz
# Extrai e limpa o arquivo compactado
sudo tar -xzf netboot.xyz.tar.gz
sudo rm netboot.xyz.tar.gz
# Ajusta as permissões para o Apache gerenciar os arquivos
sudo 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 sudo mkdir -p /srv/tftp # Reinicia e habilita o serviço sudo systemctl restart tftpd-hpa sudo 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.