OS Install: PXE Boot
General Information
In order to install an OS via PXE boot, a TFTP and DHCP server are required.
Using PXE allows for clients to begin a network installation without any net-install ISO.
- Reference Source: http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/
Checklist
- Distro(s): Enterprise Linux 7
- Other: Installation Server Created (NFS/HTTP/FTP) that is hosting the install DVD and kickstart file
- Example: Using NFS as an Installation Server
TFTP Server
- Install the required packages
yum install tftp-server xinetd
- Allow TFTP access (set disable = no)
vim /etc/xinetd.d/tftp service tftp { ....some other variables... disable = no ....some other variables... }
- Start and Enable xinetd
systemctl start xinetd systemctl enable xinetd
- Allow through firewall (if enabled)
firewall-cmd --permanent --add-service=tftp firewall-cmd --reload
DHCP Server
- Install required package
yum install dhcp
- Edit DHCP config and customize per your network
vim /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254 ; range 192.168.1.240 192.168.1.250 ; next-server 192.168.1.150 ; filename "pxelinux.0" ; }
- subnet ⇒ specify the network
- netmask ⇒ mask for your network
- option routers ⇒ gateway for the network
- range ⇒ start and ending IP to hand out via DHCP
- next-server ⇒ IP of the TFTP server
- filename ⇒ file that should be offered to systems doing PXE boot (relative to the TFTP server's root)
- Start and enable DHCP
systemctl start dhcp systemctl enable dhcp
Create PXE Content
Now that both required services are setup, it is time to create the PXE boot content to be handed out over TFTP.
- Install a required package
yum install syslinux
- Create the PXE Linux directory structure
mkdir -p /var/lib/tftpboot/pxelinux.cfg mkdir /var/lib/tftpboot/centos7/
- Copy the pxelinux.0 data file
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- Create the PXE Linux default config file (replace '<nfs-ip>' with actual NFS server IP
vim /var/lib/tftpboot/pxelinux.cfg/default default menu.c32 prompt 0 timeout 600 menu title ########## PXE Boot Menu ########## label 1 menu label ^1) Install CentOS 7.2 x86-64 kernel centos7/vmlinuz append initrd=centos7/initrd.img method=nfs:<nfs-ip>:/iso/centos7.2-dvd/
- PXE Boot Menu Reference Source: https://wiki.centos.org/HowTos/PXE/PXE_Setup/Menus
- To include a splash image when doing PXE, copy the image from the local system
cp /boot/grub/splash.xpm.gz /var/lib/tftpboot/
- Copy the files (images/pxeboot/vmlinuz and initrd.img) from the install disk to /var/lib/tftpboot/centos7/
mount -t iso9660 -o loop CentOS-7-x86_64-DVD-1511.iso /mnt cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/ cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/
- Restart dhcpd and xinetd
systemctl restart dhcpd systemctl restart xinetd
The system is now ready to accept incoming PXE boot requests.
/var/lib/tftpboot/ contains:
- centos7 (directory)
- pxelinux.0 (data file)
- pxelinux.cfg (directory)
- splash.xpm.gz (splash image)
/var/lib/tftpboot/centos7 contains:
- initrd.img (centos 7 initrd)
- vmlinuz (centos 7 boot kernel)
/var/lib/tftpboot/pxelinux.cfg contains:
- default (config file)