Page 1 of 2

Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 1:12 am
by Solar
This has been extracted from "Working on the OS FAQ", to keep the rather lengthy discussion out of that thread. Results of the discussion will be cross-posted to "Working on the OS FAQ" by me.
bubach wrote: How come that the FAQ don?t have anything about setting pmode/gdt etc?
IMHO: Linking to bona fide osdev is a good thing, but shouldn?t the FAQ have atleast some basic info on this?
crc wrote: http://www.osdev.org/osfaq2/index.php/ProtectedMode tells how to set pmode IIRC. I did a quick search for info on GDT and IDT, no results came up :-(

I agree; the FAQ should cover at least the basics of these as they are very useful. Maybe I'll add some information on them this weekend.
bubach wrote: ok, but what about a simple example?
i can?t even find a simple example of a bootsector...

a simple example bootsector that reads a couple of sectors of the floppy and maybe goes into pmode would be nice..
df wrote: coz we pretty well tell everyone to use grub instead of worrying about a bootsector.

its time to get people past the bootsector to writing a real kernel etc.
Brendan wrote: Hi,
df wrote: coz we pretty well tell everyone to use grub instead of worrying about a bootsector.

its time to get people past the bootsector to writing a real kernel etc.
I disagree - it's time to prevent people from starting a full kernel when they lack the knowledge needed to write a simple boot sector.

IMHO GRUB is a lazy mans curse rather than something that's actually useful for serious OS developers.


Cheers,

Brendan

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 1:13 am
by Solar
PeaceMan wrote: I've only just started fiddling around with bootsectors and OS dev and I have to agree with Brendan:
I disagree - it's time to prevent people from starting a full kernel when they lack the knowledge needed to write a simple boot sector.
Messing around with simple bootsectors taught me things as I had to learn how to use assembler, print text (without simple headers like iostream), load sectors and enable the A20 line.

I only just enabled the A20 line this morning and it really gave me a feeling of achivement and progress.

Also, I don't like using 'black boxes' of code that I don't understand or that I couldn't write myself, as it stops me learning what it's functions are.
df wrote: thats why there is 100000 bootsectors out there and few OS's. People write a bootsector, go 'yay' and thats it.

consdier, everything you learnt in the bootsector is totally useless when applied in an os. printing text, you need a different method in pmode. reading sectors, ditto. enableing the a20, you do it once and thats it...
Brendan wrote: Hi,
df wrote: thats why there is 100000 bootsectors out there and few OS's. People write a bootsector, go 'yay' and thats it.
You'd rather see 100000 kernels with partial memory management and few OS's? Dedication is a requirement for OS dev, some people just don't have it. Perhaps if we advocated GRUB, the Linux kernel and X we'd have more OS's...

IMHO GRUB is limited, and imposes it's limitations onto the resulting OS. GRUB is good for people writing hobby OS's who are unlikely to be restricted by GRUB. For serious OS developers GRUB doesn't do much that can't be done within a week without GRUB's limitations.

It's better not to advocate anything, but rather offer possible options and the advantages/disadvantanges of each option (especially for the OS FAQ).

df wrote: consdier, everything you learnt in the bootsector is totally useless when applied in an os. printing text, you need a different method in pmode. reading sectors, ditto. enableing the a20, you do it once and thats it...
I wrote my first boot sector when I was learning 80x86 assembly over 10 years ago (before GRUB existed). Enabling A20 is a good little introduction to the keyboard controller chip, and hardware programming in general. Reading sectors via the BIOS is a good introduction to the (conceptual) physical layout of data on disks. Boot sectors are also an easy introduction to memory management (e.g. "where should I put the kernel?", and "what are segments?").

Would you consider it a good idea for a potential OS developer to have some experience writing application software before starting a kernel? Why?


Cheers,

Brendan

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 1:15 am
by Solar
crc wrote:
IMHO GRUB is limited, and imposes it's limitations onto the resulting OS. GRUB is good for people writing hobby OS's who are unlikely to be restricted by GRUB. For serious OS developers GRUB doesn't do much that can't be done within a week without GRUB's limitations.
What limits are you thinking of? I'm not the biggest fan of GRUB, but it works pretty well on most of my current hardware. To be honest, my kernel isn't useable with GRUB, though I am attempting to add a GRUB-compatible wrapper (which will be 100% optional)
crc wrote:
consider, everything you learnt in the bootsector is totally useless when applied in an os.
That's not true if your OS runs in real mode :-)
df wrote:
Brendan wrote: IMHO GRUB is limited, and imposes it's limitations onto the resulting OS. GRUB is good for people writing hobby OS's who are unlikely to be restricted by GRUB. For serious OS developers GRUB doesn't do much that can't be done within a week without GRUB's limitations.
have you seriously looked at grub? netboot support on LOTS of network cards, tftp server, native filesystems, automatic decompression, etc.

what limitations does it imply? that you cant load a kernel below 1mb? and what else???

so grub limits serious os coders.. right. grub can boot linux, freebsd, hurd, dos, windows, os/2, etc. but none of those are serious OSes eh?

so tell me what these really big grub limitation issues are?
crc wrote: I thought that you had to use chainloading to boot Windows, DOS, and OS/2 with GRUB. Am I wrong?

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 1:18 am
by Solar
Brendan wrote: Hi,
crc wrote: What limits are you thinking of?
First, when I said "GRUB limits" I meant limits imposed by using GRUB as intended (in conjunction with it's multi-boot specification). Obviously these limits shouldn't apply if you're using GRUB to chain load a normal boot sector (e.g. like DOS's).

You can't have your kernel loaded into conventional memory, can't have a list of available video modes the user can choose, can't automatically have a video mode set reliably, can't automatically select the right kernel to boot from a list of possible kernels, can't boot the kernel with paging enabled, can't load several copies of the kernel into memory corresponding to several NUMA memory ranges, can't set boot options (unless you expect the user to add "command line arguments" to the kernel, which IMHO isn't very professional for OS's designed for average users), can't set the correct RTC time before boot (which is important for my OS), can't handle a custom kernel binary format or custom file system (without major hacking).

The above is just a list of reasons why my own OS can't use GRUB (rather than a list of all possible reasons).

GRUB's limitations aren't the only reason I don't like advocating GRUB. When a new OS project does start with GRUB they tend to begin with a simple kernel (elf or a.out) loaded from a standard file system into physical memory just above 1 Mb. Then they keep adding code to this simple kernel. It puts the OS developers into a certain mindset when they should be learning and making choices for themselves, and sooner or later they've got enough of the kernel done that it's too hard to change to something different (or too hard to change to something they really want after learning enough about OS development to make completely informed decisions about it).

It seems I'm not alone in thinking that GRUB is a solution to a problem no-one ever had. Let's have a look at the number of OS's that do use GRUB:
- All microsoft OS's, OS/2, SCO Unix and QNX are booted through chain loading
- GRUB has been hacked for FreeBSD, NetBSD, OpenBSD, and Linux (these OS to aren't designed for GRUB either)
- For FreeBSD it's recommended to use FreeBSD's loader instead (GRUB won't handle it's kernel parameters)
- GNU/Hurd is the only OS I know of that actually does use GRUB as intended

That's 1 OS out of all OS's I can think of (excluding some OSs that haven't been completed yet, hundreds of OS projects that died, and some that haven't died yet).

I'm not against GRUB - it's great for those who already have a firm OS design and enough knowledge to determine if it's suitable for the project or not (but IMHO it's not the best thing for people who are just starting in OS development).
crc wrote: I'm not the biggest fan of GRUB, but it works pretty well on most of my current hardware. To be honest, my kernel isn't useable with GRUB, though I am attempting to add a GRUB-compatible wrapper (which will be 100% optional)
I use GRUB to dual boot between Windows and Linux (and it does work well). I tried to get it to boot a DOS floppy via chainloading and it failed to restore the video back to text mode before booting it and also makes DOS crash somehow. I still haven't figured out if it's possible to get GRUB to do it. One of my early boot loaders (from back when I was still learning assembly) had an option to boot a floppy. All it did was load the first sector of the floppy, set some registers and jump to 0x7c0:0000 - worked perfectly on everything I tried (even booted my OS from the second floppy drive), but GRUB has trouble???

If the OS isn't designed for GRUB, people can use GRUB to chainload it (you've lost almost nothing).


Cheers,

Brendan
crc wrote: My main purpose in adding a GRUB wrapper is to make some tests easier. My current boot sector is pretty simple, but doesn't work on many computers since it uses multitrack reads. (I hope to rectify this soon) The GRUB option gives me a loader that I know works, and allows me to test the OS on more hardware. It'll also make it easier for the users who already use GRUB to boot it. On the other hand, it takes GRUB longer to load than my OS takes to be recompile itself at boot time.

I must admit, I prefer to put my kernel in the first meg of RAM, which GRUB doesn't like doing. One of my test machines only has 1MB of RAM, so GRUB is useless on it.

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 1:19 am
by Solar
df wrote:
Brendan wrote: Hi,
You can't have your kernel loaded into conventional memory, can't have a list of available video modes the user can choose, can't automatically have a video mode set reliably, can't automatically select the right kernel to boot from a list of possible kernels, can't boot the kernel with paging enabled, can't load several copies of the kernel into memory corresponding to several NUMA memory ranges, can't set boot options (unless you expect the user to add "command line arguments" to the kernel, which IMHO isn't very professional for OS's designed for average users), can't set the correct RTC time before boot (which is important for my OS), can't handle a custom kernel binary format or custom file system (without major hacking).
looking at your list, i think your confused. grub is a bootloader. it loads your kernel. its not its job to act as your video driver and let you pick a graphic mode, thats your job. its not grubs job to setup page tables for you, thats your job. its not grubs job to know numa memory regions, thats your job, just like its not grubs job to init the APIC and fire each of your modules off in a thread.
its not grubs job to change RTC timer frequencies, thats your job. its nots grubs job to provide you with a list of devices in your machine. thats for you to work out.

grub loads your first stage into memory and thats it. anything more would be wrong. grub was designed to load a file from disk.

if you want all those extra features, write a 3rd stage loader that grub boots, then you can merrily go on your way and do numa multiple kernel loads etc.

thats essentially what freebsd does
For FreeBSD it's recommended to use FreeBSD's loader instead (GRUB won't handle it's kernel parameters)
that extra step is FreeBSD's BTX forth bootloader. Grub for some reason skips trying to load BTX and tries to load the freebsd kernel, when it should just load BTX.



Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 1:20 am
by Solar
Brendan wrote: Hi,
df wrote: looking at your list, i think your confused. grub is a bootloader. it loads your kernel. its not its job to act as your video driver and let you pick a graphic mode, thats your job. its not grubs job to setup page tables for you, thats your job. its not grubs job to know numa memory regions, thats your job, just like its not grubs job to init the APIC and fire each of your modules off in a thread.
its not grubs job to change RTC timer frequencies, thats your job. its nots grubs job to provide you with a list of devices in your machine. thats for you to work out.

grub loads your first stage into memory and thats it. anything more would be wrong. grub was designed to load a file from disk.
Unfortunately you seem unable to differentiate between OS's that boot with their own boot code, and OS that use GRUB as intended (ie. multiboot compliant OS's). The former can all boot without using GRUB, and GRUB merely imitates some of the boot that they expect (for e.g. chainloading) - I have no problems with this. For OS that use GRUB as intended my full list of limitations (and other comments) apply.

This is because GRUB (when used as intended) does NOT just load an OS's "first stage into memory and that's it". Instead it loads a kernel into memory and starts it, after enabling protected mode, detecting physical memory, detecting video BIOS and APM details, etc.
df wrote: if you want all those extra features, write a 3rd stage loader that grub boots, then you can merrily go on your way and do numa multiple kernel loads etc.
Of course - I could write a 3rd stage the reverses everything that GRUB (when used as intended) does, which could then start my normal code that does everything as needed by the OS. It would be a complete waste of my time but it could be done. It'd be much better to use GRUB (or LILO or boot magic any other boot manager) as a chain loader and save all the hassle.
df wrote: thats essentially what freebsd does
For FreeBSD it's recommended to use FreeBSD's loader instead (GRUB won't handle it's kernel parameters)
that extra step is FreeBSD's BTX forth bootloader. Grub for some reason skips trying to load BTX and tries to load the freebsd kernel, when it should just load BTX.
It's definately not "essentially what freebsd does". FreeBSD was never designed for (or modified for) GRUB's multi-boot specification (FreeSBD has it's own boot loader "booteasy"). Instead GRUB has been specially hacked to make it look useful. Because this "special hack" isn't kept up to date with FreeBSD's kernel parameters it's recommended that you skip half of it by using more of FreeBSD's normal boot code instead.

Anyway, FreeBSD isn't limited by GRUB because FreeBSD does not use GRUB. As mentioned in an earlier post "GNU/Hurd is the only OS I know of that actually does use GRUB as intended".


Cheers,

Brendan

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 2:07 am
by Solar
My opinion on this:

[hr]

On including vs. linking:

If information is readily available elsewhere, we link it, probably with a short introduction / overview of some kind. If we can write up something better, and maintain it, we write it up ourselves.

There's little sense in copy & pasting the work of others just so that it's in the OS FAQ itself.

[hr]

On the virtues of GRUB:

That has been discussed to death...

http://www.mega-tokyo.com/forum/index.p ... 69;start=0
http://www.mega-tokyo.com/forum/index.p ... 89;start=0

Two major arguments fielded against GRUB can be identified: It makes writing a kernel too easy, and it limits your artistic freedom.

The first is, excuse me, BS in my not so humble opinion. How can you possibly complain about anything making life easier? Next thing you'll complain that beginners should write a C compiler first so they understand the peculiarities of the language...

About GRUB limiting your artistic freedom... well, for those who want to write yet-another-OS that will hardly a problem, because the limitations of GRUB are remote indeed.

As for bubach's list of examples... aside from being incorrect and fuzzy around the edges (list of possible kernels, boot options and adding another file system are standard features of GRUB AFAIK), stuff like NUMA is pretty much advanced. I seriously doubt that people working on such advanced stuff will be looking to the OS FAQ for basic information on how to write a bootloader...

If you are hanging around at Mega-Tokyo, your OS isn't yet mature enough to own a whole desktop. You are a system citizen living alongside Windows or Linux. People will be using a boot menu. Instead of forcing your boot loader/menu down their throat, you should rather have your "very special bootsector (tm)" chainloaded by whatever bootmenu the user chose to install.

I agree that we should have some words on how to write a boot sector, in addition to how to install GRUB. Writing your own MBR, however, is out of scope IMHO.

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 3:19 am
by Pype.Clicker
i do agree with the fact that the world is not limited to GRUB. But neither is the FAQ, afaik (especially, it has the "Baby Steps" series that shows you how to write a bootloader, how to set up a GDT, etc)

The advantage of promoting GRUB is that it will give us a stable widely-available massively-tested base for a thing like "BareBones" which would have been of little use with a "mt-brewed" bootloader.

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 4:22 am
by distantvoices
the average OS developer is not by any means able to force anything down any peoples throats.

Be sure, the market mechanism would rip out subversive elements, no chance for forcing anything not wanted upon a customer.

I'd recommend writing a bootloader. If one writes one, by all means shall he do it no matter what arguments might hold against it. One learns doing it. One learns research methods eventually. It is a great kickoff experience. Later, on can still switch to GRUB if the mind is for it.

Never ever force ppl to "use Grub, use **** (aka weed: is said to make ppl happy, eh? BS) ..." Forcing usually leads to the exact opposite of what you wanna achieve.

To say it in short: it is ok to write a boot loader. It is ok to use GRUB. Period.

By the way: Maybe one could make the examples about Boot loaders and GDT/IDT more *explicit*, so that even those not seeing the wood coz of the trees *have* to stumble over them?

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 7:20 am
by bubach
Solar wrote:As for bubach's list of examples...
huh? i haven?t listed anything... ???

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 7:28 am
by Solar
Oops. Meant Brendan.

(My memory for names is a strange one. I always get the first letter right, even if it's a name I heard but once, years ago. But the rest... :D )

Re:Bootloaders and the scope of the FAQ

Posted: Mon Oct 11, 2004 9:57 am
by Brendan
Hi,
Solar wrote: If information is readily available elsewhere, we link it, probably with a short introduction / overview of some kind. If we can write up something better, and maintain it, we write it up ourselves.
That's sensible - a link to GRUB and a link to something like this (for e.g.):
http://www.nondot.org/sabre/os/articles/TheBootProcess/
Solar wrote: Two major arguments fielded against GRUB can be identified: It makes writing a kernel too easy, and it limits your artistic freedom.

The first is, excuse me, BS in my not so humble opinion. How can you possibly complain about anything making life easier? Next thing you'll complain that beginners should write a C compiler first so they understand the peculiarities of the language...
You'd be surprised how many good programmers have never had anything to do with assembly or segmentation (and possibly less surprised how many people without any programming experience decide to write an OS). An understanding of both assembly and segmentation are (IMHO) needed for the beginnings of a kernel. OS's are complex. Every training program ever created starts with easy stuff and builds up to harder things - for e.g. sharp knives, cordless tools and large colour photograhps would make brain surgery easy...
Solar wrote: As for bubach's list of examples... aside from being incorrect and fuzzy around the edges (list of possible kernels, boot options and adding another file system are standard features of GRUB AFAIK), stuff like NUMA is pretty much advanced. I seriously doubt that people working on such advanced stuff will be looking to the OS FAQ for basic information on how to write a bootloader...
Possibly fuzzy, but rarely incorrect :). I didn't say "list of possible kernels", but rather "can't automatically select the right kernel to boot from a list of possible kernels", for example my OS detects the number of CPUs (and CPU features), detects NUMA presence, decides if 64 bit or 32 bit should be used (and if 32 bit decides if PAE should also be used), and then automatically selects the appropriate stage 2, stage 3 and kernel code without any user intervention. This makes it foolproof (you can't try to boot a 64 bit kernel on an 80486), more user-friendly, and in the end (IMHO) makes it a more marketable product.

As for "boot options", something to allow the user to select and test a video mode (text or graphical) before booting the OS is (IMHO) important, especially as it may take a long time before a video driver for every video card is written. Users would be able to use (almost) any video mode they like without any video driver at all (and writing video drivers is IMHO much harder than writing a few little boot sectors).

As for people working on advanced stuff, I agree (to a point). There seems to be 2 types of OS developers - serious developers and hobbyists. The hobbyists (who don't expect the OS to actually be used for anything) should IMHO use GRUB and perhaps the Flux OSkit (http://www.cs.utah.edu/flux/oskit/).

Out of the serious OS developers some won't use GRUB and others will eventually be effected by some of the limitations I mentioned. Because of this I think serious OS developers will probably end up writing their own boot code sooner or later, so they might aswell make it sooner so they avoid the additional work of modifying a half complete OS. There are exceptions to this - those writing a monolithic kernel which will use X for example. All I'm suggesting is that GRUB & multiboot compliance shouldn't be automatically advocated, but instead people should be offered enough information to decide for themselves.
Solar wrote: If you are hanging around at Mega-Tokyo, your OS isn't yet mature enough to own a whole desktop. You are a system citizen living alongside Windows or Linux. People will be using a boot menu. Instead of forcing your boot loader/menu down their throat, you should rather have your "very special bootsector (tm)" chainloaded by whatever bootmenu the user chose to install.

I agree that we should have some words on how to write a boot sector, in addition to how to install GRUB. Writing your own MBR, however, is out of scope IMHO.
I agree here completely (especially the part about not forcing end-users to use GRUB by writing a "multi-boot compliant" OS instead of writing a chain-loaded OS that can be booted by GRUB, LILO, boot magic or anything else)...


Cheers,

Brendan

Re:Bootloaders and the scope of the FAQ

Posted: Tue Oct 12, 2004 1:59 am
by Solar
Brendan wrote:
That's sensible - a link to GRUB and a link to something like this (for e.g.):
http://www.nondot.org/sabre/os/articles/TheBootProcess/
Well, go ahead!
You'd be surprised how many good programmers have never had anything to do with assembly or segmentation (and possibly less surprised how many people without any programming experience decide to write an OS).
No, not at all. I try to play "online filter" over at OSNews.com - those who have some *basic* skills get forwarded here, those who don't know what a compiler is about get discouraged in-place. ;)

But I prefer giving people links to a good Assembler book and the Intel Manuals so they can write up their IRQ handlers and GDT, instead of taking them by the hand and leading them through the baby steps of a bootloader. In the very least, they will write Assembler code for something they actually need later on, and their questions fielded here in the forum are a bit more interesting for the rest of us...
Every training program ever created starts with easy stuff and builds up to harder things...
I don't consider toying with your MBR and the A20 gate "easy stuff".
I didn't say "list of possible kernels", but rather "can't automatically select the right kernel to boot from a list of possible kernels", for example my OS detects the number of CPUs (and CPU features), detects NUMA presence, decides if 64 bit or 32 bit should be used (and if 32 bit decides if PAE should also be used), and then automatically selects the appropriate stage 2, stage 3 and kernel code without any user intervention. This makes it foolproof (you can't try to boot a 64 bit kernel on an 80486), more user-friendly, and in the end (IMHO) makes it a more marketable product.
Sorry, but none of that is hindered in any way by GRUB.
As for "boot options", something to allow the user to select and test a video mode (text or graphical) before booting the OS is (IMHO) important, especially as it may take a long time before a video driver for every video card is written.
Again, GRUB doesn't hinder you. So what GRUB is multibooting isn't your kernel, but your stage3 making all those smart decisions... hey, it's up to you, and don't tell me you squeezed all that code into your MBR...
Out of the serious OS developers some won't use GRUB and others will eventually be effected by some of the limitations I mentioned.
You didn't mention a single thing where GRUB hinders you.
Because of this I think serious OS developers will probably end up writing their own boot code sooner or later, so they might aswell make it sooner so they avoid the additional work of modifying a half complete OS.
And you really think people beginning to work on ther OS will think about multiprocessing, NUMA and video modes?
All I'm suggesting is that GRUB & multiboot compliance shouldn't be automatically advocated, but instead people should be offered enough information to decide for themselves.
GRUB is a very solid starting platform, and chances are slim you ever have to replace it. If writing your own bootloader takes your fancy, well, do it, but I still don't see how GRUB could "limit" you.

It limits the amounts of things you have to know about up-front to get your first "hello world" going. So far, I have to see a single thing where GRUB gets into your way, unless you only have 1 MByte of RAM. As such, I still think it is a good "default" recommendation, as the "default" is that most people will never need something else to boot their stuff, and the "default" is that - not exactly most, but many - people using Linux already have GRUB installed.

Re:Bootloaders and the scope of the FAQ

Posted: Tue Oct 12, 2004 2:20 am
by distantvoices
Me sees no obstacles coming along by using grub.

I just canna identify any of those so called limitations.

Grub eases things like module loading immensely. Not only does it fetch the modules into memory, it also tells, where they are located and which length they have.

limits? where?

grub tells the amount of installed memory: no need for you to query for this by yourself.

Grub enables the a20 line for you.

In short, it forms the least common nominative every operating system might need to start up successfully. If one can't use this options, no problem.

stay safe.

Re:Bootloaders and the scope of the FAQ

Posted: Tue Oct 12, 2004 9:36 am
by Brendan
Hi,
Solar wrote: I don't consider toying with your MBR and the A20 gate "easy stuff".
Toying with boot sectors :) - I think we agree about MBRs being something that shouldn't be considered part of an OS project, except where the boot sector is used as an MBR (e.g. floppy, or an old-fashioned "partition-less" hard drive).

The term "easy stuff" is a relative one - I've spent the last 4 days working on my (perhaps over-complex) scheduler. Something simple would be a pleasant break...
Solar wrote: And you really think people beginning to work on ther OS will think about multiprocessing, NUMA and video modes?
No, but sooner or later they will think about at least some of it - video because GUI's are almost a requirement now, and HT/MP/NUMA because CPU manufacturers are moving in this general direction.
Solar wrote: GRUB is a very solid starting platform, and chances are slim you ever have to replace it. If writing your own bootloader takes your fancy, well, do it, but I still don't see how GRUB could "limit" you.
Most of the limits I listed come from being booted in protected mode. After looking into it further, it would be possible to write a "stage 3" which shuffles memory about and puts a "stage 4" into conventional memory (where GRUB was). Then it should be possible to switch back to real mode and use the BIOS/s, etc to setup things without the limits I mentioned. I'd end up with a 6 stage boot :-)


Cheers,

Brendan