System and method for preserving boot order in an information handling system when a boot device is replaced by a matching device

An information handling system includes a processor, a storage medium coupled to the processor, and a program stored in the storage medium and executable by the processor. The program is for causing the processor to, in response to a boot event, detect that a device is not present in the information handling system where the device was present in the information handling system during a prior boot event or detect a device that is present but was not present during a prior boot event. The program is also for causing the processor to access a list that indicates a boot order where the list is stored in the storage medium prior to the boot event and including an entry associated with each bootable device. The program is further for causing the processor to store an indicator in the entry where the indicator indicates that the device is dormant or to replace a dormant device in the boot order with a newly present device of the same type.

BACKGROUND

The disclosures herein relate generally to information handling systems and more particularly to a system and method for maintaining a boot order in an information handling system.

An information handling system typically boots using a boot device according to a boot order stored in the system. A boot device may be any device in the system that includes or is coupled to software or other means to cause an operating system of the system to be booted and/or loaded in response to the system being powered up, e.g. being turned on, or reset. The boot order includes a list of boot devices which the system attempts to boot from in response to the system being powered up or reset. If the system does not boot successfully using the first boot device in the list, then the system attempts to boot from the next boot device in the list. The process repeats until either the system boots successfully or the system fails to boot from any of the boot devices on the list.

The boot order may be selected by a user of the information handling system. The user may select the boot order according to a particular use or configuration of the system. Unfortunately, certain events can cause the boot order selected by the user to be altered contrary to the desire of the user. For example, the removal or addition of a device to the system may cause the boot order to be reset to a default boot order specified by a basic input output system (BIOS) or other system firmware, particularly where the BIOS or firmware conforms to a version of the BIOS Boot Specification. The BIOS Boot Specification is available from Phoenix Technologies, Ltd., 411 E. Plumeria Drive, San Jose, Calif. 95134, (800) 677-7305, http://www. phoenix.com/PlatSS/PDFs/specs-bbs 101. pdf, and is incorporated by reference herein.

It would be desirable to ensure that an information handling system boots using a boot order selected by a user. Accordingly, what is needed is a system and method for maintaining a boot order in an information handling system.

SUMMARY

One embodiment, accordingly, provides an information handling system that includes a processor, a storage medium coupled to the processor, and a program stored in the storage medium and executable by the processor. The program is for causing the processor to, in response to a first boot event, detect that a first device is not present or is in some way disabled in the information handling system where the first device was present in the information handling system prior to the first boot event. The program is also for causing the processor to access a list that indicates a boot order where the list is stored in the storage medium prior to the first boot event and including a first entry associated with the first device. The program is further for causing the processor to store an indicator in any entry where the indicator indicates that the device is dormant.

A principal advantage of this embodiment is that various shortcomings of previous techniques are overcome. For example, a boot order selected by a user is maintained within an information handling system. In addition, a potential security flaw may be avoided.

DETAILED DESCRIPTION

In one embodiment, an information handling system100,FIG. 1, includes a processor110, a chipset120, a memory130, a basic input output system (BIOS)140, and bootable devices150a,150b, and150c. Chipset120is coupled to processor110, memory130, BIOS140, and bootable devices150a,150b, and150c. Bootable devices150a,150b, and150cmay each include an operating system as indicated by operating systems152a,152b, and152c, respectively. Memory130includes a non-volatile memory132and may include multiple types of storage media such as RAM, DRAM, SDRAM, FLASH, and other storage devices. Bootable devices150a,150b, and150care each connected to chipset120using a bus such as a PCI or Universal Serial bus, a direct connection to a device controller within chipset120, or other suitable connection means.

System100operates by executing BIOS140or a system firmware (not shown) in response to being powered up or reset. BIOS140identifies and initializes the components of system100and causes an operating system such as operating system152a,152b, or152cto be booted. The booted operating system provides a user of system100with an ability to initiate and run one or more applications (not shown) on system100. The applications may be stored on a storage media of system100or on a remote device configured to communicate with system100. System100may be configured to communicate with other devices or information handling systems using wired or wireless communications devices.

System100boots using a boot device according to a boot order stored in system100. A boot device may be any device in system100, such as memory130and devices150a,150b, and150c, that includes or is coupled to software or other means to cause an operating system of the system to be booted and/or loaded in response to a boot event. As used herein, the term “boot event” refers to an event that causes system100to be booted such as being powered up, e.g. being turned on, or reset.

The boot order includes a list of boot devices which system100attempts to boot from in response to system100being powered up or reset. If system100does not boot successfully using the first boot device in the list, then system100attempts to boot from the next boot device in the list. The process repeats until either system100boots successfully or system100fails to boot from any of the boot devices on the list.

The boot order is selected by a user or manufacturer of system100and stored in some sort of non-volatile memory132. The boot order includes an entry associated with each boot device. Each entry includes information that identifies its associated boot device.

BIOS140is configured to cause the boot order selected by the user or manufacturer to be preserved in response to a device being added to or removed from system100. To do so, BIOS140stores an indicator in the entry associated with each boot device in the boot order. The indicator indicates whether that boot device is active or dormant. A boot device is indicated as being active in response to the boot device being present in system100, e.g. physically connected by wired or wireless means and recognized by BIOS140and/or operating system152. A boot device is indicated as being dormant in response to the boot device not being present in system100. Further, a boot device may be disabled from booting by some other indicator even though the device is present in the system.

In response to a boot event, BIOS140determines whether one or more bootable devices have been removed from or added to system100. In response to BIOS140detecting that one or more devices have been removed from system100, BIOS100stores an indicator in each corresponding entry in the boot order that indicates that the device is dormant. In response to BIOS140detecting that one or more devices have been added to system100, BIOS100determines whether added devices are the same type of device as a device marked as dormant in the boot order list. If an added device is the same type of device, then BIOS140effectively substitutes the added device for the dormant device in the boot order list by changing and storing an indicator that indicates that the added device is active. If an added device is not the same type of device as the dormant device, then BIOS140creates an entry associated with the added device at the end of the boot order list and stores an indicator in that entry indicating that the added device is active.

The operation of BIOS140will now be described in additional detail with reference toFIG. 2as well asFIG. 1. As indicated inFIG. 2, BIOS140determines whether a device change is detected as indicated in a step202. A device change may be any change to the set of devices present in system100, such as memory130and devices150a,150b, and150c, at a time prior to the function of step202being performed. For example, BIOS140may detect a device change in response to a device being added to, removed from, or replaced in system100. A device change may also be detected where a device malfunctions such that system100does not recognize or is unable to locate the device even if the device is physically present in system100. BIOS140may perform the function in step202in response to a boot event. If BIOS140does not detect a device change, BIOS140causes system100to boot according to a previously stored boot order as indicated in a step204.

If BIOS140does detect a device change, then BIOS140determines whether a device is not present in system100as indicated in a step206. BIOS140may perform this function by searching for each device that was present in system100prior to a boot event. If BIOS140determines that a device that was previously present in system100is not currently present, then BIOS140accesses a list that indicates a boot order from a storage medium as indicated in a step208. The list may include an entry for each boot device in system100depending on a boot order selected by a user or manufacturer of system100. An example of such a list is shown inFIGS. 3athrough3ewhich illustrate an example of a list300that indicates a boot order of devices in system100in various states over time. As shown at a first time inFIG. 3a, list300includes entries302,304, and306which are associated with a hard drive #1, a floppy drive, and a CD-ROM drive, respectively, and indicate that the boot order for system100in this example is hard drive #1followed by the floppy drive followed by the CD-ROM drive. In the state shown inFIG. 3a, each of the entries302,304, and306includes an indicator that indicates that the devices associated with the entries are active.

Referring back toFIG. 2, BIOS140stores an indicator in the entry in the list associated with the device that indicates that the device is dormant as indicated in a step210.FIG. 3bshows list300at a second time to illustrate this scenario. InFIG. 3b, entry302associated with hard drive #1is marked as dormant indicating that hard drive #1is not present in system100. The remaining entries inFIG. 3bremain unchanged to effectively maintain the boot order indicated in list300. Accordingly, in response to a subsequent boot event, BIOS140will cause hard drive #1to be skipped in the boot order such that the boot order in this example will be the floppy drive followed by the CD-ROM drive.

As indicated in a step212, BIOS140determines whether a device has been added to system100. If a device has not been added, then BIOS140will cause system100to be booted using the revised boot order in the list in response to a subsequent boot event as indicated in a step220.

If a device has been added, then BIOS140determines whether the device is the same type of device as a dormant device in the list. The criteria for determining whether an added device is the same type of device as a dormant device may include whether the devices perform the same function or are interchangeable devices. If the added device is the same type of device as a dormant device, then BIOS140stores an indicator for the added device in the entry in the list associated with the dormant device that indicates that the added device is active. As a result, the added device effectively replaces the dormant device in the boot order.FIGS. 3cand3dshow two different examples to illustrate this scenario. BothFIGS. 3cand3dassume a device is added to system100with list300in the state shown inFIG. 3b.

InFIG. 3c, hard drive #1is added back to system100. Accordingly, entry302is marked as active to return hard drive #1to its place in the boot order. As a result, in response to a subsequent boot event, the boot order in this example will be hard drive #1followed by the floppy drive followed by the CD-ROM drive.

InFIG. 3d, hard drive #2is added to system100instead of hard drive #1. Because hard drive #2is the same type of device as hard drive #1, i.e. both are hard disk drives, hard drive #2replaces hard drive #1in the boot order. Accordingly, entry302is associated with hard drive #2and marked as active to allow hard drive #2to replace hard drive #1in the boot order. As a result, in response to a subsequent boot event, the boot order in this example will be hard drive #2followed by the floppy drive followed by the CD-ROM drive.

If the added device is not the same type of device as a dormant device, then BIOS140stores an indicator for the added device in a new entry at the end of the list as indicated in a step216. As a result, the added device is effectively added to the end of the list and becomes the last boot device in the boot order.FIG. 3eillustrates this scenario.FIG. 3eassumes a device is added to system100with list300in the state shown inFIG. 3b.

InFIG. 3e, a Network Adapter is added to system100. Because the Network Adapter is the not same type of device as the only dormant device in the list, i.e. hard drive #1, entry308is created at the end of the list. Accordingly, entry308is associated with the Network Adapter and marked as active to add the Network Adapter to the boot order. As a result, in response to a subsequent boot event, the boot order in this example will be the floppy drive followed by the CD-ROM drive followed by the Network Adapter.

Subsequent to steps216and218, BIOS140will cause system100to be booted using the revised boot order in the list in response to a subsequent boot event as indicated in a step220.

In other embodiments, the steps illustrated inFIG. 2may be performed in orders other than those shown. For example, steps214,216, and218may be performed prior to steps206,208and210. In addition, one or more of the steps may be repeated where multiple devices have been added to or removed from information handling system100.

In the embodiment just described, BIOS140performs the method shown inFIG. 2. In other embodiments, the method shown inFIG. 2may be performed by a program other than BIOS140.

In one particular embodiment, device150acomprises a removable hard disk drive. In other embodiments, device150aas well as devices150band150cmay be any other type and combination of devices, such as CD-ROM drives, Network Adapters, multimedia devices, or storage media, configured to operate in conjunction with information handling system100.