When INT 19h is called, the BIOS attempts to locate boot loader software held on a storage device
designated as a 'boot device', such as a hard disk, a floppy disk, CD, or DVD. It loads and executes the
first boot software it finds, giving it control of the PC.
[9]
This is the process that is known as booting
(sometimes informally called "booting up"), which is short for "bootstrapping".
The BIOS selects candidate boot devices using information collected by POST and configuration
information from EEPROM, CMOS RAM or, in the earliest PCs, DIP switches. Following the boot
priority sequence in effect, BIOS checks each device in order to see if it is bootable. For a disk drive or
a device that logically emulates a disk drive, such as a USB Flash drive or perhaps a tape drive, to
perform this check the BIOS attempts to load the first sector (boot sector) from the disk into RAM at
memory address 0x0000:0x7C00. If the sector cannot be read (due to a missing or unformatted disk, or
due to a hardware failure), the BIOS considers the device unbootable and proceeds to check the next
device. If the sector is read successfully, some BIOSes will also check for the boot sector signature
0x55 0xAA in the last two bytes of the (512 byte long) sector, before accepting a boot sector and
considering the device bootable.
[nb 1]
The BIOS proceeds to test each device sequentially until a bootable device is found, at which time the
BIOS transfers control to the loaded sector with a jump instruction to its first byte at address
0x0000:0x7C00 (exactly 1 KiB below the 32 KiB mark); see MBR invocation and VBR invocation.
(This location is one reason that an IBM PC requires at least 32 KiB of RAM in order to be equipped
with a disk system; with 31 KiB or less, it would be impossible to boot from any disk, removable or
fixed, using the BIOS boot protocol.) Most, but not all, BIOSes load the drive number (as used by INT
13h) of the boot drive into CPU register DL before jumping to the first byte of the loaded boot sector.
Note well that the BIOS does not interpret or process the contents of the boot sector other than to
possibly check for the boot sector signature in the last two bytes; all interpretation of data structures
like MBR partition tables and so-called BIOS Parameter Blocks is done by the boot program in the
boot sector itself or by other programs loaded through the boot process and is beyond the scope of
BIOS. Nothing about BIOS predicates these data structures or impedes their replacement or
improvement.
A non-disk device such as a network adapter attempts booting by a procedure that is defined by its
option ROM or the equivalent integrated into the motherboard BIOS ROM. As such, option ROMs
may also influence or supplant the boot process defined by the motherboard BIOS ROM; see above
(and below) for more information.
Boot priority
The user can control the boot process, to cause one medium to be booted instead of another when two
or more bootable media are present, by taking advantage of the boot priority implemented by the
BIOS. For example, most computers have a hard disk that is bootable, but usually there is a
removable-media drive that has higher boot priority, so the user can cause a removable disk to be
booted, simply by inserting it, without removing the hard disk drive or altering its contents to make it
unbootable.
In most modern BIOSes, the boot priority order of all potentially bootable devices can be freely
configured by the user through the BIOS configuration utility. In older BIOSes, limited boot priority
options are selectable; in the earliest BIOSes, a fixed priority scheme was implemented, with floppy
disk drives first, fixed disks (i.e. hard disks) second, and typically no other boot devices supported,
subject to modification of these rules by installed option ROMs. The BIOS in an early PC also usually
Komentarze do niniejszej Instrukcji