We have some HPE ProLiant blade servers, Gen9, which we would like to network boot to install CentOS.

We are using Cobbler to produce a configuration.

At boot time, the server will request a file named for its UUID, which fails. It then asks by MAC, which succeeds. It loads GRUB from a .efi file and GRUB is able to present a boot menu.

When we select the only option from the boot menu, it advances to a blank screen and . . . does nothing.

By looking at the Cobbler server's logs, I can see that the server is requesting vmlinuz and, as far as I can see, it completely retrieves the file, but what I do not see is it ever downloading initrd.img.

I've tried playing with the GRUB config, but not found the right magic yet.

Has anyone else encountered this problem, and, if so, can you share what you did to get past it?

It is worth noting that when we try a legacy BIOS boot rather than UEFI, it works fine. I am aware that it pulls down a different set of files for that, but I wanted to mention this because it indicates that there is nothing wrong with the target server, the TFTP service on the Cobbler server, or the network between them. We don't want to use this as a workaround, though, because BIOS is not going to be around forever.

  • FWIW I ended up using ipxe.org when netbooting UEFI systems (Oracle/Sun X7) – wurtel Jul 30 '19 at 12:37
  • I appreciate the link, but unfortunately, this is an enterprise system and needs to be stock. – Glenn Lasher Aug 1 '19 at 15:59
  • ipxe is only used on the network install server, the resulting install on the server itself is not affected. – wurtel Aug 2 '19 at 6:30
  • Yes, but I would have to flash this not-stock firmware onto the server. The firmware must be stock. – Glenn Lasher Aug 5 '19 at 13:05
  • Again, no; it's a bit of code that gets loaded via uefi network boot and bootstraps the rest of the install. No trace is left behind on the server. – wurtel Aug 6 '19 at 9:07

The winning solution was to move to GRUB2 from GRUB Legacy (0.97).

There is a straight-line distance of about 120 miles between the DC where the server being booted is located, and the one where the TFTP/DHCP server is located. This necessarily causes some latency. Since TFTP is a non-windowing protocol, a packet has to be acknowledged before the next one is sent. By extension, if the packets are larger, the overall transfer will take less time, assuming everything works well.

GRUB Legacy imposed a timeout of five minutes and a packet size of 512 bytes. GRUB2 uses a packet size of 1024 bytes and didn't time out. It took about 14 minutes for the server to boot.

Legacy-mode boot worked because the server then uses Syslinux rather than GRUB.

The downside is that the configuration is created using Cobbler. No currently-released version of Cobbler supports GRUB2, so I had to create a script that would modify the dhcpd.conf file after Cobbler was done building it, and to create a suitable grub.cfg-01-${mac_address} file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.