Selectively updating a bios image
A BIOS image can be selectively updated. An image loader of the BIOS can be configured to detect whether a BIOS image to be loaded includes a selective update capability field, and if so, employ a value defined in the selective update capability field to determine whether an updated BIOS image exists. When an updated BIOS image exists, the image loader can load the updated BIOS image rather than the BIOS image. In this way, an individual BIOS image can be selectively updated without needing to update the entire BIOS.
Latest Dell Products L.P. Patents:
N/A
BACKGROUNDBIOS firmware (BIOS) is the first software that is executed on the central processing unit (CPU) when a computing system is powered on. The primary task of the BIOS is to initialize the hardware and load the operating system (OS). The BIOS is in the form of a collection of BIOS images that typically comply with the Portable Executable/Common Object File Format (PE/COFF) specification.
Although these BIOS images are separate, it is not possible to update an individual BIOS image on SPI flash 110. To the contrary, if there is an update to any of BIOS images 111-1 through 111-n, the only way to install the update is to update the entire BIOS 111. In other words, it is not possible to add an updated BIOS image to SPI flash 110 without overwriting the entire existing BIOS 111 with a new BIOS 111 that includes the updated BIOS image.
This inability to update a single BIOS image creates a number of difficulties. For example, updating the entire BIOS can be time consuming. Therefore, a user may be reluctant to install a BIOS update. This is particularly true given that BIOS updates oftentimes only provide an update to a single BIOS image that the user may view as unimportant (e.g., an update pertaining to a peripheral interface or remote management functionality). Yet, the failure to update the BIOS may create incompatibilities, vulnerabilities or other negative side effects.
BRIEF SUMMARYThe present invention extends to methods, systems, and computer program products for selectively updating a BIOS image. An image loader of the BIOS can be configured to detect whether a BIOS image to be loaded includes a selective update capability field, and if so, employ a value defined in the selective update capability field to determine whether an updated BIOS image exists. When an updated BIOS image exists, the image loader can load the updated BIOS image rather than the BIOS image. In this way, an individual BIOS image can be selectively updated without needing to update the entire BIOS.
In some embodiments, the present invention is implemented as a method, performed during a boot process on a computing system, for selectively updating a BIOS image. In response to a request to load a BIOS image from existing BIOS, an identifier can be obtained from the BIOS image. The identifier can then be employed to determine whether an updated BIOS image is available for the BIOS image. Upon determining that an updated BIOS image is available for the BIOS image, the updated BIOS image is loaded rather than the BIOS image.
In some embodiments, the present invention is implemented as computer storage media storing computer executable instructions which when executed implement a method for selectively updating a BIOS image during a boot process on a computing system. This method may include: in response to a request to load a BIOS image from existing BIOS, determining that the BIOS image includes a selective update capability field; employing an identifier defined in the selective update capability field to determine whether an updated BIOS image is available for the BIOS image; and upon determining that an updated BIOS image is available for the BIOS image, loading the updated BIOS image rather than the BIOS image.
In some embodiments, the present invention is implemented as a computing system that includes one or more processors and computer storage media that stores existing BIOS. The existing BIOS implements an image loader and includes a plurality of BIOS images. The image loader is configured to implement a method during a boot process for selectively updating BIOS images included in the existing BIOS. In response to a request to load a first BIOS image included in the existing BIOS, the image loader determines that the first BIOS image includes a selective update capability field. The image loader then obtains a first identifier defined in the selective update capability field of the first BIOS image and determines that the first identifier is mapped to a first storage location. The image loader than loads an updated first BIOS image that is stored at the first storage location rather than loading the first BIOS image from the existing BIOS.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter.
Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
In the specification and the claims, the term “computing system” should be construed as encompassing desktops, laptops, tablets, smart phones, other mobile devices or any other type of end user computing device that includes BIOS. The term “BIOS” should be construed as firmware that is executed on a computing system to initialize the computing system and load the operating system.
In comparison to
In
In some embodiments, to create BIOS images that include a selective update capability field 301, UEFI build tools can be employed to integrate selective update capability field 301 into the PE/COFF format in which the BIOS images are defined. For example, in some embodiments, selective update capability field 301 could be in the form of a custom fixup or relocation entry as those terms are defined in the PE/COFF specification.
Turning to
Turning to
Although not shown, updated BIOS image 211-2, like the version of BIOS image 211-2 in BIOS 211 that it is intended to update, could include a selective update capability field 301 that stores GUID1. This value of selective update capability field 301 can be employed to locate the appropriate mapping to update. In particular, when storing updated BIOS image 211-2 at location 1, the GUID defined in updated BIOS image 211-2 could be read so that it will be known that GUID1, and not some other GUID within GUID-to-location mappings 200, should be mapped to location 1.
As can be seen, the above-described process allows an individual BIOS image to be updated without modifying the existing BIOS on a computing system. For example, with reference to
This process can also performed in compliance with Secure Boot (or a similar security standard). In particular, any updated BIOS image that is loaded in accordance with the techniques of the present invention can be signed in accordance with the Secure Boot standard. Then, when image loader 300 identifies the available updated BIOS image, it can verify that the updated BIOS image is properly signed before loading it.
In some embodiments, image loader 300 may be configured to access a configuration policy prior to implementing the above-described techniques. For example, a configuration policy may be maintained on computing system and can define whether the selective update of BIOS images should be allowed. In such cases, as part of being executed, image loader 300 can access the configuration policy to determine whether it should perform the selective update process during the boot process. In some embodiments, the configuration policy may identify individual BIOS images, categories of BIOS images or some other grouping of BIOS images for which the selective update process should be performed.
In summary, embodiments of the present invention provide techniques for enabling individual BIOS images to be updated without updating the entire existing BIOS on a computing system while still ensuring compliance with Secure Boot. These techniques allow BIOS updates to be performed with virtually no downtime.
Embodiments of the present invention may comprise or utilize special purpose or general-purpose computers including computer hardware, such as, for example, one or more processors and system memory. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system.
Computer-readable media are categorized into two disjoint categories: computer storage media and transmission media. Computer storage media (devices) include RAM, ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM), Flash memory, phase-change memory (“PCM”), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other similarly storage medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Transmission media include signals and carrier waves. Because computer storage media and transmission media are disjoint categories, computer storage media does not include signals or carrier waves.
Computer-executable instructions comprise, for example, instructions and data which, when executed by a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language or P-Code, or even source code.
Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, and the like.
The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices. An example of a distributed system environment is a cloud of networked servers or server resources. Accordingly, the present invention can be hosted in a cloud environment.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description.
Claims
1. A method, performed during a boot process on a computing system, for selectively updating a BIOS image, the method comprising:
- during a first boot process and in response to a request to load a BIOS image from existing BIOS, obtaining a globally unique identifier (GUID) from the BIOS image;
- during the first boot process, accessing GUID-to-location mappings to determine whether the GUID is mapped to a storage location;
- during the first boot process and upon determining from the GUID-to-location mappings that the GUID is not mapped to a storage location;
- after the first boot process, storing an updated BIOS image in a first storage location, the updated BIOS image including the GUID;
- updating the GUID-to-location mappings to map the GUID to the first storage location,
- during a second boot process subsequent to the first boot process and in response to a request to load the BIOS image from existing BIOS, obtaining the GUID from the BIOS image;
- during the second boot process, accessing the GUID-to-location mappings to determine whether the GUID is mapped to a storage location, and
- during the second boot process and upon determining from the GUID-to-location mappings that the GUID is mapped to the first storage location loading the updated BIOS image rather than the BIOS image.
2. The method of claim 1, wherein obtaining the GUID from the BIOS image comprises detecting that the BIOS image includes a selective update capability field and reading the GUID from the selective update capability field.
3. The method of claim 1, wherein loading the updated BIOS image comprises loading the updated BIOS image from the first storage location.
4. The method of claim 1, further comprising:
- prior to loading the updated BIOS image, verifying a signature of the updated BIOS image.
5. The method of claim 1, further comprising:
- during the second boot process and in response to a request to load a second BIOS image from the existing BIOS, obtaining a second GUID from the second BIOS image;
- during the second boot process, employing the second GUID to determine whether an updated BIOS image is available for the second BIOS image; and
- during the second boot process and upon determining that an updated BIOS image is not available for the second BIOS image, loading the second BIOS image from the existing BIOS as part of the second boot process.
6. The method of claim 5, wherein determining that an updated BIOS image is not available for the second BIOS image comprises determining that the second GUID is not mapped to a storage in the GUID-to-location mappings.
7. The method of claim 1, further comprising:
- in response to a request to load a second BIOS image from the existing BIOS, determining that the second BIOS image does not include the selective update capability field; and
- in response to determining that the second BIOS image does not include a selective update capability field, loading the second BIOS image from the existing BIOS.
8. The method of claim 1, wherein the GUID-to-location mappings are maintained in an update partition.
9. The method of claim 8, wherein the first storage location is in the update partition.
10. One or more computer storage media storing computer executable instructions which when executed implement a method for selectively updating a BIOS image during a boot process on a computing system, the method comprising:
- during a first boot process and in response to a request to load a BIOS image from existing BIOS, determining that the BIOS image includes a selective update capability field;
- during the first boot process, employing a globally unique identifier (GUID) defined in the selective update capability field to determine whether an updated BIOS image is available for the BIOS image by accessing GUID-to-location mappings to determine whether the GUID is mapped to a storage location;
- during the first boot process and upon determining that an updated BIOS image is not available for the BIOS image, loading the BIOS image;
- after the first boot process, storing an updated BIOS image in a first storage location, the updated BIOS image including the GUID;
- updating the GUID-to-location mappings to map the GUID to the first storage location;
- during a second boot process and in response to a request to load the BIOS image from existing BIOS, determining that the BIOS image includes the selective update capability field;
- during the second boot process, employing the GUID defined in the selective update capability field to determine whether an updated BIOS image is available for the BIOS image by accessing the GUID-to-location mappings to determine whether the GUID is mapped to a storage location,
- during the second boot process, determining that the GUID is mapped to the first storage location in the GUID-to-location mappings; and
- during the second boot process, loading the updated BIOS rather than the BIOS image.
11. The computer storage media of claim 10, wherein loading the updated BIOS image comprises loading the updated BIOS image from the first storage location.
12. The computer storage media of claim 10, wherein the method further comprises:
- prior to loading the updated BIOS image, verifying a signature of the updated BIOS image.
13. The computer storage media of claim 10, wherein the GUID-to-location mappings are maintained in an update partition.
14. The computer storage media of claim 13, wherein the first storage location is in the update partition.
15. A computing system comprising:
- one or more processors; and
- computer storage media storing existing BIOS, wherein the existing BIOS implements an image loader and includes a plurality of BIOS images;
- wherein the image loader is configured to implement a method during a boot process for selectively updating BIOS images included in the existing BIOS, the method comprising: during a first boot process and in response to a request to load a first BIOS image from the existing BIOS, obtaining a globally unique identifier (GUID) from the first BIOS image; during the first boot process, accessing GUID-to-location mappings to determine whether the GUID is mapped to a storage location; during the first boot process and upon determining from the GUID-to-location mappings that the GUID is not mapped to a storage location, loading the first BIOS image; after the first boot process, storing an updated first BIOS image in a first storage location, the updated first BIOS image including the GUID; updating the GUID-to-location mappings to map the GUID to the first storage location, during a second boot process subsequent to the first boot process and in response to a request to load the first BIOS image from the existing BIOS, obtaining the GUID from the BIOS image, during the second boot process, accessing the GUID-to-location mappings to determine whether the GUID is mapped to a storage location; and during the second boot process and upon determining from the GUID-to-location mappings that the GUID is mapped to the first storage location, loading the updated first BIOS image rather than the first BIOS image.
16. The computing system of claim 15, wherein the method further comprises:
- in response to a request to load a second BIOS image included in the existing BIOS, determining that the second BIOS image includes a selective update capability field;
- obtaining a second identifier defined in the selective update capability field of the second BIOS image;
- determining that the second identifier is not mapped to a storage location; and
- loading the second BIOS image from the existing BIOS.
17. The computing system of claim 16, wherein the method further comprises:
- in response to a subsequent request to load the second BIOS image included in the existing BIOS, determining that the second identifier is mapped to a second storage location; and
- loading an updated second BIOS image from the second storage location rather than loading the second BIOS image from the existing BIOS.
18. The computing system of claim 15, wherein the method further comprises:
- loading the updated first BIOS image after verifying a signature of the updated first BIOS image.
19. The computing system of claim 15, wherein the GUID-to-location mappings are maintained in an update partition.
20. The computing system of claim 19, wherein the first storage location is in the update partition.
6425079 | July 23, 2002 | Mahmoud |
20060020837 | January 26, 2006 | Rothman |
20060174240 | August 3, 2006 | Flynn |
20120023322 | January 26, 2012 | Landry |
20130276128 | October 17, 2013 | Konetski |
20140001073 | January 2, 2014 | Kim |
20160306616 | October 20, 2016 | Tomppo |
20210146080 | May 20, 2021 | Trull |
Type: Grant
Filed: Feb 3, 2020
Date of Patent: Jul 19, 2022
Patent Publication Number: 20210240484
Assignee: Dell Products L.P. (Round Rock, TX)
Inventors: Sumanth Vidyadhara (Bangalore), Shekar Babu Suryanarayana (Bangalore)
Primary Examiner: Jaweed A Abbaszadeh
Assistant Examiner: Hyun Soo Kim
Application Number: 16/780,346
International Classification: G06F 9/4401 (20180101); G06F 8/65 (20180101); G06F 21/57 (20130101);