UEFI PXE Ubuntu Installation
Posted on Fri 26 June 2015 in misc
Recently, I tried a network installation on a brand new rack server Dell PowerEdge R730. I used the same procedure I have always used. This server can't make a PXE boot on legacy boot mode (BIOS), UEFI mode can. Ok, let's used UEFI !
Unfortunately, my PXE boot failed with :
Boot failed : PXE Device 1 : Integrated NIC 1 Port 1 Partition 1
After some research, I found that Syslinux, which I used for booting Ubuntu installer, isn't compatible with UEFI ! (http://www.syslinux.org/wiki/index.php/PXELINUX#UEFI)
"The "(l)pxelinux.0" bootloaders are capable of netbooting BIOS-based clients"
In order to enable PXE boot for UEFI we must provide 64bit version of
syslinux.efi.
First, download latest version of syslinux package on kernel.org.
https://www.kernel.org/pub/linux/utils/boot/syslinux/
Untar it inside a temporary directory.
Next, copy these files inside your tftp server directory.
cp syslinux-6.03/efi64/com32/elflink/ldlinux/ldlinux.e64 /tftpboot/ cp syslinux-6.03/efi64/efi/syslinux.efi /tftpboot
Note : some UEFI devices tried 32bit boot, in this case, you should
used efi32.
In order to don't break configuration for PXE-BIOS boot, we need to
take care of provide the good file for bios or UEFI. ISC-Dhcp can.
In your /etc/dhcp/dhcpd.conf :
replace:
filename "pxelinux.0"
by :
option architecture-type code 93 = unsigned integer 16; if option architecture-type = 00:09 { filename "syslinux.efi"; } elsif option architecture-type = 00:07 { filename "syslinux.efi"; } else { filename "pxelinux.0"; }
Hope this help,
Tristan
References :