Servidor PXE - Ubuntu 18.04
2019-12-19 00:00:00 +0000
Configuração do servidor PXE (TFTP, DHCP)
- configurar IP Estático no servidor, i.e. 192.168.10.1 netmask 255.255.255.0
- criar diretórios necessários
# mkdir -p /netboot/{tftp,nfs,smb}
# mkdir -p /netboot/tftp/pxelinux.cfg
- instalar dnsmasq
# apt-get install dnsmasq
- configurar dnsmasq:
interface=ens1p0
bind-interfaces
domain=pxeserver.local
dhcp-range=ens1p0,192.168.10.100,192.168.10.240,255.255.255.0,8h
dhcp-option=option:router,192.168.10.1
dhcp-option=option:dns-server,192.168.10.1
dhcp-option=option:dns-server,8.8.8.8
enable-tftp
tftp-root=/netboot/tftp
dhcp-boot=pxelinux.0,pxeserver.local,192.168.10.1
pxe-prompt="Press F8 for PXE Network boot.", 2
pxe-service=x86PC, "Install OS via PXE",pxelinux
- iniciar dnsmasq
# systemctl start dnsmasq
- verificar se está rodandos
# systemctl status dnsmasq
- instalar servidor NFS, para imagens linux
# apt-get install nfs-kernel-server
- configurar NFS no arquivo
/etc/exports
/netboot/nfs *(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure,no_subtree_check)
- Tornar diretório disponivel, ativando compartilhamento
# exportfs -a
- Instalar pacotes requeridos para o PXE
# apt install -y syslinux pxelinux
- Copiar arquivos requeridos para o diretório correto
/netboot/tftp
# cp /usr/lib/PXELINUX/pxelinux.0 /netboot/tftp/
# cp /usr/lib/syslinux/modules/bios/{ldlinux.c32,libcom32.c32,libutil.c32,vesamenu.c32} /netboot/tftp
- Criar configuração de boot em
/netboot/tftp/pxelinux.cfg/
# touch /netboot/tftp/pxelinux.cfg/default`
Adiciona imagem ubuntu 18.04
- Faz download da imagem
wget http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso
- Monta em loopback
mount -o loop ubuntu-18.04.2-desktop-amd64.iso /mnt
- Cria diretórios necessários
mkdir -v /netboot/{nfs,tftp}/ubuntu1804
- Copia arquivos de instalação
cp -Rfv /mnt/* /netboot/nfs/ubuntu1804/
- Copia kernel e initrd
cp /netboot/nfs/ubuntu1804/casper/{vmlinuz,initrd} /netboot/tftp/ubuntu1804
- Acerta as permissões
chmod -Rfv 777 /netboot
(não use 777 nunca em produção). - Desmonta loopback
umount /mnt
- Remove imagem
ubuntu-18.04.2-desktop-amd64.iso
- Adiciona entrada no menu de boot do PXE
/netboot/tftp/pxelinux.cfg/default
default vesamenu.c32
label install1
menu label ^Install Ubuntu 18.04 LTS Desktop
menu default
kernel ubuntu1804/vmlinuz
append initrd=ubuntu1804/initrd boot=casper netboot=nfs nfsroot=192.168.50.1:/netboot/nfs/ubuntu1804/ splash toram ---
Adiciona imagem Windows 10
- instala pacotes necessários
# apt-get install -y samba genisoimage wimtools cabextract
- Link mkisofs
ln -s /usr/bin/genisoimage /usr/bin/mkisofs
- Cria diretórios
mkdir -p /netboot/smb/windows10
- Preparando imagem de boot Windows PE
wget https://download.microsoft.com/download/8/E/9/8E9BBC64-E6F8-457C-9B8D-F6C9A16E6D6A/KB3AIK_EN.iso
mount KB3AIK_EN.iso /mnt
mkwinpeimg --iso --arch=amd64 --waik-dir=/mnt/waik /netboot/tftp/winpe.iso
umount /mnt
- Configuração do Samba
/etc/samba/smb.conf
[global]
workgroup = WORKGROUP
map to guest = bad user
usershare allow guests = yes
[windows10]
browsable = true
read only = yes
guest ok = yes
path = /netboot/smb/windows10
- Reinicia servidor samba
systemctl restart smbd
- Prepara arquivos de instalação do Windows 10 no compartilhamento
mount <WINDOWS_ISO> /mnt
cp -R /mnt/* /netboot/smb/windows10/
- Configuração do PXE para disponibilizar o memdisk
ln -s /usr/lib/syslinux/memdisk /netboot/tftp
- Adiciona opção do Windows no menu do PXE
/var/lib/tftpboot/pxelinux.cfg/default
LABEL windows10
MENU LABEL Windows 10
KERNEL /memdisk
INITRD /winpe.iso
APPEND iso raw
Instruções no cliente PXE Windows
- Boot pelo PXE
- Aguardar equipamento ser configurado pelo DHCP. Verificar com
ipconfig
- Montar compartilhamento do samba
net use z: \\192.168.10.1\windows10
- Executar binário de instalação
z:\setup.exe
- Profit!