[OpenBIOS] Fixing QUIK boot loader support

Lennart Sorensen lsorense at csclub.uwaterloo.ca
Sun Feb 8 01:49:27 CET 2009


After trying to fix a problem with the quik boot loader (as in you can't
actually compile it with a current e2fslib without it breaking), I kept
having odd problems.

My tests were done using qemu (from git) and hence using openbios-ppc
(which is way better than openhackware ever was).  I managed to compile
with an old library version just to verify that things still worked that
way, and they did.  Howver as soon as I changed anything about how QUIK
structured its data, then it no longer booted.  In fact it didn't even
appear to try to start the boot loader.  Seemed odd, and even though I
don't considere myself that experienced at dealing with assembly, I was
pretty sure what I was doing was right.  But it never worked.

So after about 3 days of trying different things and many many reboots
of qemu, I finally thought I would look at what openbios uses to
determine if the bootloader should be started.  Much to my surprise I
found a copy of a data structure from quik's source code plastered in
openbios, and not only that openbios had various #define values copied
from quik as well and was using those to determine where in the first
stage boot loader to check for the string "QUIK" to decide if this was
in fact the quik boot loader it had located.  Gah!

Well clearly as soon as I change quik, and move things around, this
match no longer happens, and openbios ignores the perfectly valid
bootable partition.  Wouldn't it make a lot more sense to simply try
booting any partition marked bootable?  Isn't that what a real oldworld
powermac would have done?

So my first "quick fix" was to change the structure and constants to
match my modified quik boot laoder, and hey what do you know, now it
boots and it works with new e2fslib versions and it even supports using
more than 11MB of ram for the kernel+initrd combination (I increased it
to 64MB from 16MB mapped, except for the ppc 601 which is different and
which I have no idea how to test).

So a better fix would be to scan for the string QUIK anywhere in the 1KB
first stage bootloader area, rather than looking at a specific location.

The best fix would of course be to simply boot the partition if it is
flagged as bootable and hence support any boot loader that could be
there not just QUIK 2.x.  Not sure if or how this might conflict with
the yaboot support.

Any suggistions and/or preferences for how this gets done?  I will be
fixing it one way or another because the current method simply doesn't
work since the current version of quik no longer works if you recompile
it on a modern powerpc linux system, and I have fixed that (I just have
to figure out where the maintainer is to see how to go about doing a new
release, assuming he still cares).

-- 
Len Sorensen



More information about the OpenBIOS mailing list