Upon being powered up, or in response to a reset condition, conventional microcomputers undergo an initialization process known as “booting”. The boot process generally involves initializing peripheral devices such as disk drives, and loading an operating system into main memory (random access memory or “RAM”) so that program execution may be performed in accordance with the user's wishes. Other initialization steps such as self-testing may also be performed. Certain conventional boot processes are described in an article by R. Wade et al., entitled “The PC-AT Boot Process and Option ROMs” published in the September/October, 1999, issue of Intel Developer UPDATE Magazine. Additional details of some standard boot practices are found in the “BIOS Boot Specification”, Version 1.01, issued Jan. 11, 1996 by Compaq Computer Corporation, Phoenix Technologies Ltd., and Intel Corporation (the latter company being the assignee hereof). As is well-known to those who are skilled in the art, “BIOS” refers to the Basic Input/Output System which controls the microcomputer during at least the initial phases of the boot process.
The source or sources of the operating system software that is loaded during the boot process may be one or more of a number of different devices. For example, these devices may be one or more local disks (hard disk drive(s) and/or floppy disk drive(s)), a ROM (read only memory), a PROM (programmable read only memory), a LAN (local area network) server. It may also be desirable to boot from one or more remote disks (e.g., included in a remote system or systems or in a dedicated storage unit).
Devices from which booting is to be performed and/or the order in which devices are booted from may be controlled by data in one or more option ROMs or similar devices that are part of the microcomputer system or may be added to the microcomputer system from time to time. According to the above-referenced BIOS Boot Specification, option ROMs and the like are categorized as either BCV (Boot Connection Vector) devices or BEV (Bootstrap Entry Vector) devices.
BCV devices are able to directly hook into the microcomputer system's disk access mechanism to provide access to a local disk. A SCSI (Small Computer System Interface) disk controller is an example of a BCV device. In some microcomputer systems, an int 13h mechanism is used to provide BIOS disk access. Thus, when a BCV device provides an int 13h handler in such systems, a locally accessible disk drive is added to the system.
BEV devices are able to boot the system but do not install local disk handler routines. A network interface controller (NIC) with Pre-boot Execution Environment (PXE) or Remote Program Load (RPL) installed is an example of a BEV device. As is familiar to those who are skilled in the art, PXE typically causes booting from a ROM or PROM, whereas RPL typically causes the microcomputer system to boot from a LAN server. BEV devices are able to copy a bootable image into main system memory and then to execute the copied bootable image. BEV devices make it possible for the system to boot from sources other than disks.
The above-mentioned BIOS Boot Specification (BBS) provides that a device may be either a BCV device or a BEV device, but not both. More specifically, the BBS provides that a device cannot have both a non-null BCV and a non-null BEV. In other words, at least one of the BCV and the BEV must be null. With the advent of iSCSI (Internet SCSI) booting, a problem arises from this requirement of the BBS that BCV and BEV devices are mutually exclusive.
iSCSI booting works by installing remote disks into the local int 13h interface so that the remote disks can be accessed as if they were local. This requires that the iSCSI boot be installed as a BCV device. However, it may be desired that the iSCSI boot reside in the option ROM of an NIC together with PXE and RPL functionality, which require a non-null BEV pointer. Thus it may be desirable for a single device such as the option ROM of an NIC to function as both a BCV device and a BEV device notwithstanding that the BBS declares such a dual status to be impermissible.
The computer system 10 includes a microprocessor 12 which is coupled to various memory devices including main memory (random access memory or “RAM”) 14, a BIOS ROM (read only memory) 16 and option ROMs 18a-18n. Although elements 16 and 18a-18n are referred to as “ROMs” in accordance with commonly used nomenclature, in fact these devices may be flash memories which are not strictly “read only” but rather can also be written to by the microprocessor 12. The memory devices may store one or more programs to control the microprocessor 12 to operate in a desired manner, including a process in accordance with some embodiments as described below.
The computer system 10 also includes one or more input/output devices coupled to the microprocessor 12, such as a keyboard 20 to allow a user to provide input to the computer system 10 and a display device 22 (e.g., a CRT monitor or a flat panel display) that is controlled by the microprocessor to provide output to the user.
There may also be included in the computer system 10 one or more local disk drive devices 24 (shown in phantom), which may include one or more hard drives and/or one or more floppy disk drives. The local disks 24 are coupled to the microprocessor 12.
In addition, the computer system 10 may include a communication interface 26 which is coupled to the microprocessor 12. The microprocessor 12 may be in communication with one or more remote disk drives 28 (shown in phantom) via the communication interface 26. The remote drive 28 may be, for example, a component of a remote computer system, or a dedicated storage unit.
It may be assumed that one of the option ROMs 18a-18n (e.g., an option ROM of an NIC) contains boot code for iSCSI booting and also for one or more of PXE and RPL. A process provided according to some embodiments, and described below in connection with
At 50 in
Indicated at 54 in
Following 56 in
Following 72 is a determination made at 74 as to whether the BCV pointer has been initialized (i.e., is currently non-null). If so, the BCV entry point is called (as indicated at 76) and int 13h hooks are installed for any iSCSI disks available to the system. Next it is determined, at 78 (
Considering again the determination made at 74 (
Considering again the determination made at 54 (
With switching of BCV and BEV pointers to or from null values as required by user input selection of boot options, the boot image in a single option ROM can support both BCV and BEV device types, notwithstanding the BBS requirement that a device may be either BCV or BEV but not both. The user prompting and boot selection process described herein may be more user-friendly than requiring the user to “re-flash” the device, and may result in less of a user-support burden on the seller or manufacturer of the computer system.
The several embodiments described herein are solely for the purpose of illustration. The various features described herein need not all be used together, and any one or more of those features may be incorporated in a single embodiment. Therefore, persons skilled in the art will recognize from this description that other embodiments may be practiced with various modifications and alterations.