A better grub2pxe
grub2pxe
is our "Linux MFS" replacement for pxeboot
from FreeBSD-world. Since it is the future (and has been for at least 10 years now) there are a couple of things that could/should be improved:
- We should get our changes synced up with some suitably recent version of mainstream Grub. In the past I have merged our changes (bootinfo, FreeBSD kernel loading fixes, TFTP improvements). My most recent attempt (last year sometime) resulted in a grub2pxe that didn't work right. So this needs to get sorted.
- Come up with the minimum set of grub2pxe-loaded
grub.cfg
files that will handle loading FreeBSD or Linux MFSes, FreeBSD or Linux on disk images) and UEFI (GPT) or legacy BIOS (MBR) format images on all our nodes types with their various quirks. I started down this path as part of #233 (closed), meticulously testing all possible combos for each node type, but after about a month of off and on work, I gave up and just started tweaking the installed versions til they worked without going back and integrating the changes and retesting working combos. All in the name of "let's just get this done already!" The result is a trail of highly similar versions that could be reduced and consolidated. - Grub has support for network transports other than TFTP, in particular HTTP. Once grub2pxe has been loaded, we could download the kernel and MFS image much more efficiently with HTTP. For one, it is TCP and not UDP so we get some congestion control. For another, there is likely a lot more web server development going on than TFTP server development, in particular for handling lots of simultaneous clients. Finally, putting a random-access disk-based boot loader on top of TFTP results in particularly horrible behavior when it has to do a seek. Seeking backward means starting over at the beginning, and doing sequential block-by-block transfers of data (that you throw away) til you reach the correct new location. Trying to change the behavior of the boot loader by avoiding backward seeks is one of the set of highly invasive, custom changes to Grub we have been carrying around.