Project

General

Profile

Feature #12635

Updated by Lukas Zapletal over 7 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 

Back