Feature #12635
Updated by Lukas Zapletal over 8 years ago
It looks like Grub2 is the best and most compatible way of PXE booting EFI hardware and it is available in most Linux distributions. It makes sense to provide support in our Puppet classes and installer to deploy these.
Puppet changes as follows:
if RHEL6 or Fedora 18 or older is found then
install grub package
create /var/lib/tftproot/grub/
copy /boot/efi/EFI/*/grub.efi to /var/lib/tftproot/grub/grubx64.efi
create a *relative* symlink shim.efi to /var/lib/tftproot/grub/grubx64.efi
ensure correct file permissions and SELinux context
if RHEL7 or Fedora 19 or newer is found then
install packages: grub2-efi grub2-efi-modules grub2-tools shim
create /var/lib/tftproot/grub2/
copy /boot/efi/EFI/*/grubx64.efi to /var/lib/tftproot/grub2/grubx64s.efi
copy /boot/efi/EFI/*/shim.efi to /var/lib/tftproot/grub2/shim.efi
build grub2 with all modules with: grub2-mkimage -O x86_64-efi -d /usr/lib/grub/x86_64-efi -o /var/lib/tftproot/grub2/grubx64.efi -p "" `find /usr/lib/grub/x86_64-efi/*.mod -printf "%f " | sed -e 's/\.mod//g'` (X)
ensure correct file permissions and SELinux context
if Debian or Ubuntu is found then
install packages: grub-common grub-efi-amd64-bin
create /var/lib/tftproot/grub2/
build grub2 with all modules with: grub-mkimage -O x86_64-efi -d /usr/lib/grub/x86_64-efi -o /var/lib/tftproot/grub2/grubx64.efi -p "" `find /usr/lib/grub/x86_64-efi/*.mod -printf "%f " | sed -e 's/\.mod//g'` (X)
create a *relative* symlink shim.efi to /var/lib/tftproot/grub/grubx64.efi
ensure correct file permissions
I have only tested this with latest LTS Ubuntu and Debian Jessie (8)
(X) - this command could be extracted to a helper script