This article needs additional citations for verification. (November 2015) (Learn how and when to remove this template message)
An Option ROM typically consists of PC firmware that is called by the BIOS. For example, an adapter card that controls a boot device might contain firmware that is used to connect the device to the system once the Option ROM is loaded.
IBM PC and compatibles
A common option ROM is the Video BIOS found on IBM PC compatible video cards. This is a special case of an option ROM, as it is loaded very early on in the boot process (otherwise nothing would appear on the screen during the POST.) The video BIOS is almost always located in the
C000 memory segment, the start of the memory area reserved for option ROMs. Other ROMs can be located from segments
C800 all the way up to
F400 in early PCs. The final search address was eventually limited to
E000 in later products. The BIOS Boot Specification (BBS) requires that option ROMs be aligned to 2kB boundaries (e.g. segments
C800, C880, C900, C980, etc.). The first two bytes of the ROM must be
After the basic POST checks are complete, the option ROMs are normally initialized. This gives them the chance to hook (intercept) system interrupts, in order to provide increased functionality to the system.
For example, a SCSI controller card may hook INT 13 which is responsible for providing disk services. Once it has done this, any subsequent calls to INT 13H will be "caught" by the SCSI option ROM (or "SCSI BIOS"), allowing it to insert details about any disks that may exist on the SCSI bus. Before it had hooked the interrupt there may have been no disks on the system, but by intercepting the interrupt and altering the values returned, the SCSI BIOS can make all the disks on the SCSI bus visible to the system.
In this particular case, the BIOS itself may call INT 13 to provide a list of possible boot devices to the user, and because the SCSI BIOS has hooked the interrupt the user will be able to choose not only which standard system devices to boot from, but also which SCSI disks as well.
Network boot ROM
Another common option ROM is a network boot ROM. Of course there needs to be some program to do this download of code, and this is what is stored in the option ROM. Network booting ROMs generally work differently than in the SCSI example, as they do not provide any new devices to the system. The original IBM Personal Computer ROMs hooked INT 18H (originally to invoke Cassette BASIC) and INT 19H, as these two interrupts were designated when the boot process is about to begin. INT 19H is called to initiate the boot process, while INT 18H is called when the system tries to boot from all possible devices and none were bootable. Originally, by hooking INT 18H, the system would invoke Cassette BASIC (if present) or try to boot from the network when all other boot devices (floppy drives, hard drives, etc.) had failed. By hooking INT 19H, the system would attempt to boot from the network before any other devices.
BIOS boot specification
Since these two methods do not offer a large amount of control over the boot process, the BIOS Boot Specification (BBS) was developed. This provided a more standardized approach where an option ROM could be initialized at the start of the boot process, it could inform the BIOS about its functionality, and then it could be called later on in the boot process depending on the order the user had selected.
- Legacy Plug and Play
- PCI configuration space
- PXE Preboot eXecution Environment