Information on how the standard LILO and GRUB MBRs behave, compared to
various DOS and Windows MBRs (made by the DOS version of FDISK):

The bottom line is that the IBM/Microsoft versions don't work correctly
with some BIOSs when there is no active partition, but the LILO and GRUB
ones do. So if you multiboot, use the Linux FDISK when setting up DOS
or Windows. Also see warning about Microsoft Vista below.

In alt.os.linux.slackware, ljb wrote:
> wrote:
>> I'm wondering what went wrong with the OP's installation
>> of LILO in the MBR. It might be something simple/stupid as
>> the BIOS looking for an 'active flag' in one of the partition
>> table entries before handing control over to the MBR boot
>> code. Lilo will not use, nor need, the 'active flag'. But
>> this flag won't hurt if it is present. And if the BIOS looks
>> for it....

>Very clever. Brilliant, in fact. I confirmed this: the Intel
>DG965 BIOS is checking to make sure at least one partition
>on the disk is marked "active" (or "bootable"). It doesn't
>even have to be the partition you are booting from! So with
>LILO in MBR, if I mark any partition "bootable", then LILO
>boots and does what it was configured to do. With no
>partition marked "bootable", the BIOS refuses to run LILO
>from the MBR - even thought LILO does not care about bootable

Here is what I think is happening:

In the Original IBM PC MBR, having no active partition table
entry was the way you told the PC that you want to run ROM
BASIC via INT 18 rather than boot to any of the partitions.
Non-IBM systems have no BASIC ROM, so they usually throw an
error message, but some BIOSs just hang or reboot on INT 18.
Others say to insert a floppy or to hit ESC|F1|F10|Etc. to
run BIOS setup. The ideal BIOS behavior is to return after
doing nothing.

The standard LILO MBR and the standard GRUB MBR Only use INT 10
and INT 13, not INT 18, and thus should work no matter how the
BIOS responds to INT 18.

Here is what I believe is a complete list of what happens
with various Microsoft and IBM MBRs created by FDISK.

IBM Personal Computer DOS 1.00 and 1.00 only used INT 10, INT 13,
and INT 16, with ROM BASIC invoked by having no floppy. 1.x didn't
know what a hard drive was and thus only had a floppy MBR.

MS-DOS 2.00 through MS-Windows 95 had this in the MBR:

061D BEBE07 MOV SI,07BE ; Start of partition table
0620 B304 MOV BL,04 ; 4 partition Table Entries.
0622 803C80 CMP BYTE PTR [SI],80 ; Is it 80h (active)?
0625 740E JE 0635 ; Yes, done.
0627 803C00 CMP BYTE PTR [SI],00 ; No, Is it a 00?
062A 751C JNE 0648 ; No, invalid partition table.
062C 83C610 ADD SI,+10 ; Next PT entry.
062F FECB DEC BL ; Decrement Entry Counter.
0631 75EF JNZ 0622 ; Not done, Test another entry
0633 CD18 INT 18 ; Done none active, call ROM BASIC
0625 [...] ; start of next test

Windows 95B, 98, 98SE and ME had this in the MBR:

061B BEBE07 MOV SI,07BE ; Start of partition table
061E B104 MOV CL,04 ; 4 partition Table Entries.
0620 382C CMP [SI],CH ; Is high bit set?
0622 7C09 JL 062D ; Yes, done.
0624 7515 JNZ 063B ; No, invalid partition table.
0626 83C610 ADD SI,+10 ; Next PT entry.
0629 E2F5 LOOP 0620 ; Test another entry
062B CD18 INT 18 ; Done none active, call ROM BASIC
062D [...] ; start of next test

Win NT, 2000, 2003 and XP have this in the MBR:

061B BDBE07 MOV BP,07BE ; Start of partition table
061E B104 MOV CL,04 ; 4 partition Table Entries.
0620 386E00 CMP [BP+00],CH ; Is hfirst byte zero?
0623 7C09 JL 062E ; Yes, done.
0625 7513 JNZ 063A ; No, invalid partition table
0627 83C510 ADD BP,+10 ; Next PT entry.
062A E2F4 LOOP 0620 ; Test another entry
062C CD18 INT 18 ; Done none active, call ROM BASIC
062E [...] ; start of next test

As for Vista, Microsoft Vista has some serious partitioning incompatibilities.
See [ ]. I don't have any
information on the Vista MBR and what it does with no active partition, and I
am not about to let it mangle my partition table in order to find out.

Guy Macon