Mudanças entre as edições de "PXE Server"

De wiki.franca.unesp.br
Ir para: navegação, pesquisa
(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...")
 
(Passo 7: Configurando o Menu Customizado)
 
(8 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
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 para operar de forma 100% offline.
+
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:'''
Antes de começar, atualize seu servidor Debian e instale todos os pacotes necessários:
+
'''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 upgrade -y
+
sudo apt update
sudo apt install -y apache2 tftpd-hpa samba wimtools genisoimage build-essential git liblzma-dev wget nano
+
sudo apt install -y tftpd-hpa samba wimtools genisoimage build-essential git liblzma-dev iptables-persistent
 
</pre>
 
</pre>
== Passo 1: Preparar o Servidor Web (Apache) e Baixar os Menus ==
+
'''Regras de Firewall (iptables):'''
Vamos criar a estrutura de pastas que vai hospedar as imagens e baixar os menus oficiais do netboot.xyz para o Apache local.
+
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>
# Criar diretórios do netboot e das categorias de imagens
+
# Libera porta HTTP (Apache)
sudo mkdir -p /var/www/html/netboot
+
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo mkdir -p /var/www/html/assets/{Windows,Linux,Utilitarios}
 
  
# Acessar a pasta do netboot e baixar os menus
+
# Libera porta TFTP (Boot inicial)
cd /var/www/html/netboot
+
iptables -A INPUT -p udp --dport 69 -j ACCEPT
sudo wget https://github.com/netbootxyz/netboot.xyz/releases/latest/download/netboot.xyz.tar.gz
 
  
# Extrair e limpar
+
# Libera portas do Samba (Mapeamento do Windows)
sudo tar -xzf netboot.xyz.tar.gz
+
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
sudo rm netboot.xyz.tar.gz
+
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
  
# Ajustar permissões para o Apache
+
# Salva as regras para persistirem após a reinicialização (requer iptables-persistent)
sudo chown -R www-data:www-data /var/www/html/
+
netfilter-persistent save
 
</pre>
 
</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
 +
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/
 +
 +
</pre>
 +
 
== Passo 2: Configurar o Servidor TFTP ==
 
== Passo 2: Configurar o Servidor TFTP ==
O TFTP é responsável por entregar os primeiros megabytes do boot. No Debian, o pacote <code>tftpd-hpa</code> utiliza o diretório <code>/srv/tftp</code> por padrão.
+
O TFTP entrega os primeiros megabytes do boot. Utilizaremos o diretório padrão <code>/srv/tftp</code>.
 
<pre>
 
<pre>
# Garantir que o diretório exista
+
# Garante que o diretório exista
sudo mkdir -p /srv/tftp
+
mkdir -p /srv/tftp
  
# Reiniciar e habilitar o serviço
+
# Reinicia e habilita o serviço
sudo systemctl restart tftpd-hpa
+
systemctl restart tftpd-hpa
sudo systemctl enable tftpd-hpa
+
systemctl enable tftpd-hpa
 
</pre>
 
</pre>
 +
 
== Passo 3: Compilar o iPXE Customizado ==
 
== Passo 3: Compilar o iPXE Customizado ==
Para que o boot não dependa da internet, vamos compilar os arquivos de boot (EFI e BIOS) injetando um script que aponta diretamente para o IP do seu servidor Debian.
+
Para o boot offline, vamos compilar os arquivos injetando um script que aponta diretamente para o endereço web do servidor da UNESP.
'''Atenção:''' Substitua <code>IP_DO_SEU_SERVIDOR</code> pelo endereço IP real da sua máquina Debian.
 
 
<pre>
 
<pre>
 
cd ~
 
cd ~
Linha 43: Linha 68:
 
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://IP_DO_SEU_SERVIDOR/netboot/menu.ipxe
+
chain http://pxe.franca.unesp.br/netboot/menu.ipxe
 
EOF
 
EOF
  
Linha 57: Linha 82:
  
 
# Mover os arquivos gerados para o TFTP
 
# Mover os arquivos gerados para o TFTP
sudo cp bin/undionly.kpxe /srv/tftp/
+
cp bin/undionly.kpxe /srv/tftp/
sudo cp bin-x86_64-efi/ipxe.efi /srv/tftp/
+
cp bin-x86_64-efi/ipxe.efi /srv/tftp/
 
</pre>
 
</pre>
 +
 
== Passo 4: Configurar o Samba (Para Boot do Windows) ==
 
== Passo 4: Configurar o Samba (Para Boot do Windows) ==
A instalação de Windows via rede exige mapeamento de disco na fase do Setup. O Samba compartilhará a pasta de arquivos do Windows.
+
Abra e edite o arquivo <code>/etc/samba/smb.conf</code> conforme as instruções abaixo:
Edite o arquivo de configuração do Samba:
+
Vá até o final do arquivo e adicione a configuração do compartilhamento apontando para a pasta web:
<pre>
 
sudo nano /etc/samba/smb.conf
 
</pre>
 
Vá até o final do arquivo e adicione as seguintes linhas:
 
 
<pre>
 
<pre>
 
[PXEWIN]
 
[PXEWIN]
path = /var/www/html/assets/Windows
+
path = /var/www/pxe/assets/Windows
 
guest ok = yes
 
guest ok = yes
 
read only = yes
 
read only = yes
 
browseable = yes
 
browseable = yes
 
</pre>
 
</pre>
Reinicie o Samba para aplicar:
+
Após salvar, reinicie o serviço do Samba:
 
<pre>
 
<pre>
sudo systemctl restart smbd
+
systemctl restart smbd
sudo systemctl enable smbd
+
systemctl enable smbd
 
</pre>
 
</pre>
== Passo 5: Script de Automação para Extração do Windows ==
+
 
Este script extrai a ISO do Windows, baixa o injetor <code>wimboot</code> e modifica o <code>boot.wim</code> para montar o diretório Samba automaticamente e iniciar a instalação.
+
== Passo 5: Script de Automação para Imagens Windows ==
Crie o arquivo do script:
+
Abra e edite o arquivo <code>~/preparar_windows.sh</code> conforme as instruções abaixo, colando o conteúdo a seguir:
<pre>
 
cd ~
 
nano preparar_windows.sh
 
</pre>
 
Cole o conteúdo abaixo. '''Não se esqueça de alterar a variável IP_SERVIDOR''':
 
 
<pre>
 
<pre>
 
#!/bin/bash
 
#!/bin/bash
  
 
# ==========================================
 
# ==========================================
# CONFIGURAÇÕES - ALTERE O IP ABAIXO
+
# CONFIGURAÇÕES DO AMBIENTE
 
# ==========================================
 
# ==========================================
IP_SERVIDOR="192.168.1.100"
+
IP_SERVIDOR="200.145.119.100"
DESTINO="/var/www/html/assets/Windows"
+
DESTINO="/var/www/pxe/assets/Windows"
 
# ==========================================
 
# ==========================================
  
Linha 125: Linha 142:
 
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 162:
 
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> ./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 como Live CD sem perder a conexão de rede:
+
Para o Linux funcionar corretamente sem perder a conexão HTTP ao iniciar:
Extraia a ISO do Linux (ex: Ubuntu).
+
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>).
Copie os arquivos <code>vmlinuz</code> (Kernel) e <code>initrd</code> (geralmente encontrados na pasta <code>casper</code> ou <code>boot</code>) para <code>/var/www/html/assets/Linux/</code>.
+
Mova esses dois arquivos para <code>/var/www/pxe/assets/Linux/</code>.
Copie a ISO inteira do Linux também para <code>/var/www/html/assets/Linux/ubuntu.iso</code>.
+
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 ==
Edite o arquivo que gerencia o menu local do netboot:
+
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>
 
sudo nano /var/www/html/netboot/custom.ipxe
 
</pre>
 
Substitua tudo pelo código abaixo (altere o <code>IP_DO_SEU_SERVIDOR</code>):
 
 
<pre>
 
<pre>
 
#!ipxe
 
#!ipxe
Linha 166: Linha 180:
 
:custom_menu
 
:custom_menu
 
clear custom_choice
 
clear custom_choice
menu Menu PXE Local - Debian
+
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 182: Linha 196:
 
clear win_choice
 
clear win_choice
 
menu Instaladores Windows
 
menu Instaladores Windows
item win11 Windows 11 (Automatizado)
+
item win11_25h2 Windows 11 (25H2)
 
item --gap
 
item --gap
 
item custom_menu [ Voltar ]
 
item custom_menu [ Voltar ]
Linha 188: Linha 202:
 
goto ${win_choice}
 
goto ${win_choice}
  
:win11
+
:win11_25h2
kernel http://IP_DO_SEU_SERVIDOR/assets/Windows/wimboot
+
kernel http://pxe.franca.unesp.br/assets/Windows/wimboot
initrd http://IP_DO_SEU_SERVIDOR/assets/Windows/Win11/boot/bcd bcd
+
initrd http://pxe.franca.unesp.br/assets/Windows/Win11_25H2/boot/bcd bcd
initrd http://IP_DO_SEU_SERVIDOR/assets/Windows/Win11/boot/boot.sdi boot.sdi
+
initrd http://pxe.franca.unesp.br/assets/Windows/Win11_25H2/boot/boot.sdi boot.sdi
initrd http://IP_DO_SEU_SERVIDOR/assets/Windows/Win11/sources/boot.wim boot.wim
+
initrd http://pxe.franca.unesp.br/assets/Windows/Win11_25H2/sources/boot.wim boot.wim
 
boot || goto custom_menu
 
boot || goto custom_menu
  
Linha 200: Linha 214:
 
clear lin_choice
 
clear lin_choice
 
menu Distribuicoes Linux
 
menu Distribuicoes Linux
item ubuntu_live Ubuntu Live CD
+
item mint_live Linux Mint (Live CD)
 
item --gap
 
item --gap
 
item custom_menu [ Voltar ]
 
item custom_menu [ Voltar ]
Linha 206: Linha 220:
 
goto ${lin_choice}
 
goto ${lin_choice}
  
:ubuntu_live
+
:mint_live
kernel http://IP_DO_SEU_SERVIDOR/assets/Linux/vmlinuz
+
# Observacao: Certifique-se de ter extraido o vmlinuz e o initrd da ISO para a pasta Linux
initrd http://IP_DO_SEU_SERVIDOR/assets/Linux/initrd
+
kernel http://pxe.franca.unesp.br/assets/Linux/vmlinuz
imgargs vmlinuz initrd=initrd ip=dhcp url=http://IP_DO_SEU_SERVIDOR/assets/Linux/ubuntu.iso
+
initrd http://pxe.franca.unesp.br/assets/Linux/initrd
 +
imgargs vmlinuz initrd=initrd ip=dhcp url=http://pxe.franca.unesp.br/assets/Linux/linuxmint.iso
 
boot || goto custom_menu
 
boot || goto custom_menu
  
Linha 217: Linha 232:
 
clear util_choice
 
clear util_choice
 
menu Ferramentas e Utilitarios
 
menu Ferramentas e Utilitarios
item hirens Hirens BootCD PE
+
item hbcd_152 Hirens Boot CD 15.2 (Versao Classica)
 +
item hbcd_pe Hirens Boot CD PE x64 (Baseado em Win10)
 +
item macrium Macrium Rescue (Clonagem e Backup)
 
item --gap
 
item --gap
 
item custom_menu [ Voltar ]
 
item custom_menu [ Voltar ]
Linha 223: Linha 240:
 
goto ${util_choice}
 
goto ${util_choice}
  
:hirens
+
:hbcd_152
sanboot http://IP_DO_SEU_SERVIDOR/assets/Utilitarios/hirens.iso || goto custom_menu
+
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/Hiren_s.BootCD.15.2.iso || goto custom_menu
 +
 
 +
:hbcd_pe
 +
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/HBCD_PE_x64.iso || goto custom_menu
 +
 
 +
:macrium
 +
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/MacriumRescue2.iso || goto custom_menu
  
  
Linha 231: Linha 254:
 
exit
 
exit
 
</pre>
 
</pre>
== Passo 8: Configuração do Servidor DHCP (Roteador/Firewall) ==
+
 
Para que os clientes da rede saibam onde buscar o boot, vá no seu servidor DHCP (Roteador, pfSense, Mikrotik, Windows Server) e configure as Opções de PXE:
+
== Passo 8: Configuração do Servidor DHCP (Roteador/Firewall da Rede) ==
'''Next-Server (Servidor TFTP):''' IP do seu Servidor Debian.
+
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):'''
 
'''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>
Acesse o Boot via Rede (F12) nos computadores clientes, entre na opção '''Custom Menu''' do painel do netboot e utilize o seu sistema de boot de forma totalmente local!
+
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 atual tal como às 16h19min de 30 de abril de 2026

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
cp bin/undionly.kpxe /srv/tftp/
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:

systemctl restart smbd
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:

 ./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_25h2 Windows 11 (25H2)
item --gap
item custom_menu [ Voltar ]
choose win_choice || goto custom_menu
goto ${win_choice}

:win11_25h2
kernel http://pxe.franca.unesp.br/assets/Windows/wimboot
initrd http://pxe.franca.unesp.br/assets/Windows/Win11_25H2/boot/bcd bcd
initrd http://pxe.franca.unesp.br/assets/Windows/Win11_25H2/boot/boot.sdi boot.sdi
initrd http://pxe.franca.unesp.br/assets/Windows/Win11_25H2/sources/boot.wim boot.wim
boot || goto custom_menu


# --- SUBMENU LINUX ---
:menu_linux
clear lin_choice
menu Distribuicoes Linux
item mint_live Linux Mint (Live CD)
item --gap
item custom_menu [ Voltar ]
choose lin_choice || goto custom_menu
goto ${lin_choice}

:mint_live
# Observacao: Certifique-se de ter extraido o vmlinuz e o initrd da ISO para a pasta Linux
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/linuxmint.iso
boot || goto custom_menu


# --- SUBMENU UTILITÁRIOS ---
:menu_utils
clear util_choice
menu Ferramentas e Utilitarios
item hbcd_152 Hirens Boot CD 15.2 (Versao Classica)
item hbcd_pe Hirens Boot CD PE x64 (Baseado em Win10)
item macrium Macrium Rescue (Clonagem e Backup)
item --gap
item custom_menu [ Voltar ]
choose util_choice || goto custom_menu
goto ${util_choice}

:hbcd_152
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/Hiren_s.BootCD.15.2.iso || goto custom_menu

:hbcd_pe
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/HBCD_PE_x64.iso || goto custom_menu

:macrium
sanboot http://pxe.franca.unesp.br/assets/Utilitarios/MacriumRescue2.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 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.