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 u= s = > > > ever having discussed as an issue, and a number that hadn't occurre= d to = > > > me. > > = > > Can we have a 3-stage bootloader *without* encoding the blocks number= in > > the first stage (=E0 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, et= c) - have resulting "lightweight" loader actually load the real loader at so= me fixed address, and jump to it. "real" loader does all the kernel = bootstrap, memory sizing, ELF symbols, run-time linking, userconfig, et= c. 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 specifi= c 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 doe= s = 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 t= o 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>