[comp.unix.i386] A program for selecting a boot partition at boot time

gwr@linus.UUCP (Gordon W. Ross) (02/06/90)

I have recently completed a package that allows boot-time selection of
the boot partition.  Included also are: an improved "fdisk" clone and
some patches for Sys.V/386 to eliminate an unnecessary restriction.

I would like to send this package to some interested alpha-testers
before I post.  Please send mail if you'd like to volunteer.

A brief description of the package follows:

pfdisk - "Partition Fixed DISK" is a replacement for the "fdisk"
	program (supplied with DOS and UNIX) providing some new,
	very useful features: it runs on DOS and UNIX; it can
	replace the boot program, create any type of partition,
	does some consistency checking, can save and restore
	using text or binary format, and can handle large cylinder
	numbers correctly (unlike the DOS and UNIX fdisk programs).

boot-hdp - "BOOT Hard Disk Partition" is a replacement boot program
	for use in the hard disk primary boot sector.  This program
	allows boot-time selection of the boot partition.  The
	accompanying "pfdisk" program can install this program without
	modifying the existing partition table.

	When "boot-hdp" is started (by the BIOS) it prints a message:
		Booting HD0,
	and then searches for an active partition.  If no partition is
	marked as active then a menu of partitions is presented.  If
	an active partition was found then a short (2 second) delay
	ensues during which the user may strike any key to interrupt
	the boot process and select from the boot menu.  If no key is
	struck before the delay expires then the active partition is
	used.  (This allows for unattended re-boots.)

patches for Sys.V/386:  I discovered that ESIX (and probably other
	Sys.V/386 versions) require that the UNIX partition be marked
	as "active" and don't obey the normal procedures for finding
	their own partition.  This prevented me from setting up my
	boot-hdp program the way I wanted to, so I patched the
	second-stage boot sector for UNIX to make it obey the normal
	procedure for finding its own partition.  These "normal
	procedures" are documented in the boot-hdp source code.

patches for MS-DOS 3.3:  As many have probably heard, DOS doesn't work
	correctly with disks having more than 1024 cylinders.  This
	patch makes "IO.SYS" limit the "number-of-cylinders entry in
	the disk parameter vectors (int 0x41, 0x46 on an AT) to be
	less than 1024.  My current patch will only work on a system
	having a parameter-override feature in the disk controller
	BIOS (such as the Adaptec and Western Digital controllers)
	that puts these parameters somewhere in writable RAM.
	(This patch is not necessary on most systems.)

With all of the above installed, you have the following options:

(1) Mark any partition you wish as active and it will be booted from
by default (and without any lengthy, user-confusing comments).  You can
still interrupt the first-stage boot and select a different partition.

(2) You can cause the boot menu to always appear by not marking any
partition as active (but of course unattended reboot won't work).

The source for this stuff comes to about 20 KB total.
The "pfdisk" program is in C, using UNIX or DOS (MSC or TC).
The "boot-hdp" program is in macro assembler (DOS).  An already
assembled version (uuencoded) is included for those who lack MASM.

Send E-mail to the below address if you're interested in this package.
-- 
Gordon W. Ross / The MITRE Corporation / Bedford, MA 01730 (U.S.A.)
internet: gwr@linus.mitre.org	  uucp: {decvax,philabs}!linus!gwr