From Fedora Project Wiki
network booting
This describes how to set up a server for network booting of both UEFI and BIOS clients.
packages
On the server, you'll need several packages:
- dhcpd
- tftp-server
- grub2-efi-${ARCH}
- syslinux
setup
- Make sure tftp is enabled in /etc/xinetd.d/tftp
- Copy necessary files:
mkdir /var/lib/tftpboot/efi/ /var/lib/tftpboot/pxelinux/ /var/lib/tftpboot/pxelinux/pxelinux.cfgcp /boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/efi/bootx64.eficp /boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/efi/grubx64.eficp /usr/share/grub/unicode.pf2 /var/lib/tftpboot/efi/unicode.pf2cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/pxelinux.0
- Configure your dhcpd server to use the EFI boot images packaged with grub, and configure a test system to boot using the EFI boot image. A sample configuration in
/etc/dhcpd.confmight look like:
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16;
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
subnet 10.0.0.0 netmask 255.255.255.0 {
option routers 10.0.0.254;
range 10.0.0.2 10.0.0.253;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.0.0.1;
if option arch = 00:07 {
filename "efi/bootx64.efi";
} else {
filename "pxelinux/pxelinux.0";
}
}
host example-ia32 {
hardware ethernet XX:YY:ZZ:11:22:33;
fixed-address 10.0.0.2;
}
}
- Add a grub config file to
/var/lib/tftpboot/efi/grub.cfgand a syslinux config file to/var/lib/tftpboot/pxelinux/pxelinux.cfg/default.- A sample grub config file at
/var/lib/tftpboot/efi/grub.cfgmight look like:
- A sample grub config file at
set default=0
if loadfont /unicode.pf2
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_output gfxterm
set timeout=5
menuentry 'Fedora 20' {
load_video
set gfxpayload=keep
insmod gzip
insmod part_gpt
insmod ext2
linuxefi /vmlinuz-3.16.3-200.fc20.x86_64
initrdefi /initramfs-3.16.3-200.fc20.x86_64.img
}
- A sample syslinux config file at
/var/lib/tftpboot/pxelinux/pxelinux.cfg/defaultmight look like:
- A sample syslinux config file at
default vesamenu.c32 IPAPPEND 2 timeout 100 label Fedora MENU rawhide x86_64 kernel /rawhide-x86_64/vmlinuz append initrd=/rawhide-x86_64/initrd.img
- Copy the boot images into your tftp directory:
cp /path/to/x86_64/os/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/rawhide-x86_64/cp -al /var/lib/tftpboot/pxelinux/rawhide-x86_64/ /var/lib/tftpboot/efi/rawhide-x86_64/
