Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Feb 1998 20:46:41 +0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Mike Smith <mike@smith.net.au>
Cc:        Ollivier Robert <roberto@keltia.freenix.fr>, core@FreeBSD.ORG, committers@FreeBSD.ORG
Subject:   Re: wfd block major number reassignment from 24 to 1 
Message-ID:  <199802141246.UAA03995@spinner.netplex.com.au>
In-Reply-To: Your message of "Sat, 14 Feb 1998 04:08:53 PST." <199802141208.EAA21988@dingo.cdrom.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

Mike Smith wrote:
> > According to Mike Smith:
> > > They have certainly addressed just about everything that I recall us 
> > > ever having discussed as an issue, and a number that hadn't occurred to 
> > > me.
> > 
> > Can we have a 3-stage bootloader *without* encoding the blocks number in
> > the first stage (à la SunOS / Lilo) ?
> 
> I've already made my opinions on this known; I haven't heard much 
> comment elsewhere, but I doubt that there would be many takers for such 
> an animal.  (ie. yes, I think we can.)

GRUB (Grand Unified Boot Loader) already does it, so I don't see why we 
couldn't. :-)

The simplest way of getting this up and running is:

- take current boot code
- chop out all unnecessary code (eg: kernel setup, memory sizing, etc, etc)
- have resulting "lightweight" loader actually load the real loader at some
  fixed address, and jump to it.  "real" loader does all the kernel 
  bootstrap, memory sizing, ELF symbols, run-time linking, userconfig, etc.
  let 'ld' and tools do all the hard work and produce a /boot binary 
  tailored specifically for the task.  You don't need nlist(), symbols,
  a.out or elf support etc.  It'd just be a flat file linked at a specific
  address.

Problem:  /boot gets munched, you want to specify an alternate root 
partition or /boot.old or something.

Solution:  Leave enough of the keyboard parsing code so that if (say) the 
ALT key is held down during boot or (like win95) the F8 key was pressed, 
then stop and put up a simple prompter to specify an alternate path/
parition/bios drive/etc.  Kinda like a cut-down version of the kernel 
selector.  If /boot wasn't available, then it could try /boot.old 
automatically, or just put up the requester.   That way, you don't get 
seperate boot1 and boot2 prompts, and don't delay while the 7K loader does 
it's thing.

It should be no real drama to make a 7K stage-2 loader for a specially 
prepared /boot image that can still be controlled by the keyboard etc.

Dos booting is unaffected.  dosboot.exe would still load the "full" boot 
code and do it's thing.  It doesn't have size problems.

Net booting is more tricky.  The netboot code for the eproms would need to
have the same diet applied, except that it'd load /netboot instead, which 
could be an alternative compilation of the stage3 code.  Alternatively,
/boot could simply be compiled to start up under a UFS or NFS root 
environment.

All of the options now available from the Boot: prompt would be provided 
by the 3rd stage kernel loader, except that it would no longer have the 
dreaded space problem.

Sounds easy, eh?  Well, the devil is in the details.. That's why nobody 
has done it for FreeBSD  (and because many unix programmers don't like 
working at real-mode 16-bit bios level :-).

Cheers,
-Peter
--
Peter Wemm <peter@netplex.com.au>   Netplex Consulting



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802141246.UAA03995>