Why don't they use INT 13h throughout boot?
Tim W Smith
ts at cup.portal.com
Sun Nov 11 03:00:02 AEST 1990
I've seen three different methods used to boot non-DOS operating
systems on 386 machines. One (used by Netware 386) is for DOS to
boot, and then a DOS application is run which loads the OS. The
OS is stored as a DOS file on a DOS partition on the hard disk.
The second, which was used by 386/ix 1.0.6 (the last version of
386/ix that I used) is for the boot program that is loaded from
the Unix fdisk partition to read in the OS from the Unix filesystem.
This boot program uses the INT 13h BIOS function to perform the
disk I/O. INT 13h is used up until the OS is loaded, at which
point the Unix disk driver is used for any subsequent disk access.
This is also the method used by Netware 286.
The third, which is used by SCO Unix 3.2, is for the boot program
that is loaded from the Unix fdisk partition to load the OS, or
load other boot programs from the Unix partition that load the OS
(I'm not quite sure which boot program does what here). At some
point before the OS is loaded, the boot programs start manipulating
the disk hardware directly. I suspect that they also switch the
processor to protected mode before loading the OS.
Why is this third method used? It seems to me that the first or
second methods are vastly superior. Consider, for example, trying
to add support for a new disk controller. The vendor of the disk
controller starts out by producing a Unix disk driver that knows
about their controller, and they link this into the kernel. Assume
that the disk controller is also meant to work with DOS, so it
contains a BIOS ROM that installs an INT 13h handler at power up
time before the boot sequence begins.
If the first or second boot schemes mentioned above are used, then
the controller vendor does not have to do anything else to allow
Unix to boot off their controller.
Compare this to the third method. Unless the controller vendor
can convince the OS vendor to modify the boot code to recognize
the new controller, the new controller can only be used to support
secondary disks, or the system must be booted from a floppy and
convinced that rootdev, swapdev, etc., are on the new disk (not
a problem, at least, with SCO, since their boot program takes
these as arguments).
So, why do people use the third method? Do any of the Unix vendors
use the first or second in current releases? Is it really as big
of a problem as I think, or am I just prejudiced because I write
SCSI software, and have to keep explaining to my boss that it's
not my fault that Unix can't boot ("The guys doing DOS, OS/2,
Netware 286, and Netware 386 are all booting! Why can't you?") :-)
Tim Smith
More information about the Comp.unix.sysv386
mailing list