Some time ago I wrote about the the state of GRUB2 and a milestone on getting it boot my Apple PowerBook G4 without manual intervention. More than a year later, GRUB2 has changed and improved a lot, as the community keeps growing and patches and ideas are continously being posted.
Some months and commits after my previous post, GRUB broke again on
Apple OpenFirmware and I'd get dropped to OF console, the amount of
commits since the last known working version and the current SVN was quite
big, and although I was able to narrow it to a few suspicious changes, I had
no time to bisect it properly, and sadly I had to go back to
yaboot
for a while.
But procrastinating sometimes helps, and when I should have been writing
and studying, on December I gave GRUB a new try on my laptop to see if a few
important changes to memory allocation would have changed anything. And it did!
So after fighting quite a few problems, I was able to
report partial success
to grub-devel
.
Again, getting GRUB installed correctly was a bit challenging and needed
some hackery, due to incorrectly generated device.map
, and the
linux module mysteriously not getting loaded. Luckily, Michel Dänzer found out
that this was due to a bug in sort ordering in the HFS module, which broke
the lookup of files with underscores like _linux.mod
, and for
which he posted a possible fix by taking Linux's table of character
ordering, which is a blob of hex values.
GRUB developers didn't seem too happy about applying the patch:
they argument that a blob like that should be well documented or written
in some other more readable way, and there's a possible problem with the mix
of Linux GPLv2 and GRUB GPLv3+ codebases, if a table of data like what Michel
posted is actually copyrightable. The discussion ended up dying and nothing
was done... until Pavel Roskin
picked it up
weeks later and posted a new patch, based on hfsutils
GPLv2+
code, which addressed these issues. The new patch seems to have a few issues,
which makes it fail as before, but hopefully it'll be fixed soon.
Additionally, I wasn't able to boot using UUIDs as the search commands
fails to detect the correct boot device on my system (but not on Michel's), so
I had to disable that in /etc/default/grub
.
To workaround the linux module loading bug while the patch is fixed,
I just added this ugly hack to /etc/grub.d/09_local_prelinux
:
#! /bin/sh -e # Work-around for bugs in the hfs module which makes the load of # linux.mod fail. cat << EOF insmod (hd,3)/usr/lib/grub/powerpc-ieee1275/_linux.mod insmod linux EOF
This is enough to get the initrd
and linux
commands available. However, update-grub will still add search
commands to your menu entries even if you disabled UUID support; I can't
understand why, but I know it breaks on my PowerBook due to some OF rarety.
Just removing the line from the menu entry will leave me with a working
config that boots without any manual editing at GRUB prompt.
The latest GRUB snapshot in Debian fixes the device.map issue, but adds
one last
issue:
update-grub will fail due to some gfxterm detection code, a workaround is
to replace an exit 1
with exit 0
when this happens
in /etc/grub.d/00_header
.
On the “weird architectures” front, it's worth noting that this month Dave Miller popped up on the list and started posting patches to fix the rotten SPARC port, and I think it's safe to assume that it'll be on an usable state really soon. Impressive!