Foreman 1.13 (currently as Release Candidate 2) supports Grub2 natively in core and smart-proxy. Although the main motivation was UEFI support, Grub2 as the standard platform for many architectures allows more integration via Foreman now.
ARM64 and IBM POWER are the two architectures which can benefit from tighter Grub2 integration in Foreman. Let’s take a look on the latter in this article. We will need:
- Foreman 1.13.1 instance (due to bug)
- a Smart Proxy instance 1.13
- an IBM POWER system
Foreman must be configured for bare-metal provisioning as usual (DHCP, TFTP), new operating system must be created and associated with ppc64 or ppc64le architecture. It is important to keep the architecture name as mentioned here although it is possible to create any other name like “My Very Own PPC64” - this won’t work.
We only tested RHEL 7.0, but this tutorial should work with any other Linux. Grub2 and Kickstart templates must be associated with the operating system and the former should be edited. Replace “linuxefi” with “linux” and “initrdefi” with “initrd”, the rest of the file remains same.
On a IBM POWER system, generate new Grub2 binary and copy it over to Smart Proxy with TFTP feature:
grub2-mkimage -O powerpc-ieee1275 -d /usr/lib/grub/powerpc-ieee1275 -o /root/grubppc64.efi -p "" all_video boot btrfs cat configfile echo ext2 fat font gfxmenu gfxterm gzio halt hfsplus iso9660 jpeg loadenv loopback lvm mdraid09 mdraid1x minicmd normal part_apple part_msdos part_gpt password_pbkdf2 png reboot search search_fs_uuid search_fs_file search_label serial sleep syslinuxcfg test tftp video xfs linux scp /root/grubppc64.efi smart.proxy.lan:/var/lib/tftpboot/grub2/
Note the file must have the following name:
We are aware the extension should be “elf”, this was a typo and we are tracking this as a bug.
Double check permissions and SELinux context of the file in the TFTP directory.
Once new host entry is created, the system can be turned on and provisioned normally. Make sure PXE Loader is set to “Grub2 UEFI” in order to provide the correct DHCP filename option. Grub2 configuration files should be created in the /var/lib/tftpboot/grub2 from the associated template.
Once the host exits build mode, be aware that Grub2 Local Boot template cannot be used as it was designed for GRUB2 Intel EFI systems. Provisioned system must be set to boot from hard drive instead of network. If you know how to chainboot PPC64 system via Grub2 network, let us know in the comments!