Firmware supporting multiple boot paths

Technologies for a basic input/output system (BIOS) firmware that can take different boot paths depending on the operating system that a user selects to boot within a computer system are described herein. Each boot path can handle initialization differently based upon the needs of the operating system and overall project design. A method for supporting multiple boot paths on a computer includes receiving a boot path indicator that indicates a boot path to be executed. Once the boot path indicator is received, the boot path corresponding to the boot path indicator is executed and an operating system corresponding to the boot path indicator is booted.

BACKGROUND

Traditionally, computers may boot to only one operating system. Leveraging technologies like virtualization, computers may now be loaded with different operating systems. In this way, a user may boot to the operating system of the user's choice. In such systems, the Basic Input/Output System (BIOS) firmware is typically configured to initialize the system in a single manner prior to booting the operating system selected by the user.

Different operating systems may require the BIOS firmware to perform a different system initialization prior to booting. For example, WINDOWS XP from MICROSOFT CORPORATION may require the BIOS firmware to initialize a graphics device before the operating system takes control. However, this may not be the case for certain LINUX distributions. In particular, LINUX can support initializing the graphics devices during kernel initialization. As a result, LINUX does not require the BIOS firmware to initialize the graphics devices before the operating system takes control. Other operating systems, such as real-time operating systems (RTOS) may require the BIOS firmware to initialize very few system components prior to booting.

It is with respect to these and other considerations that the disclosure presented herein has been made.

SUMMARY

The following disclosure is directed to technologies for a basic input/output system (BIOS) firmware. Through the utilization of the technologies and concepts presented herein, the BIOS firmware can take different boot paths depending on the operating system that a user selects to boot within a computer system. Each boot path can handle initialization differently based upon the needs of the operating system and overall project design.

According to one aspect, a method for supporting multiple boot paths on a computer includes receiving a boot path indicator that indicates a boot path to be executed. Once the boot path indicator is received, the boot path corresponding to the boot path indicator is executed and an operating system corresponding to the boot path indicator is booted.

It should be appreciated that the above-described subject matter may also be implemented as a computing system, a computer-controlled apparatus, a computer process, or as an article of manufacture such as a computer-readable medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings.

DETAILED DESCRIPTION

The following disclosure is directed to technologies for a basic input/output system (BIOS) firmware. Through the utilization of the technologies and concepts presented herein, the BIOS firmware can take different boot paths depending on the operating system that a user selects to boot within a computer system. Each boot path can handle initialization differently based upon the needs of the operating system and overall project design.

Support for different boot paths within the BIOS firmware can provide the user with a full featured firmware configuration path along with one or more other alternately configured firmware configuration paths. When the full featured firmware configuration path is chosen, the BIOS firmware may perform a full system initialization. The full system initialization may include initializing all or most of the system components capable of being initialized by the BIOS firmware, providing options such as booting an operating system from any of several different device types, and/or allowing the user to enter a BIOS setup mode. The full featured firmware configuration path may be more suited for operating systems, such as MICROSOFT WINDOWS, that may take control after a wide variety of system components are initialized by the BIOS firmware.

An example of an alternately configured firmware path is a fast-boot firmware configuration path, which is configured to decrease the time taken to boot to an operating system. In particular, the fast-boot firmware configuration path may initialize a reduced number of system components in order to improve speed and decrease boot time. For example, some operating systems can initialize universal serial bus (USB) devices during operating system runtime. In such operating systems that can handle USB initialization, the BIOS firmware may skip the USB initialization when the fast-boot firmware configuration path is taken, thereby substantially decreasing the time taken to initialize the computer prior to launching the operating system.

In the following description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of illustration, specific embodiments, or examples. Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of a BIOS firmware supporting multiple boot paths will be described.

Turning now toFIG. 1, details will be provided regarding an illustrative operating environment and several software components provided by the embodiments presented herein. In particular,FIG. 1shows aspects of a computer100with a BIOS firmware110supporting multiple boot paths according to one or more embodiments presented herein. The computer may also include components112, which may include one or more devices, modules, and subsets of modules, amongst other hardware and software system components well known in the art. According to embodiments, some components112may be stored within the BIOS firmware110. In addition, the computer100may also include an instruction store113for storing component initialization instructions114for initializing one or more of the components112. It should be appreciated that the instruction store113may be within the BIOS firmware110of the computer100, or outside of the BIOS firmware100. The BIOS firmware110may be configured to support a boot path selector115. The boot path selector115may define multiple boot paths, such as a boot path one117A, a boot path two117B, and a boot path N117C, for the computer100. The boot paths117A-117C may be referred to collectively, or generally, as boot paths117.

Each of the boot paths117associated with the BIOS firmware110may be configured to guide the BIOS firmware110to perform a corresponding system configuration, such as a configuration one120A, a configuration two120B, and a configuration N120C. The configurations120A-120C may be referred to collectively, or generally, as configurations120. Each of the configurations120may include a set of component initialization instructions114executed by the BIOS firmware110that initialize one or more of the components112of the computer100. When one of the boot paths117guides the BIOS firmware110to perform a corresponding configuration120, the BIOS firmware110initializes one or more of the components112of the computer100corresponding to the particular configuration120. For example, the boot path one117A may guide the BIOS firmware110to perform a corresponding configuration one120A in order to initialize a first set of the components112as specified by the configuration one120A. The boot path two117B may guide the BIOS firmware110to perform a corresponding configuration two120B in order to initialize a second set of the components112as specified by the configuration two120B. The boot path N117C may guide the BIOS firmware110to perform a configuration N120C in order to initialize a third set of the component112as specified by the configuration N120C.

The BIOS firmware110may follow a particular boot path117according to a boot path indicator130. The boot path selector115within the BIOS firmware110may receive a boot path indicator130indicating the particular boot path117that should be followed for a given instance of booting the computer100. As mentioned above, each of the boot paths117may guide the BIOS firmware110to perform a system configuration, such as the configurations120or any other configuration capable of being performed by a boot path117associated with the BIOS firmware110. Once a boot path117guides the BIOS firmware110to perform the corresponding configuration120, the boot path117may then guide the BIOS firmware110to launch an operating system, such as operating system one160A, operating system two160B, or operating system N160C. The operating systems160A-160C may be referred to in general, or collectively, as operating systems160.

According to embodiments, each of the boot paths117may be configured to guide the BIOS firmware110to perform a corresponding configuration120that is compatible with the particular operating system160launched via each of the booth paths117. As a result, the configurations120may differ depending on the particular operating system160. For example, the system configuration120A associated with the operating system160A may be different from the system configuration120B associated with the operating system160B.

The computer100may comprise a standard notebook, laptop, or desktop computing system capable of executing the operating systems160A-160C. It should be appreciated, however, that the computer100may comprise other types of computing devices, including a multimedia internet device (MID), a netbook, or other type of small form factor computing device. The BIOS firmware110associated with the computer100may be a BIOS, a legacy BIOS, an extensible firmware interface (EFI) firmware, a unified EFI (UEFI) firmware, or any other firmware configured to support operation of the computer100.

It should also be appreciated that the operating systems160A-160C may be any operating system configured to provide functionality to a desktop or laptop computing system. For example, according to embodiments, the operating systems160A-160C may comprise one of the WINDOWS family of operating systems from MICROSOFT CORPORATION, the MAC OS X operating system from APPLE INC., the LINUX operating system, or another type of computer operating system known in the art. The operating systems160, or boot loaders configured to load at least one of the operating systems160, may be stored in flash memory, USB devices, hard drives, drive partitions, drive images, virtual machine images, other storage devices, or any combination thereof.

The boot path indicator130may be provided by a user input140. The user input140may include a hotkey, switch, button, or other input operated by the user at, or prior to, boot time of the computer100. For example, depressing a particular number of a keyboard at boot time may indicate to the BIOS firmware110to select the boot path117associated with that number. For example, the keyboard button for the number one may indicate following boot path one117A while the keyboard button for number five may indicate following boot path five. Alternatively, a switch or set of dedicated buttons on the computer100may be operated at boot time to provide the boot path indicator130for selecting the particular boot path117for that instance of booting the computer100.

A boot path selector application165may run in association with the BIOS firmware110or the operating system160. The boot path selector application165may be configured to select the boot path117to follow upon rebooting the computer100. The boot path selector application165may select a boot path117to follow upon receiving an input from a user. Alternatively, the boot path selector application165may select a boot path117based on an event occurring in the operating system160. For instance, the operating system160may fail to successfully install an application causing a portion of the operating system to crash. In such an event, the boot path selector application165may select a boot path117configured to boot the same operating system160in a safe mode upon rebooting the computer100.

In various embodiments, the boot path selector application165may set a value that indicates the boot path117that the boot path selector115should select upon rebooting the computer100. For example, the boot path selector application165may set the value within a non-volatile memory or battery-backed memory within the computer110. This value may be retrieved as the boot path indicator130upon subsequent booting of the computer100. Alternatively, the boot path selector application165may place information associated with the boot path indicator130into a specific volatile memory location for retrieval upon the next boot instance or reset of the computer100where power is not lost to the volatile memory.

While the operating systems160A-160C are illustrated inFIG. 1as independent operating system installations, one or more of the operating systems160may be shared by multiple boot paths117. Such a shared operating system160may be booted following more than one of the boot paths117. For example, boot path one117A and boot path two117B may both boot the identical operating system160A from an identical partition image or volume. However, boot path one117A and boot path two117B may invoke different configurations120. According to one example, boot path one117A may guide the BIOS firmware110to perform configuration one120A, which includes a full initialization of underlying video hardware, while boot path two117B may guide the BIOS firmware110to perform configuration two120B, which includes initializing a limited subset of video support in comparison to configuration one120A.

Each boot path117may guide the BIOS firmware110to perform a particular configuration120, such that the computer presents a suitable platform for launching the operating system160targeted by the respective boot path. For example, a first boot path having a configuration120defining a full system configuration may invoke initializing all, or most, components defined within the computer100. Such a full configuration boot path may, for example, be associated with a first type of operating system, such as a single-user, multi-tasking operating system such as MICROSOFT WINDOWS. Generally, single-user, multi-tasking operating systems allow a user to have several different programs operating at the same time.

Similarly, a second boot path may guide the BIOS firmware110to perform a partial configuration120that avoids configuring video or video option ROM support. The partial configuration120is of a slightly more limited nature relative to the full system configuration corresponding to the first boot path that avoids configuring video or video option ROM support. For example, the second boot path may support a second type of operating system, such as a single-user, single task operating system such as PALM OS. Single-user, single task operating systems may be designed to manage the computer so that one user can effectively do one thing at a time. Similarly, a third boot path may support a configuration120of an even more limited nature wherein support for USB devices, file systems, file system partitions, and video are not provided within the configuration120. The third boot path of a more limited nature may support a third type of operating system, such as a real-time operating system, an embedded operating system, or a smart phone operating system. The three types of operating systems may provide initialization and low level support for all components, including devices and modules used in conjunction with the respective operating system.

According to another example, a separate boot path may define a diagnostic configuration where the associated configuration120is of a limited nature but still launches a full operating system160, such a MICROSOFT WINDOWS. Such a boot path may be used for diagnostic purposes or safe mode operation.

Each boot path117may be configured to guide the BIOS firmware110to perform a configuration120that corresponds to a respective configuration table150. The configuration table150associated with each configuration120may include configuration information that specifies components112of the computer100to be initialized within the respective boot path. The configuration information may also specify a particular operating system160to launch upon initializing the components included in the respective boot path. The components112may include one or more devices and/or one or more modules or subsets of modules within the BIOS firmware110. Alternatively, each configuration table150may specify components to exclude from initialization or execution during the respective boot path. Each of the components112within the configuration tables150may be identified by a unique identifier or a global unique identifier (GUID).

In addition to, or instead of, utilizing a configuration table, such as configuration table150A for performing a corresponding configuration120A, the BIOS firmware110may utilize the boot path indicator130directly to generate the configuration120A. According to embodiments, the boot path indicator130may be checked and used as a gating mechanism as the boot path117A guides the BIOS firmware110to perform the corresponding configuration120A. For example, a BIOS firmware module for identifying option ROMs to be loaded may skip loading option ROMs with the specific exception of a video BIOS (VBIOS) according to the boot path indicator130. This may be possible by configuring the boot path indicator130to indicate the components112of the computer100that are to be initialized. In such embodiments where the boot path indicator130is capable of indicating the components112of the computer100that are to be initialized, the boot path indicator130may include information contained in the configuration table150. In this way, the BIOS firmware110may be able to perform the configuration120without having to access the configuration table150. Such gating may support a finer granularity of inclusion or exclusion within a boot path configuration120in comparison to using GUIDs to include or exclude entire BIOS firmware modules112.

The BIOS firmware110may also check the boot path indicator130to vary operation of the BIOS firmware110based on the boot path indicator130. For example, a normal boot path and a diagnostic boot path may each have separate boot path indicators130and may both support a user entering into a setup mode. The setup mode may be configured to allow a user to alter the settings of the BIOS firmware and/or the computer100. This may include allowing the user to select booting an operating system from a CD-ROM or from a memory location of the computer100. According to embodiments, a setup interface may display different information and setup options for the normal boot mode than while in the diagnostic boot mode. Depending upon the boot path indicator130, a diagnostic mode setup configuration mode may be displayed or a normal setup configuration mode may be displayed. Various other examples of gating, varying, or modifying operation of the BIOS firmware110based on the boot path indicator130, a configuration table150, or both may be supported.

This notion of multiple boot paths may also be applied to multiple instances of the BIOS firmware110. The multiple instances of BIOS firmware110may be selectively invoked depending upon the operating system160being launched. According to embodiments, the computer100may also include more than one BIOS firmware. In such embodiments, each BIOS firmware may be programmed to follow a single boot path117corresponding to the requirements of the operating system160that may be booted by the BIOS firmware. Depending upon the operating system160that is to be booted, the computer100may invoke a particular BIOS firmware corresponding to the operating system160. In various embodiments, the BIOS firmware may be programmed to follow more than one boot paths117corresponding to the requirements of one or more operating systems160that may be booted by the BIOS firmware. In such embodiments, the computer100may execute a particular boot path117of a particular BIOS firmware according to a selection made through a user input or the boot path selector application165.

Turning now toFIG. 2, a data structure diagram illustrates three configuration tables150A,150B,150C according to one or more embodiments presented herein. Each column within the data structure200may represent a configuration table150associated with a particular configuration120. The configuration tables150A-150C may be referred to collectively, or generally, as configuration table150. While three columns or three configuration tables150are illustrated, it should be appreciated that any number of configuration tables150may be stored within the data structure200.

Each column, or configuration table150, may correspond to a configuration120associated with a particular boot path117of the BIOS firmware110. The entries, or rows, within the configuration tables150may specify one or more of the components112, such as devices, modules, and/or subsets of modules. The components112may be identified by unique identifiers250. For example, the configuration table150B associated with boot path two117B may specify identifiers0001,0003, and0009, which identify three of the components112. These three components may be specified within the configuration table150B associated with boot path two117B in order to indicate the components to be included within the configuration120. Alternatively, the unique identifiers250may indicate the components to be skipped, or excluded, when the boot path118performs the respective configuration120.

According to another embodiment, the data structure200may be formed as a matrix of columns, each of which is associated with a boot path and rows each associated with one of the firmware modules220. Each entry of the matrix may be populated with an identifier having at least a first value or a second value. The first value may specify that the respective component is included. The second value may specify that the respective component is excluded

It should be appreciated that the data structure200may be formed according to any other data structure for storing the unique identifiers250associated with each respective configuration table150. For example, the data structure may be a matrix, an array, an array of arrays, a linked list, an array of linked lists, a linked list of linked lists, or any other possible static or dynamic data structure as understood in the art.

Referring now toFIG. 3, additional details will be provided regarding the embodiments presented herein for a firmware supporting multiple boot paths. In particular,FIG. 3is a flow diagram illustrating aspects of the operation of a process300presented herein for selecting multiple boot paths in association with a BIOS firmware110in the manner disclosed herein.

The routine300begins at operation310where the boot path selector115may receive a boot path indicator130. As described above, the boot path indicator130may indicate to the boot path selector115within the BIOS firmware110the boot path that should be followed for a given instance of booting the computer100. The boot path indicator130may be received as a user input140. Alternatively, the boot path indicator130may be provided by a boot path selector application165. The boot path selector115may receive the boot path indicator130at boot time.

At operation320, the BIOS firmware110may access a configuration table150associated with the desired boot path and retrieve configuration information from the configuration table150. The configuration table150may be stored within the computer100. When the BIOS firmware110follows a particular boot path, such as boot path117A, the BIOS firmware110may be instructed to access the configuration table150A associated with the boot path117A in order to retrieve configuration information specifying the components112to initialize. The desired boot path may be specified by the boot path indicator130as discussed with respect to operation310. The configuration table150associated with the desired boot path may include configuration information that specifies the components112, such as devices, modules or subsets of modules for inclusion in the configuration120associated with the respective boot path. Alternatively, the configuration table150may specify components112to be excluded from the configuration120.

Continuing to operation330, the BIOS firmware110utilizes the configuration information retrieved from the configuration table150to generate a configuration corresponding to the configuration table150. According to embodiments, the BIOS firmware110may generate the configuration by retrieving component initialization instructions114from the instruction store113. The component initialization instructions114retrieved from the instruction store113may correspond to the components112specified by the configuration information associated with the configuration table150for inclusion in the configuration120.

Once the configuration120is generated by the BIOS firmware110, the routine300proceeds to operation340, where the BIOS firmware110performs the configuration120associated with the configuration table150. As described above, the configuration120may include a set of component initialization instructions114corresponding to the components112indicated in the configuration table150for inclusion in the configuration120. Accordingly, the BIOS firmware110executes these sets of component initialization instructions114corresponding to the configuration table150. In this way, the BIOS firmware110initializes one or more components within the BIOS firmware110such that the computer100is initialized according to the configuration120.

Continuing to operation350, the BIOS firmware110may mount and launch a boot device containing an operating system160according to the specified boot path117. The operating system160, or associated boot device, may be specified within the configuration table150, in association with the configuration table150, or in other information associated with each particular boot path.

FIG. 4shows an illustrative computer architecture for a computer400that may be utilized in the implementations described herein. The architecture shown inFIG. 4may be utilized to embody the computer100shown inFIG. 1and described above.

The computer400includes a baseboard, or “motherboard”, which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication path. In one illustrative embodiment, a CPU422operates in conjunction with a chipset452. The CPU422is a standard central processor that performs arithmetic and logical operations necessary for the operation of the computer. The computer400may include a multitude of CPUs422.

The chipset452includes a north bridge424and a south bridge426. The north bridge424provides an interface between the CPU422and the remainder of the computer400. The north bridge424also provides an interface to a random access memory (RAM) used as the main memory454in the computer400and, possibly, to an on-board graphics adapter430. The north bridge424may also include functionality for providing networking functionality through a gigabit Ethernet adapter428. The gigabit Ethernet adapter428is capable of connecting the computer400to another computer via a network. Connections which may be made by the network adapter428may include LAN or WAN connections. LAN and WAN networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the internet. The north bridge424is connected to the south bridge426.

The south bridge426is responsible for controlling many of the input/output functions of the computer400. In particular, the south bridge426may provide one or more universal serial bus (USB) ports432, a sound adapter446, an Ethernet controller460, and one or more general purpose input/output (GPIO) pins434. The south bridge426may also provide a bus for interfacing peripheral card devices such as a graphics adapter462. In one embodiment, the bus comprises a peripheral component interconnect (PCI) bus, but other types of busses may be utilized.

The south bridge426is also operative to provide one or more interfaces for connecting mass storage devices to the computer400. For instance, according to an embodiment, the south bridge426includes a serial advanced technology attachment (SATA) adapter for providing one or more serial ATA ports436and an ATA 100 adapter for providing one or more ATA 100 ports444. The serial ATA ports436and the ATA 100 ports444may be, in turn, connected to one or more mass storage devices storing an operating system440and application programs, such as the SATA disk drive438. As discussed above, an operating system440comprises a set of programs that control operations of a computer and allocation of resources. An application program is software that runs on top of the operating system software, or other runtime environment, and uses computer resources to perform application specific tasks desired by the user. As also discussed above, the computer400may be configured in the manner described above in conjunction with a firmware supporting multiple boot paths.

The mass storage devices connected to the south bridge426, and their associated computer-readable media, provide non-volatile storage for the computer400. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed by the computer400.

Computer-readable media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. For instance, computer-readable media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.

A low pin count (LPC) interface may also be provided by the south bridge426for connecting a “Super I/O” device470. The Super I/O device470is responsible for providing a number of input/output ports, including a keyboard port, a mouse port, a serial interface472, a parallel port, and other types of input/output ports. The LPC interface may also connect a computer storage media such as a ROM or a flash memory such as a NVRAM448for storing the BIOS firmware110that includes program code containing the basic routines that help to start up the computer400and to transfer information between elements within the computer400. As discussed above, the BIOS firmware110may support multiple boot paths.

The computer400may be implemented as a conventional computer system, an embedded control computer, a laptop, or a server computer, a mobile device, a set-top box, a kiosk, a vehicular information system, a mobile telephone, a customized machine, or other hardware platform. The CPU422may be a general purpose processor, a processor core, a multiprocessor, a multi-core processor, a graphics processor, a digital signal processing (DSP) processor, a customized computing device implemented within an application specific integrated circuit (ASIC), a customized computing device implemented within a field programmable gate array (FPGA), a customized computing device implemented within any type of programmable logic, a state machine, a reconfigurable processor, any other processing unit, or any combination or multiplicity thereof.

The BIOS firmware110may comprise program modules firmware configured for supporting multiple boot paths. The program modules may include software instructions that, when loaded into the CPU422and executed, transform a general-purpose computing system into a special-purpose computing system customized to facilitate all, or part of, the multiple boot path firmware techniques disclosed herein. As detailed throughout this description, the program modules may provide various tools or techniques by which the computer400may participate within the overall systems or operating environments using the components, logic flows, and/or data structures discussed herein.

The CPU422may be constructed from any number of transistors or other circuit elements, which may individually or collectively assume any number of states. More specifically, the CPU422may operate as a state machine or finite-state machine. Such a machine may be transformed to a second machine, or specific machine by loading executable instructions contained within the program modules. These computer-executable instructions may transform the CPU422by specifying how the CPU422transitions between states, thereby transforming the transistors or other circuit elements constituting the CPU422from a first machine to a second machine, wherein the second machine may be specifically configured to support multiple boot path firmware. The states of either machine may also be transformed by receiving input from one or more user input devices, network interfaces460,428, other peripherals, other interfaces, or one or more users or other actors. Either machine may also transform states, or various physical characteristics of various output devices such as printers, speakers, video displays, or otherwise.

Encoding the program modules may also transform the physical structure of the storage media. The specific transformation of physical structure may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to: the technology used to implement the storage media, whether the storage media are characterized as primary or secondary storage, and the like. For example, if the storage media are implemented as semiconductor-based memory, the program modules may transform the physical state of the semiconductor memory454,448when the software is encoded therein. For example, the software may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory.

As another example, the storage media may be implemented using magnetic or optical technology such as hard drives or optical drives. In such implementations, the program modules may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations may also include altering the physical features or characteristics of particular locations within given optical media, to change the optical characteristics of those locations. It should be appreciated that various other transformations of physical media are possible without departing from the scope and spirit of the present description.

It should be appreciated that the computer400may comprise other types of computing devices, including hand-held computers, netbooks, MIDs, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer400may not include all of the components shown inFIG. 4, may include other components that are not explicitly shown inFIG. 4, or may utilize an architecture completely different than that shown inFIG. 4.

Based on the foregoing, it should be appreciated that technologies for firmware supporting multiple boot paths are provided herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological and transformative acts, specific computing machinery, and computer readable media, it is to be understood that the disclosure presented herein is not necessarily limited to the specific features, acts, or media described herein. The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the disclosure presented herein.