Although booting problems most often occur with dual Operating Systems (OSs), say Linux and Windows, understanding the way a PC boots from hardware into a disk-based OS is essential to resolving them. That normally happens as follows:
In theory then, alternative boot loaders such as LILO or GRUB (commonly used to dual-boot Linux and Windows) have only to list some or all of the active partitions on the disks and ask which MBR or, more commonly, PBR to boot.
There is a generic boot floppy that offers to boot from any MBR or PBR it finds at boot-time on your system. Although now getting outdated, it can still be quite useful in debugging boot problems. It's part of the Slackware Linux distribution:
There is also a useful legacy Windows help article on booting Windows from a floppy:
That's the theory, but in practice there are some pitfalls ...
One particularly important one is that Microsoft MBRs don't quite follow the above rules. They ignore whichever disk they were actually loaded and run from, assume it was HardDisk 0, and always read the partition table from, and boot the first active partition on, HardDisk 0!
If you make up the linked SBootMgr floppy, and find that when you boot from an MBR on a disk other than HardDisk 0, the OS on HardDisk 0 is the one that actually loads, then that other disk almost certainly has a Microsoft MBR.
Another pitfall is that alternative boot loaders are restricted by the available space in the level of intelligence they can reach, so nearly all load secondary code/data from elsewhere.
For example, Lilo uses a so-called 'map' file, and when you run the Lilo command to install it, you aren't only installing Lilo's MBR but also this map file.
Hence, the relative placement of a bootloader's MBR and any associated secondary code/data is important. Particularly, if after installing a boot loader drive designations are changed or the secondary code/data is moved, the MBR may then be unable to find everything it needs, and consequently hang the boot process.
Another source of confusion is that different OSs, bootloaders, and disk utility programs number hard disks
differently. For some, the first hard disk is numbered 0
, for others 1
,
for others a
, while yet others use the DOS designation of 128
or
0x80
!