Subject: Re: i386 bootselector changes
To: Bruce J.A. Nourish <bjan+current-users@bjan.net>
From: David Laight <david@l8s.co.uk>
List: current-users
Date: 10/28/2003 16:19:51
On Thu, Oct 23, 2003 at 09:52:20PM -0700, Bruce J.A. Nourish wrote:
> On Fri, Oct 24, 2003 at 02:01:16PM +1000, Luke Mewburn wrote:
> > The current method that the "boot selector" is implemented doesn't
> > support selecting anything other than the 4 primary partitions; there
> > just isn't the space in the MBR to implement anything fancier.

Space is tight!  But the current version will support booting from
extended partitions.

However there isn't space to output a prompt (more particularly there
isn't space for the prompt!).

There is also a sligght difference between the old and new code in the
way than partitions are counted.  In the old code F4 always booted
the 4th partition, the new code counts partitions that have menus texts
so the menu is always dense (so '3' might boot the 4th partition).

I'm actually not sure how well the code works with serial consoles.
In order to process Fn it always looks at the raw keycode and not the ACSII
value (both are returned by the bios call used).

It could be changed to use the ASCII value and then A.. (or maybe a..)
to load the bootstrap from a different disk.  But that could not be
documented in the bootloader output.
Additionally using a.. would break badly if you have an 'azerty' keyboard
(F1.. and 1.. are safe because they are always adjacent keycodes).

Switching the disks to be 1.. and the partitions to be F1.. will actually
give problems with the menu - it will take a few more bytes of code to
generate (you really don't want to know some of the details!)

> Just as a "blue sky" thought, would there be any long term interest in 
> implementing a more fully-featured bootloader, like FreeBSD's loader(8)?
> The benefits are obvious, but it would requre a heck of a lot of effort
> to implement it on all platforms. Are there any other known issues
> (particularly on the more exotic platforms)?

The place to do that is inside the 'boot' program.
There is nothing stopping us adding code to boot a disk+partition to it.

	David

-- 
David Laight: david@l8s.co.uk