[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Why can't yaboot work with oldworld as first stage?



On Tue, May 15, 2001 at 06:18:34PM -0700, Mike Fedyk wrote:
> > 
> > no.  oldworld OpenFirmware does nothing more then activate the
> > hardware MacOSROM, this is on a ROM chip and has nothing to do with
> > any sort of disk media.  
> >
> 
> It obviously does more, or quik wouldn't work ;)

in its standard configuration it does no more... OpenFirmware is
supposed to have far more capability but Apple didn't bother to
make it work right.  all apple tested and perfected was the `boot
macosrom'.  

borrowing from some comments about x86 BIOSes in the linux kernel
source apple's OF QA process is something like this: (not quite so bad
now..)

1: Write OpenFirmware code. <----
				 ^
2: Does it compile?      no ->---|
				 ^
3: Does it boot MacOS 7 ? no ->--|

> What executable format is quik in anyway?

first stage is powerpc asm.  second stage i think is something custom,
i think its ELF with all the ELF stuff stripped off.  first stage
loads it into memory, sets the load-base or somesuch and tells OF to
execute that code. 

> I understand that, but it would be _made_ to understand oldworlds.

more is required then simply recompiling in a different executable
format.  the proper format to use is the same as quik's second stage.  

> Oh, what about fat support?  

on newworlds OF will refuse to read a FAT filesystem unless the disk
uses x86 partition tables.  so i doubt oldworld is any better.  like i
keep saying the only way your going to get yaboot going on oldworld is
to make it be the quik second stage.  there is nothing wrong with
that.

you seem to be thinking that the bootstrap partition kludge used on
newworld somehow makes OF booting more reliable.  it doesn't.  it has
nothing whatsoever to do with it.  the *ONLY* reason we use the
bootstrap partition kludge on newworlds is because we have to,
newworld OF is broken and refuses to load a bootblock.  oldworld OF
does not have this flaw.  (ironically enough oldworld OF is better
then newworlds in this respect...)

> Why does it boot reliably with tiny xcoff kernels on floppies?

it doesn't.  (boot reliably that is).

> Why does newworld need that anyway?  Can't OF > 3.0 work with bootblocks or some
> non-partition setup?

nope, apple removed the ability for OF to load a bootblock in 3.0,
along with it they removed the ability to load a raw partition.  (i
have confirmed this)

[yaboot as quik second stage]

> Looks good...

good.

> > alternativly oldworlds i think have the ability to bootstrap like
> > RS/6000's do.  in this case a xcoff yaboot would be dded to a
> [snip]
> Agreed, that wouldn't be any better, and wouldn't solve OF.

nope, this is the aproach apple took with OSX's bootloader for some
reason.  thats what that Apple_Loader partition is.  it does absolutly
nothing but waste space on newworlds, but its booted on an oldworld.
(conversly the Apple_Boot does nothing but waste space on the
oldworld, but is booted nearly the same way as ybin on a newworld).

> I think it is now a stated fact in this thread that oldworld OF, yaboot, and
> quik are total crap. ;)

oldworld OF is total crap, quik is rather a mess, but not the main
thing to blame for crappy OF booting.  yaboot isn't too bad but it
could use a massive cleanup and decrufting.  its basically like this:

silo -> garbled, code/feature removal -> quik -> many bug fixes, some
poof code, some random touchup -> yaboot.  

silo has alot of really nice features that all disappeared
misteriously when its bastard child quik was born.  

> Will apple release these patches?  Has darwin made them open anything like
> this up to the public?

they are in Forth, and thus cannot be made proprietary like C code.
but that is not the point, they are non-free and cannot and will not
be included in this bootloader package.  (i will not have yaboot/ybin
end up in non-free or contrib of debian).  

the only way is a cleanroom reimplentation.  

> If you do that, I think it will probably become popular.  Especially if you
> give cvs access.

i will probably start either a sourceforge project, or one on
the GNU thing that just started.  if there is interest in helping this
out.  

[nramrc patching]
> Probable.

apple seems to figure out how to put the right patches in but then im
not sure how reliable they really do it.. all they care about is the
beige g3...  systemdisk is totally proprietary.

> bloat, and how big can nvram get anyway?

not that big, on my newworld the entire nvram (including the macos
partition) is 8K.  im not sure what it is on oldworld.  

> So, how exactly does this MacOS rom work anyway?
> 
> I'm guessing:
> 
> look in map for hfs partitions
> 
> read partitions until valid system folder is found
> 
> execute necisary file

actually its:

destroy OpenFirmware

ruin OpenFirmware device tree

screw up hardware state etc.

look at disks for Apple disk driver partitions (all that Apple_Driver,
Apple_Patch crap) load them if they are found, crash if they are
corrupt, pretend the disk does not exist if they are not found.

check Apple_HFS partitions for, a 68K bootblock, and a blessed MacOS
system folder with a MacOS System file, if all found load the MacOS
System file.  

> Now...
> 
> When/how does it use the driver partitions?

see above

i know what your getting at, use the MacOSROM to make a bootloader for
linux.  ill stop you right there, ANY macos based booting is
fundementally flawed (quoting benh).  this includes miboot, bootx, and
a hyopthetical bootloader masquerading as a MacOS disk driver.  

alot of the same problems that make MacOS based booting on newworld
horrible also exist for oldworld (some just less severe), this is the
reason benh has shunned bootx and all MacOS based booting on newworlds
and will hear no bug reports from users who continue to do so.  macos
based booting still causes problems on oldworld so it would be a Good
Thing to get rid of BootX and other MacOS based bootloaders for
everything except temporary system rescue.  

> What is apple's license on MacOS 7.5 that they have downloadable?  Would we
> be able to dist parts of that under non-free?

no.  the licence is as non-free and proprietary as it was the day it
came out.  the only difference is apple gives it to you gratis.  you
are not permitted to distribute it, reverse engineer it, decompile it,
<insert freedom forbidden by standard EULAs>.  

> Maybe we can use oldworld OF as it was _designed_ and boot with the rom.

no.  see above, MacOS based booting whether via disk installed MacOS
or the MacROM is fundementally flawed, only a true OpenFirmware based
bootlaoder will actually get us anywhere, otherwise you may as well
use BootX because there is no difference.  

just a note, originally the MacOSROM was *ALL* of MacOS, the original
classic could even boot off the ROM entirely.  that is why MacOS fit
on a floppy, all there was was just some patches and new features.
even today the MacOS ROM contains 4MB of MacOS, the majority of MacOS
system calls are run from the ROM (which is why newworlds run macos
faster then oldworlds, the ROM just gets stashed in a block of ram)

> This may look like a step backwards, but it may be the only solution in some
> cases, or temp solution until nvram patches can be made.

its not a solution at all.  it does not solve the fundemental problem
with MacOS based booting.  there is no point to wasting time on it.
if you want macos based booting use BootX. period. 

i am only interested in building a real bootloader that will free the
kernel from dealing with all the problems MacOS (including the ROM)
creates.  anything other then that is a waste of time, miboot and
bootx already exist as MacOS based bootloaders, and they suck just
like all MacOS based bootloaders will suck.  (miboot, a `driver' based
loader, bootx all have really serious user problems that cannot be
solved). 

> Anyone have docs on what the rom does?  URLs would be nice.

its MacOS, so whatever MacOS does is what the ROM does.  like i said,
don't waste your time.

just as a point of interest, NetBSD has allegedly gotten OpenFirmware
based booting working very well (or at least the docs give that
impression) we should look at thier code and see what they came up
with.  and NetBSD has no MacOS based bootloaders at all, no bootx, no
miboot, nothing. the ONLY way to boot netbsd is via OpenFirmware.  so
they MUST have gotten this cleaned up.  

i really think it was unfortunate that BootX ever got written really,
all it has done is create a band-aid good enough to halt any progress
whatsoever on a real bootloader for oldworlds.  when it totally failed
to function on newworlds was when it kicked yaboot into existence.
but now these flaws are still causing trouble, because BootX is a
band-aid, not a solution.  you look at the BSD guys, they had no MacOS
based bootlaoder and have no such interest in such kludges [0], that
forced them to build a real bootloader and now they have one.

[0] in fact it was only very recently that netbsd could even be
installed on a disk using Apple partition tables, before you had to
use an x86 partition table with just one partition containing the bsd
disklabel (just like on an x86 box). that precluded a MacOS install
anyway.  

-- 
Ethan Benson
http://www.alaska.net/~erbenson/

Attachment: pgpwWZCKsSPqp.pgp
Description: PGP signature


Reply to: