I was just reading about the whole boot process on computers and am curious as to why the BIOS can only read and execute code and data from only cylinder 0, track 0 and sector 1 of the disk being booted from? Why can't the BIOS read from any other disk location?
migrated from stackoverflow.com Feb 25 '11 at 4:08
|
Your reading has been of documentation that is clearly between one and one and a half decades out of date. It's only on old PC98 firmware (and PC97 and PC/AT firmware before it) that your assumptions and the anonymously supplied information in another answer even hold true. There are three major classes of personal computer/workstation firmwares (although there are several additional less well known ones as well, to which an answer to a question tagged "linux" should strictly also cover were it to be complete):
It should give an idea of how outdated some of the information that you can read, and that is passed around, in this area is, to note that the "98" in "PC98" really does stand for 1998. The world has changed, and the notion that firmwares don't understand disc partitioning schemes, don't understand filesystem formats, and only know how to read and load one block off a disc, is long out of date. |
|||
|
Cylinder 0, track 0, sector 1 basically means start at the logical beginning of the hard drive. During the boot process, the ROM BIOS after doing POST looks to load the boot record. In the state that it is, the boot loader has almost nothing to work with - all it does is to go to a predetermined point and start loading the OS code. The location hard coded is 0-0-1. Just as if I gave you a book, the expectation would be that you start reading from the first page, not page 25, so the boot loader starts at this start location. |
|||
|
|
|
In theory, the BIOS can read from anywhere on the disk. But why would it? It has no idea what any of those bits mean. It would be a pretty terrible BIOS that was completely incompatible with full-disk encryption because it tried to directly interact with stuff outside the boot block. Having the (for all intents and purposes hard-coded into the motherboard) BIOS only interact with the boot block means that the rest of the disk can contain anything at all, because you can just put code to interpret that into the boot block to be executed. And if you want to put something different (and incompatible) on the disk, you just need to update the boot block appropriately. |
|||
|
|
