US10795769B2 - Facilitating the identification of a service operating system when a main operating system fails - Google Patents

Facilitating the identification of a service operating system when a main operating system fails Download PDF

Info

Publication number
US10795769B2
US10795769B2 US16/267,268 US201916267268A US10795769B2 US 10795769 B2 US10795769 B2 US 10795769B2 US 201916267268 A US201916267268 A US 201916267268A US 10795769 B2 US10795769 B2 US 10795769B2
Authority
US
United States
Prior art keywords
operating system
main operating
boot
uefi
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US16/267,268
Other versions
US20200250038A1 (en
Inventor
Sumanth Vidyadhara
Sudharshana Madhava Rao
Anand Prakash Joshi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dell Products LP
Original Assignee
Dell Products LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US16/267,268 priority Critical patent/US10795769B2/en
Application filed by Dell Products LP filed Critical Dell Products LP
Assigned to DELL PRODUCTS L.P. reassignment DELL PRODUCTS L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RAO, SUDHARSHANA MADHAVA, VIDYADHARA, SUMANTH, JOSHI, ANAND PRAKASH
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. SECURITY AGREEMENT Assignors: CREDANT TECHNOLOGIES, INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., WYSE TECHNOLOGY L.L.C.
Assigned to CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH reassignment CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH SECURITY AGREEMENT Assignors: DELL PRODUCTS L.P., EMC CORPORATION, EMC IP Holding Company LLC, WYSE TECHNOLOGY L.L.C.
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT (NOTES) Assignors: DELL PRODUCTS L.P., EMC CORPORATION, EMC IP Holding Company LLC, WYSE TECHNOLOGY L.L.C.
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. SECURITY AGREEMENT Assignors: CREDANT TECHNOLOGIES INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., WYSE TECHNOLOGY L.L.C.
Publication of US20200250038A1 publication Critical patent/US20200250038A1/en
Publication of US10795769B2 publication Critical patent/US10795769B2/en
Application granted granted Critical
Assigned to DELL PRODUCTS L.P., EMC CORPORATION, WYSE TECHNOLOGY L.L.C., EMC IP Holding Company LLC reassignment DELL PRODUCTS L.P. RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534 Assignors: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Assigned to EMC CORPORATION, EMC IP Holding Company LLC, DELL PRODUCTS L.P., DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.) reassignment EMC CORPORATION RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Assignors: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded

Definitions

  • the Unified Extensible Firmware Interface functions as an interface between the operating system and the platform firmware.
  • a primary feature of UEFI is the provision of a standard environment for booting an operating system.
  • UEFI consists primarily of a system partition, boot services, runtime services and table-based interfaces.
  • the platform firmware When a computing device is powered on, the platform firmware, via a boot manager, is able to retrieve an operating system loader image from the system partition which may exist on a variety of mass storage device types.
  • the operating system loader which is a type of UEFI application, continues to boot the complete operating system. To do so, it may use the UEFI boot services and interfaces to survey, comprehend, and initialize the various platform components and the operating system software that manages them.
  • UEFI runtime services are also available to the operating system loader during the boot phase.
  • the boot manager In addition to loading the operating system loader, the boot manager also allows other types of UEFI applications and UEFI drivers to be loaded and executed during the boot process. These applications and drivers can employ the boot services and/or runtime services to perform a number of functions including accessing the Advanced Configuration and Power Interface (ACPI) framework.
  • ACPI Advanced Configuration and Power Interface
  • UEFI facilitates the process of loading an operating system on a computing device.
  • the main operating system may fail to boot.
  • a service operating system may be provided on the computing device.
  • the UEFI provides boot option recovery which allows the service operating system to be executed to attempt to identify and correct the cause of the failure.
  • This service operating system may commonly be stored on a diagnostic partition of the computing device's hard drive or other storage.
  • a computing device may have multiple main operating systems.
  • multiple service operating systems one for each main operating system, may also be provided. This results in excessive consumption of storage. Additionally, when a main operating system fails on a computing device with multiple main operating systems, it can be difficult to identify which main operating system failed and therefore which service operating system should be executed.
  • the present invention extends to methods, systems, and computer program products for facilitating the identification and loading of an appropriate service operating system when a main operating system fails.
  • an agent can create a UEFI variable that is specific to each main operating system on a client.
  • the UEFI environment can be configured to execute a preboot application as part of boot option recovery.
  • the preboot application can update the UEFI variable specific to the main operating system that failed to boot to reflect the boot failure.
  • the preboot application can instruct the UEFI environment to re-attempt the boot process.
  • the preboot application will be executed and can access the OS-specific UEFI variables to determine if any main OS has failed to boot. Due to the update the preboot application made to the UEFI variable for the failed main operating system, the preboot application will be able to identify which main operating system failed.
  • the preboot application can employ information contained in the UEFI variable for the failed main operating system to generate and send a service location protocol (SLP) request to a server.
  • SLP service location protocol
  • the preboot application can employ the SLP vendor extension to identify the failed main operating system.
  • the server can then employ the content of the SLP vendor extension to locate and send the appropriate service operating system to the client.
  • the preboot application can then cause the client to boot the downloaded service operating system which can perform appropriate diagnostics to attempt to recovery the failed main operating system.
  • the present invention is implemented on a client as a method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails.
  • first UEFI variable that is specific to the first main operating system can be updated to indicate that the first main operating system failed to boot.
  • characteristics of the first main operating system can be obtained from the first UEFI variable.
  • An SLP request can then be created and can include in a vendor extension the characteristics of the first main operating system that were obtained from the first UEFI variable.
  • the SLP request can then be sent to a server.
  • a service operating system corresponding to the characteristics of the first main operating system that were included in the vendor extension can be received from the server.
  • the client can be caused to boot the service operating system.
  • the present invention is implemented on a client as a method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails.
  • a first UEFI variable that defines characteristics of the first main operating system can be created.
  • the first UEFI variable can be updated to indicate that the first main operating system failed to boot.
  • the first UEFI variable can then be accessed during a boot process.
  • an SLP request can be created.
  • the SLP request can include a vendor extension that defines the characteristics of the first main operating system that are defined in the first UEFI variable.
  • the SLP request can then be sent to a server.
  • a first service operating system that corresponds to the characteristics of the first main operating system that were defined in the vendor extension can be received and executed on the client.
  • the present invention is implemented as computer storage media storing computer executable instructions which when executed implement a method for identifying and loading an appropriate service operating system when a main operating system fails.
  • This method can comprise: in response to a first main operating system failing to boot on a client, creating and sending an SLP request to a server, the SLP request including a vendor extension that defines characteristics of the first main operating system; in response to receiving the SLP request at the server, accessing the characteristics of the first main operating system defined in the vendor extension; employing the characteristics of the first main operating system to identify, from among a plurality of service operating systems available on the server, a first service operating system that matches the characteristics of the first main operating system; sending the first service operating system to the client; and in response to receiving the first service operating system, causing the first service operating system to be executed on the client.
  • FIG. 1 illustrates an example computing environment in which the present invention can be implemented
  • FIG. 2 illustrates client-side components that can be employed to implement the present invention
  • FIGS. 3A-3E illustrate how the present invention can facilitate identifying which main operating system failed to boot
  • FIGS. 4A-4C illustrate how the present invention can retrieve and execute a service operating system corresponding to the failed main operating system
  • FIG. 5 illustrates a flowchart of an example method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails.
  • main operating system should be construed as an operating system that provides full functionality to enable a user to use a computing device (e.g., Windows, Ubuntu, RHEL, Suse, Mac, Android, etc.).
  • service operating system should be construed as an operating system that performs diagnostic functions on a main operating system.
  • FIG. 1 illustrates a computing environment 100 in which the present invention can be implemented.
  • Computing environment 100 includes a server 101 that is connected to a client 102 via a network 103 .
  • Server 101 can represent any computing architecture that can provide services to client 102 via network 103 such as a standalone computing device, a virtual machine or a cloud.
  • Client 102 can represent any computing device that is capable of executing a main operating system and a service operating system.
  • client 102 could be a desktop computer, a laptop, a thin client, a mobile device, etc.
  • Network 103 can represent any type of network architecture including a LAN environment and/or the internet.
  • FIG. 2 provides an overview of the components that may exist on client 102 to enable the present invention to be implemented.
  • client 102 can conform to UEFI and will therefore provide access to platform hardware 201 via UEFI boot services 202 and UEFI runtime services 203 .
  • platform hardware 201 can include storage 201 a which includes at least one UEFI system partition and may include a number of additional partitions for each operating system available on client 102 .
  • Client 102 can also conform to ACPI and will therefore provide ACPI framework 204 .
  • Client 102 is assumed to include an operating system loader 210 a corresponding to operating system 210 .
  • client 102 may also include an operating system loader for any other operating systems on client 102 .
  • client 102 also includes a preboot application 240 which is a UEFI application.
  • Client 102 also includes an agent 250 (e.g., a daemon) which can be configured to execute once operating system 210 has successfully booted.
  • agent 250 e.g., a daemon
  • client 102 may include other instances of agent 250 that are specific to other operating systems that exist on client 102 .
  • preboot application 240 and agent 250 can be configured to facilitate the identification and loading of an appropriate service operating system when a main operating system (e.g., operating system 210 ) fails to boot properly on client 102 .
  • agent 250 can create a UEFI variable that is specific to each main operating system on client 102 .
  • the UEFI environment can be configured to execute preboot application 240 as part of boot option recovery.
  • preboot application 240 can update the UEFI variable specific to the main operating system that failed to boot to reflect the boot failure.
  • Preboot application 240 can then instruct the UEFI environment to re-attempt the boot process.
  • preboot application 240 will be executed and can access the OS-specific UEFI variables to determine if any main OS has failed to boot. Due to the update the preboot application 240 made to the UEFI variable for the failed main operating system, preboot application 240 will be able to identify which main operating system failed.
  • preboot application 240 can employ information contained in the UEFI variable for the failed main operating system to generate and send a service location protocol (SLP) request to server 101 .
  • SLP service location protocol
  • Preboot application 240 can employ the SLP vendor extension to identify the failed main operating system.
  • Server 101 can then employ the content of the SLP vendor extension to locate and send the appropriate service operating system to client 102 .
  • Preboot application 240 can then cause client 102 to boot the downloaded service operating system which can perform appropriate diagnostics to attempt to recovery the failed main operating system.
  • FIGS. 3A-3E illustrate how agent 250 and preboot application 240 facilitate the identification of a main operating system that has failed to boot.
  • various components of the architecture shown in FIG. 2 have been omitted from these figures.
  • FIG. 3A it is assumed that client 102 has successfully booted main operating system 210 .
  • agent 250 will be executed on client 102 and, in step 1 , can write boot-related metadata to UEFI variable 300 a that is specific to operating system 210 (e.g., via the SetFirmwareEnvironmentVariable function in Windows or via the efivarfs file system in Linux).
  • each OS-specific UEFI variable can identify characteristics (e.g., type, build, version, etc.) of operating system as well as information regarding the booting of the operating system.
  • OS-specific UEFI variable 300 a indicates that operating system 210 is Windows 10, that the last successful booting of operating system 210 occurred at Timestamp1 and that operating system 210 has not failed to boot.
  • each OS-specific UEFI variable may include other information.
  • agent 250 can also set the EFI_OS_INDICATIONS_START_OS_RECOVERY bit and/or the EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY bit of the OSIndications variable (e.g., by causing operating system 210 to invoke the SetVariable function that UEFI runtime services 203 provides).
  • the operating system has set the EFI_OS_INDICATIONS_START_OS_RECOVERY bit and booting fails, the UEFI platform will perform OS-defined recovery.
  • agent 250 can cause either or both of these bits to be set so that recovery will be performed if an operating system fails to boot.
  • preboot application 240 can be configured to be loaded during each boot process. As represented in step 3 a , when it is loaded, preboot application 240 can access each of the OS-specific UEFI variables to determine whether any main operating system has failed to boot. This can be accomplished by reading the value of the FailedBootTimeStamp in each OS-specific UEFI variable. For example, in OS-specific UEFI variable 300 a , the FailedBootTimeStamp parameter is set to null indicating that operating system 210 has not failed to boot.
  • preboot application 240 can allow the boot process to proceed in a normal fashion (e.g., to boot operating system 210 or another main operating system).
  • step 4 b as a result of agent 250 causing the EFI_OS_INDICATIONS_START_OS_RECOVERY bit and/or EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY bit to be set, the UEFI platform will initiate boot operation recovery.
  • the UEFI platform can be configured to load preboot application 240 as part of the boot operation recovery (e.g., by using the OsRecoveryOrder variable).
  • preboot application 240 once loaded, can access OS-specific UEFI variable 300 a (given that operating system 210 has failed to load) and set the FailedBootTimeStamp parameter accordingly (e.g., by writing a timestamp, Timestamp2, defining when the failed boot occurred).
  • preboot application 240 can return control to the UEFI boot manager (e.g., by calling EFI_BOOT_SERVICES.ExitBootServices( ) or ResetSystem( )) which will cause the boot manager to re-attempt the boot process.
  • preboot application 240 will again be loaded.
  • preboot application 240 will access each OS-specific UEFI variable to determine if any main operating system failed to boot.
  • preboot application 240 will initiate the process of obtaining and booting a service operating system corresponding to main operating system 210 .
  • preboot application 240 can determine, from the OS type parameter, that the Windows 10 operating system has failed to boot (as opposed to the operating system defined in OS-specific UEFI variable 300 b or another OS-specific UEFI variable).
  • FIGS. 4A-4C illustrate various steps that preboot application 240 can perform after identifying which main operating system has failed to obtain a service operating system specific to the failed main operating system from server 101 .
  • preboot application 240 can create and send an SLP request to server 101 .
  • preboot application 240 can create an SLP vendor extension that defines the characteristics of the failed main operating system.
  • preboot application 240 can create and send SLP request 400 that includes an SLP vendor extension that defines an OEM ID (e.g., 0x8010), an OS version (e.g., 1803 ), an OS build (e.g., 17134 .
  • Preboot application 240 can obtain the OS version, build and type from OS-specific UEFI variable 300 a .
  • the OEM ID can be a constant value that server 101 has been configured to understand as representing requests for service operating systems.
  • Server 101 processes SLP request 400 to determine which service operating system should be sent to client 102 .
  • server 101 can maintain a number of service operating systems 410 a - 410 n corresponding to the various main operating systems that may be installed on any client 102 that server 101 manages.
  • service operating system 410 a corresponds to the Windows 10 operating system that failed to boot on client 102 .
  • server 101 can determine that service operating system 410 a should be sent to client 102 and can then send service operating system 410 a in step 2 .
  • Preboot application 240 can store service operating system 410 a in an appropriate location in storage 201 a (e.g., in RAMDisk).
  • preboot application 240 can cause the UEFI platform to boot service operating system 410 a .
  • service operating system 410 a will be executed on client 102 and can perform any appropriate diagnostics to identify and address any reason for the failure of main operating system 210 .
  • preboot application 240 and/or service operating system 410 a can also reset the FailedBootTimeStamp parameter in OS-specific UEFI variable 300 a so that, during a subsequent boot, preboot application 240 will not again attempt to retrieve and execute a service operating system.
  • agent 250 can be configured to create/update an ACPI table to include OS-specific entries that define the same type of information as the OS-specific UEFI variables. Therefore, for purposes of this description and the claims, the term “UEFI variable” should be construed as encompassing entries in an ACPI table.
  • preboot application 240 can be configured to access the ACPI table during boot option recovery to determine which main operating system has failed and to obtain the characteristics of the failed main operating system to be included in the SLP request.
  • FIG. 5 provides a flowchart of an example method 500 for facilitating the identification and loading of an appropriate service operating system when a main operating system fails.
  • Method 500 can be implemented on client 102 .
  • Method 500 includes an act 501 of, in response to a first main operating system failing to boot on the client, updating a first UEFI variable that is specific to the first main operating system to indicate that the first main operating system failed to boot.
  • preboot application 240 can update the FailedBootTimeStamp parameter of OS-specific UEFI variable 300 a when operating system 210 fails to boot.
  • Method 500 includes an act 502 of, based on the first UEFI variable indicating that the first main operating system failed to boot, obtaining characteristics of the first main operating system from the first UEFI variable.
  • preboot application 240 can obtain an operating system type, version, and/or build from OS-specific UEFI variable 300 a.
  • Method 500 includes an act 503 of creating an SLP request that includes in a vendor extension the characteristics of the first main operating system that were obtained from the first UEFI variable.
  • preboot application 240 can create SLP request 400 and include characteristics of operating system 210 in a vendor extension.
  • Method 500 includes an act 504 of sending the SLP request to a server.
  • preboot application 240 can cause SLP request 400 to be sent to server 101 .
  • Method 500 includes an act 505 of receiving, from the server, a service operating system corresponding to the characteristics of the first main operating system that were included in the vendor extension.
  • preboot application 240 can download service operating system 410 a from server 101 .
  • Method 500 includes an act 506 of causing the client to boot the service operating system.
  • preboot application 240 can cause the UEFI environment to boot service operating system 410 a on client 102 .
  • the techniques of the present invention provide a way to facilitate the identification and retrieval of a service operating system for a particular main operating system that has failed to boot.
  • the present invention eliminates the need to store each service operating system on the client thereby freeing up storage that oftentimes is limited.
  • the present invention also provides a dynamic way of identifying which main operating system has failed thereby reducing the amount of administrator intervention that may otherwise be required to address operating system failures. For these reasons, the present invention is particularly beneficial when clients have multiple main operating systems. However, the present invention can be implemented on clients that have a single main operating system.
  • 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 is 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.
  • 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.
  • 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.
  • 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.

Abstract

The identification and loading of an appropriate service operating system can be facilitated when a main operating system fails. To facilitate the identification of which main operating system failed, an agent can create a UEFI variable that is specific to each main operating system on a client. These OS-specific UEFI variables can be employed to identify which main operating system has failed to boot. When a main operating system fails to boot, a UEFI preboot application can be configured to access the UEFI variables to identify which main operating system has failed. The UEFI preboot application can also obtain characteristics of the failed operating system from the UEFI variable and include such characteristics in a vendor extension of an SLP request. A server can employ the characteristics defined in the vendor extension to identify and send an appropriate service operating system to the client.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
N/A
BACKGROUND
The Unified Extensible Firmware Interface (UEFI) functions as an interface between the operating system and the platform firmware. A primary feature of UEFI is the provision of a standard environment for booting an operating system. UEFI consists primarily of a system partition, boot services, runtime services and table-based interfaces.
When a computing device is powered on, the platform firmware, via a boot manager, is able to retrieve an operating system loader image from the system partition which may exist on a variety of mass storage device types. Once started, the operating system loader, which is a type of UEFI application, continues to boot the complete operating system. To do so, it may use the UEFI boot services and interfaces to survey, comprehend, and initialize the various platform components and the operating system software that manages them. UEFI runtime services are also available to the operating system loader during the boot phase.
In addition to loading the operating system loader, the boot manager also allows other types of UEFI applications and UEFI drivers to be loaded and executed during the boot process. These applications and drivers can employ the boot services and/or runtime services to perform a number of functions including accessing the Advanced Configuration and Power Interface (ACPI) framework.
UEFI facilitates the process of loading an operating system on a computing device. However, in many cases, the main operating system may fail to boot. For this reason, a service operating system may be provided on the computing device. In the event that the main operating systems fails to boot or crashes, the UEFI provides boot option recovery which allows the service operating system to be executed to attempt to identify and correct the cause of the failure. This service operating system may commonly be stored on a diagnostic partition of the computing device's hard drive or other storage.
In some cases, a computing device may have multiple main operating systems. In such cases, multiple service operating systems, one for each main operating system, may also be provided. This results in excessive consumption of storage. Additionally, when a main operating system fails on a computing device with multiple main operating systems, it can be difficult to identify which main operating system failed and therefore which service operating system should be executed.
BRIEF SUMMARY
The present invention extends to methods, systems, and computer program products for facilitating the identification and loading of an appropriate service operating system when a main operating system fails. To facilitate the identification of which main operating system failed, an agent can create a UEFI variable that is specific to each main operating system on a client. In the event that a main operating system fails to boot, the UEFI environment can be configured to execute a preboot application as part of boot option recovery. As part of this boot option recovery, the preboot application can update the UEFI variable specific to the main operating system that failed to boot to reflect the boot failure.
After updating the appropriate UEFI variable, the preboot application can instruct the UEFI environment to re-attempt the boot process. As part of this boot process, the preboot application will be executed and can access the OS-specific UEFI variables to determine if any main OS has failed to boot. Due to the update the preboot application made to the UEFI variable for the failed main operating system, the preboot application will be able to identify which main operating system failed.
Once the preboot application dentifies which main operating system failed, it can employ information contained in the UEFI variable for the failed main operating system to generate and send a service location protocol (SLP) request to a server. The preboot application can employ the SLP vendor extension to identify the failed main operating system. The server can then employ the content of the SLP vendor extension to locate and send the appropriate service operating system to the client. The preboot application can then cause the client to boot the downloaded service operating system which can perform appropriate diagnostics to attempt to recovery the failed main operating system.
In one embodiment, the present invention is implemented on a client as a method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails. In response to a first main operating system failing to boot on the client, first UEFI variable that is specific to the first main operating system can be updated to indicate that the first main operating system failed to boot. Based on the first UEFI variable indicating that the first main operating system failed to boot, characteristics of the first main operating system can be obtained from the first UEFI variable. An SLP request can then be created and can include in a vendor extension the characteristics of the first main operating system that were obtained from the first UEFI variable. The SLP request can then be sent to a server. In response, a service operating system corresponding to the characteristics of the first main operating system that were included in the vendor extension can be received from the server. Finally, the client can be caused to boot the service operating system.
In another embodiment, the present invention is implemented on a client as a method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails. In response to a first main operating system booting successfully on a client, a first UEFI variable that defines characteristics of the first main operating system can be created. In response to the first main operating system failing to boot on the client, the first UEFI variable can be updated to indicate that the first main operating system failed to boot. The first UEFI variable can then be accessed during a boot process. Based on the first UEFI variable indicating that the first main operating system failed to boot, an SLP request can be created. The SLP request can include a vendor extension that defines the characteristics of the first main operating system that are defined in the first UEFI variable. The SLP request can then be sent to a server. In response, a first service operating system that corresponds to the characteristics of the first main operating system that were defined in the vendor extension can be received and executed on the client.
In another embodiment, the present invention is implemented as computer storage media storing computer executable instructions which when executed implement a method for identifying and loading an appropriate service operating system when a main operating system fails. This method can comprise: in response to a first main operating system failing to boot on a client, creating and sending an SLP request to a server, the SLP request including a vendor extension that defines characteristics of the first main operating system; in response to receiving the SLP request at the server, accessing the characteristics of the first main operating system defined in the vendor extension; employing the characteristics of the first main operating system to identify, from among a plurality of service operating systems available on the server, a first service operating system that matches the characteristics of the first main operating system; sending the first service operating system to the client; and in response to receiving the first service operating system, causing the first service operating system to be executed on the client.
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.
BRIEF DESCRIPTION OF THE DRAWINGS
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:
FIG. 1 illustrates an example computing environment in which the present invention can be implemented;
FIG. 2 illustrates client-side components that can be employed to implement the present invention;
FIGS. 3A-3E illustrate how the present invention can facilitate identifying which main operating system failed to boot;
FIGS. 4A-4C illustrate how the present invention can retrieve and execute a service operating system corresponding to the failed main operating system; and
FIG. 5 illustrates a flowchart of an example method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails.
DETAILED DESCRIPTION
In this specification and the claims, the term “main operating system” should be construed as an operating system that provides full functionality to enable a user to use a computing device (e.g., Windows, Ubuntu, RHEL, Suse, Mac, Android, etc.). The term “service operating system” should be construed as an operating system that performs diagnostic functions on a main operating system.
FIG. 1 illustrates a computing environment 100 in which the present invention can be implemented. Computing environment 100 includes a server 101 that is connected to a client 102 via a network 103. Server 101 can represent any computing architecture that can provide services to client 102 via network 103 such as a standalone computing device, a virtual machine or a cloud. Client 102 can represent any computing device that is capable of executing a main operating system and a service operating system. For example, client 102 could be a desktop computer, a laptop, a thin client, a mobile device, etc. Network 103 can represent any type of network architecture including a LAN environment and/or the internet.
FIG. 2 provides an overview of the components that may exist on client 102 to enable the present invention to be implemented. As addressed in the background, client 102 can conform to UEFI and will therefore provide access to platform hardware 201 via UEFI boot services 202 and UEFI runtime services 203. As shown, platform hardware 201 can include storage 201 a which includes at least one UEFI system partition and may include a number of additional partitions for each operating system available on client 102. Client 102 can also conform to ACPI and will therefore provide ACPI framework 204. Client 102 is assumed to include an operating system loader 210 a corresponding to operating system 210. Although not shown, client 102 may also include an operating system loader for any other operating systems on client 102.
In accordance with embodiments of the present invention, client 102 also includes a preboot application 240 which is a UEFI application. Client 102 also includes an agent 250 (e.g., a daemon) which can be configured to execute once operating system 210 has successfully booted. Although not shown, client 102 may include other instances of agent 250 that are specific to other operating systems that exist on client 102. As will be described in detail below, preboot application 240 and agent 250 can be configured to facilitate the identification and loading of an appropriate service operating system when a main operating system (e.g., operating system 210) fails to boot properly on client 102.
As an overview, to facilitate the identification of which main operating system failed, agent 250 can create a UEFI variable that is specific to each main operating system on client 102. In the event that a main operating system fails to boot, the UEFI environment can be configured to execute preboot application 240 as part of boot option recovery. As part of this boot option recovery, preboot application 240 can update the UEFI variable specific to the main operating system that failed to boot to reflect the boot failure. Preboot application 240 can then instruct the UEFI environment to re-attempt the boot process. As part of this boot process, preboot application 240 will be executed and can access the OS-specific UEFI variables to determine if any main OS has failed to boot. Due to the update the preboot application 240 made to the UEFI variable for the failed main operating system, preboot application 240 will be able to identify which main operating system failed.
Once preboot application 240 identifies which main operating system failed, it can employ information contained in the UEFI variable for the failed main operating system to generate and send a service location protocol (SLP) request to server 101. Preboot application 240 can employ the SLP vendor extension to identify the failed main operating system. Server 101 can then employ the content of the SLP vendor extension to locate and send the appropriate service operating system to client 102. Preboot application 240 can then cause client 102 to boot the downloaded service operating system which can perform appropriate diagnostics to attempt to recovery the failed main operating system.
FIGS. 3A-3E illustrate how agent 250 and preboot application 240 facilitate the identification of a main operating system that has failed to boot. For ease of illustration, various components of the architecture shown in FIG. 2 have been omitted from these figures. In FIG. 3A, it is assumed that client 102 has successfully booted main operating system 210. As a result, agent 250 will be executed on client 102 and, in step 1, can write boot-related metadata to UEFI variable 300 a that is specific to operating system 210 (e.g., via the SetFirmwareEnvironmentVariable function in Windows or via the efivarfs file system in Linux). It is also assumed that another operating system is installed on client 102 and that a UEFI variable 300 b specific to the operating system has been created in storage 201 a. Although not shown, client 102 may include additional operating systems for which OS-specific UEFI variables would exist. As generally represented in FIG. 3A, each OS-specific UEFI variable can identify characteristics (e.g., type, build, version, etc.) of operating system as well as information regarding the booting of the operating system. For example, OS-specific UEFI variable 300 a indicates that operating system 210 is Windows 10, that the last successful booting of operating system 210 occurred at Timestamp1 and that operating system 210 has not failed to boot. As represented by the ellipsis, each OS-specific UEFI variable may include other information.
As represented as step 2 in FIG. 3B, in addition to creating OS-specific UEFI variables, agent 250 can also set the EFI_OS_INDICATIONS_START_OS_RECOVERY bit and/or the EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY bit of the OSIndications variable (e.g., by causing operating system 210 to invoke the SetVariable function that UEFI runtime services 203 provides). As is known, when the operating system has set the EFI_OS_INDICATIONS_START_OS_RECOVERY bit and booting fails, the UEFI platform will perform OS-defined recovery. As is also known, when the operating system has set the EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY bit and booting fails, the UEFI platform will perform platform-defined recovery (possibly after a failed attempt to perform OS-defined recovery). In other words, agent 250 can cause either or both of these bits to be set so that recovery will be performed if an operating system fails to boot.
Turning to FIG. 3C, preboot application 240 can be configured to be loaded during each boot process. As represented in step 3 a, when it is loaded, preboot application 240 can access each of the OS-specific UEFI variables to determine whether any main operating system has failed to boot. This can be accomplished by reading the value of the FailedBootTimeStamp in each OS-specific UEFI variable. For example, in OS-specific UEFI variable 300 a, the FailedBootTimeStamp parameter is set to null indicating that operating system 210 has not failed to boot. In step 3 b, and assuming none of the other OS-specific UEFI variables indicate that the corresponding main operating system has failed to boot, preboot application 240 can allow the boot process to proceed in a normal fashion (e.g., to boot operating system 210 or another main operating system).
In FIG. 3D, it is assumed that operating system 210 fails to boot in step 4 a. In step 4 b, as a result of agent 250 causing the EFI_OS_INDICATIONS_START_OS_RECOVERY bit and/or EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY bit to be set, the UEFI platform will initiate boot operation recovery. The UEFI platform can be configured to load preboot application 240 as part of the boot operation recovery (e.g., by using the OsRecoveryOrder variable). Accordingly, in step 4 c, preboot application 240, once loaded, can access OS-specific UEFI variable 300 a (given that operating system 210 has failed to load) and set the FailedBootTimeStamp parameter accordingly (e.g., by writing a timestamp, Timestamp2, defining when the failed boot occurred). At this point, preboot application 240 can return control to the UEFI boot manager (e.g., by calling EFI_BOOT_SERVICES.ExitBootServices( ) or ResetSystem( )) which will cause the boot manager to re-attempt the boot process.
Turning to FIG. 3E, during the subsequent attempt to boot client 102, preboot application 240 will again be loaded. In step 5 a, similar to step 3 a, preboot application 240 will access each OS-specific UEFI variable to determine if any main operating system failed to boot. In this instance, because the FailedBootTimeStamp parameter of OS-specific UEFI variable 300 a is set to a valid timestamp, in step 5 b, preboot application 240 will initiate the process of obtaining and booting a service operating system corresponding to main operating system 210. In particular, because the FailedBootTimeStamp parameter in OS-specific UEFI variable 300 a is set, preboot application 240 can determine, from the OS type parameter, that the Windows 10 operating system has failed to boot (as opposed to the operating system defined in OS-specific UEFI variable 300 b or another OS-specific UEFI variable).
FIGS. 4A-4C illustrate various steps that preboot application 240 can perform after identifying which main operating system has failed to obtain a service operating system specific to the failed main operating system from server 101. In step 1 shown in FIG. 4A, preboot application 240 can create and send an SLP request to server 101. In order to specify to server 101 which main operating system has failed, preboot application 240 can create an SLP vendor extension that defines the characteristics of the failed main operating system. For example, as shown in FIG. 4A, preboot application 240 can create and send SLP request 400 that includes an SLP vendor extension that defines an OEM ID (e.g., 0x8010), an OS version (e.g., 1803), an OS build (e.g., 17134.472), an OS type (e.g., Windows 10) and possibly other characteristics. Preboot application 240 can obtain the OS version, build and type from OS-specific UEFI variable 300 a. The OEM ID can be a constant value that server 101 has been configured to understand as representing requests for service operating systems.
Server 101 processes SLP request 400 to determine which service operating system should be sent to client 102. As shown, server 101 can maintain a number of service operating systems 410 a-410 n corresponding to the various main operating systems that may be installed on any client 102 that server 101 manages. In this example, it will be assumed that service operating system 410 a corresponds to the Windows 10 operating system that failed to boot on client 102. Accordingly, by evaluating the characteristics defined in the SLP vendor extension of SLP request 400, server 101 can determine that service operating system 410 a should be sent to client 102 and can then send service operating system 410 a in step 2. Preboot application 240 can store service operating system 410 a in an appropriate location in storage 201 a (e.g., in RAMDisk).
Finally, in step 3 shown in FIG. 4C, preboot application 240 can cause the UEFI platform to boot service operating system 410 a. As a result, service operating system 410 a will be executed on client 102 and can perform any appropriate diagnostics to identify and address any reason for the failure of main operating system 210. Although not shown, preboot application 240 and/or service operating system 410 a can also reset the FailedBootTimeStamp parameter in OS-specific UEFI variable 300 a so that, during a subsequent boot, preboot application 240 will not again attempt to retrieve and execute a service operating system.
The above-described process can also be implemented using an ACPI table rather than OS-specific UEFI variables. For example, agent 250 can be configured to create/update an ACPI table to include OS-specific entries that define the same type of information as the OS-specific UEFI variables. Therefore, for purposes of this description and the claims, the term “UEFI variable” should be construed as encompassing entries in an ACPI table. In embodiments where an ACPI table is employed, preboot application 240 can be configured to access the ACPI table during boot option recovery to determine which main operating system has failed and to obtain the characteristics of the failed main operating system to be included in the SLP request.
FIG. 5 provides a flowchart of an example method 500 for facilitating the identification and loading of an appropriate service operating system when a main operating system fails. Method 500 can be implemented on client 102.
Method 500 includes an act 501 of, in response to a first main operating system failing to boot on the client, updating a first UEFI variable that is specific to the first main operating system to indicate that the first main operating system failed to boot. For example, preboot application 240 can update the FailedBootTimeStamp parameter of OS-specific UEFI variable 300 a when operating system 210 fails to boot.
Method 500 includes an act 502 of, based on the first UEFI variable indicating that the first main operating system failed to boot, obtaining characteristics of the first main operating system from the first UEFI variable. For example, preboot application 240 can obtain an operating system type, version, and/or build from OS-specific UEFI variable 300 a.
Method 500 includes an act 503 of creating an SLP request that includes in a vendor extension the characteristics of the first main operating system that were obtained from the first UEFI variable. For example, preboot application 240 can create SLP request 400 and include characteristics of operating system 210 in a vendor extension.
Method 500 includes an act 504 of sending the SLP request to a server. For example, preboot application 240 can cause SLP request 400 to be sent to server 101.
Method 500 includes an act 505 of receiving, from the server, a service operating system corresponding to the characteristics of the first main operating system that were included in the vendor extension. For example, preboot application 240 can download service operating system 410 a from server 101.
Method 500 includes an act 506 of causing the client to boot the service operating system. For example, preboot application 240 can cause the UEFI environment to boot service operating system 410 a on client 102.
In summary, the techniques of the present invention provide a way to facilitate the identification and retrieval of a service operating system for a particular main operating system that has failed to boot. The present invention eliminates the need to store each service operating system on the client thereby freeing up storage that oftentimes is limited. The present invention also provides a dynamic way of identifying which main operating system has failed thereby reducing the amount of administrator intervention that may otherwise be required to address operating system failures. For these reasons, the present invention is particularly beneficial when clients have multiple main operating systems. However, the present invention can be implemented on clients that have a single main operating system.
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 is 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.
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 (20)

What is claimed:
1. A method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails, the method comprising:
in response to a first main operating system failing to boot on the client, updating a first Unified Extensible Firmware Interface (UEFI) variable that is specific to the first main operating system to indicate that the first main operating system failed to boot;
based on the first UEFI variable indicating that the first main operating system failed to boot, obtaining characteristics of the first main operating system from the first UEFI variable;
creating a service location protocol (SLP) request that includes in a vendor extension the characteristics of the first main operating system that were obtained from the first UEFI variable;
sending the SLP request to a server;
receiving, from the server, a service operating system corresponding to the characteristics of the first main operating system that were included in the vendor extension; and
causing the client to boot the service operating system.
2. The method of claim 1, wherein the first UEFI variable is updated by a UEFI preboot application.
3. The method of claim 1, further comprising:
in response to the first main operating system booting successfully, creating the first UEFI variable and storing the characteristics of the first main operating system in the first UEFI variable.
4. The method of claim 3, further comprising:
in response to the first main operating system booting successfully, configuring a UEFI platform on the client to perform boot option recovery when a main operating system fails to boot.
5. The method of claim 1, wherein the characteristics of the first main operating system comprise one or more of a type of the first main operating system, a version of the first main operating system or a build of the first main operating system.
6. The method of claim 1, wherein the first main operating system is one of a plurality of main operating systems installed on the client.
7. The method of claim 1, wherein the first UEFI variable is part of an advanced configuration and power interface (ACPI) table.
8. The method of claim 1, wherein updating the first UEFI variable to indicate that the first main operating system failed to boot comprises writing a timestamp that identifies when the failure to boot occurred.
9. The method of claim 1, further comprising:
receiving, by the server, the SLP request;
extracting the characteristics of the first main operating system from the vendor extension;
employing the characteristics of the first main operating system to identify the first service operating system from among a plurality of service operating systems; and
sending the first service operating system to the client.
10. A method for facilitating the identification and loading of an appropriate service operating system when a main operating system fails, the method comprising:
in response to a first main operating system booting successfully on a client, creating a first UEFI variable that defines characteristics of the first main operating system;
in response to the first main operating system failing to boot on the client, updating the first UEFI variable to indicate that the first main operating system failed to boot;
accessing the first UEFI variable during a boot process;
based on the first UEFI variable indicating that the first main operating system failed to boot, creating an SLP request that includes a vendor extension that defines the characteristics of the first main operating system that are defined in the first UEFI variable;
sending the SLP request to a server;
receiving, from the server, a first service operating system that corresponds to the characteristics of the first main operating system that were defined in the vendor extension; and
causing the first service operating system to be executed on the client.
11. The method of claim 10, further comprising:
in response to a second main operating system booting successfully on the client, creating a second UEFI variable that defines characteristics of the second main operating system.
12. The method of claim 11, wherein the first and second UEFI variables are part of an ACPI table.
13. The method of claim 11, further comprising:
in response to the second main operating system failing to boot on the client, updating the second UEFI variable to indicate that the second main operating system failed to boot;
accessing the first and second UEFI variables during a boot process;
based on the second UEFI variable indicating that the second main operating system failed to boot, creating a second SLP request that includes a vendor extension that defines the characteristics of the second main operating system that are defined in the second UEFI variable;
sending the second SLP request to the server;
receiving, from the server, a second service operating system that corresponds to the characteristics of the second main operating system that were defined in the vendor extension of the second SLP request; and
causing the second service operating system to be executed on the client.
14. The method of claim 10, wherein the characteristics of the first main operating system includes one or more of a type, version or build of the first main operating system.
15. The method of claim 10, further comprising:
after updating the first UEFI variable to indicate that the first main operating system failed to boot, causing the client to perform the boot process.
16. The method of claim 10, wherein an agent that executes on the first main operating system creates the first UEFI variable, and a UEFI preboot application updates the first UEFI variable to indicate that the first main operating system failed to boot.
17. One or more computer storage media storing computer executable instructions which when executed implement a method for identifying and loading an appropriate service operating system when a main operating system fails, the method comprising:
in response to a first main operating system failing to boot on a client, creating and sending an SLP request to a server, the SLP request including a vendor extension that defines characteristics of the first main operating system;
in response to receiving the SLP request at the server, accessing the characteristics of the first main operating system defined in the vendor extension;
employing the characteristics of the first main operating system to identify, from among a plurality of service operating systems available on the server, a first service operating system that matches the characteristics of the first main operating system;
sending the first service operating system to the client; and
in response to receiving the first service operating system, causing the first service operating system to be executed on the client.
18. The computer storage media of claim 17, wherein the method further comprises:
creating a first UEFI variable on the client that defines the characteristics of the first main operating system;
wherein the characteristics of the first main operating system defined in the vendor extension are obtained from the first UEFI variable.
19. The computer storage media of claim 18, wherein the method further comprises:
determining that the first main operating system has failed to boot by accessing the first UEFI variable.
20. The computer storage media of claim 19, wherein, in response to the first main operating system failing to boot, the first UEFI variable is updated to indicate that the failure occurred.
US16/267,268 2019-02-04 2019-02-04 Facilitating the identification of a service operating system when a main operating system fails Active 2039-07-05 US10795769B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/267,268 US10795769B2 (en) 2019-02-04 2019-02-04 Facilitating the identification of a service operating system when a main operating system fails

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US16/267,268 US10795769B2 (en) 2019-02-04 2019-02-04 Facilitating the identification of a service operating system when a main operating system fails

Publications (2)

Publication Number Publication Date
US20200250038A1 US20200250038A1 (en) 2020-08-06
US10795769B2 true US10795769B2 (en) 2020-10-06

Family

ID=71837575

Family Applications (1)

Application Number Title Priority Date Filing Date
US16/267,268 Active 2039-07-05 US10795769B2 (en) 2019-02-04 2019-02-04 Facilitating the identification of a service operating system when a main operating system fails

Country Status (1)

Country Link
US (1) US10795769B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4062278A4 (en) * 2019-11-22 2023-08-16 Hewlett-Packard Development Company, L.P. Data management
WO2021194501A1 (en) * 2020-03-27 2021-09-30 Hewlett-Packard Development Company, L.P. Alternate operating systems
US11429489B2 (en) * 2020-04-28 2022-08-30 Pelion Technology, Inc. Device recovery mechanism
US11915015B2 (en) * 2021-08-27 2024-02-27 Dell Products, L.P. Systems and methods for use of pre-boot resources by modern workspaces

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6378086B1 (en) * 1997-02-24 2002-04-23 International Business Machines Corporation Method and system for recovering a computer system from a loadsource located at a remote location
US20030074549A1 (en) * 2001-10-11 2003-04-17 International Business Machines Corporation Method and system for implementing a diagnostic or correciton boot image over a network connection
US6948099B1 (en) * 1999-07-30 2005-09-20 Intel Corporation Re-loading operating systems
US20060020848A1 (en) * 2002-05-03 2006-01-26 Marc Duncan Systems and methods for out-of-band booting of a computer
US20060145133A1 (en) * 2004-12-31 2006-07-06 Intel Corporation Recovery of computer systems
US7089449B1 (en) * 2000-11-06 2006-08-08 Micron Technology, Inc. Recovering a system that has experienced a fault
US7487343B1 (en) * 2005-03-04 2009-02-03 Netapp, Inc. Method and apparatus for boot image selection and recovery via a remote management module
US20090034543A1 (en) * 2007-07-30 2009-02-05 Thomas Fred C Operating system recovery across a network
US20120124419A1 (en) * 2010-11-17 2012-05-17 Matthew Jack R Networked recovery system
US20150149412A1 (en) * 2013-11-26 2015-05-28 Ncr Corporation Techniques for computer system recovery
US20160306688A1 (en) * 2015-04-15 2016-10-20 Dell Products, Lp System and Method for Cloud Remediation of a Client with a Non-Bootable Storage Medium
US20160364297A1 (en) * 2015-06-12 2016-12-15 Dell Products, Lp System and Method for Hosting Multiple Recovery Operating Systems in Memory
US9529602B1 (en) * 2015-07-22 2016-12-27 Dell Products, L.P. Systems and methods for internet recovery and service

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6378086B1 (en) * 1997-02-24 2002-04-23 International Business Machines Corporation Method and system for recovering a computer system from a loadsource located at a remote location
US6948099B1 (en) * 1999-07-30 2005-09-20 Intel Corporation Re-loading operating systems
US7089449B1 (en) * 2000-11-06 2006-08-08 Micron Technology, Inc. Recovering a system that has experienced a fault
US20030074549A1 (en) * 2001-10-11 2003-04-17 International Business Machines Corporation Method and system for implementing a diagnostic or correciton boot image over a network connection
US20060020848A1 (en) * 2002-05-03 2006-01-26 Marc Duncan Systems and methods for out-of-band booting of a computer
US20060145133A1 (en) * 2004-12-31 2006-07-06 Intel Corporation Recovery of computer systems
US7487343B1 (en) * 2005-03-04 2009-02-03 Netapp, Inc. Method and apparatus for boot image selection and recovery via a remote management module
US20090034543A1 (en) * 2007-07-30 2009-02-05 Thomas Fred C Operating system recovery across a network
US20120124419A1 (en) * 2010-11-17 2012-05-17 Matthew Jack R Networked recovery system
US20150149412A1 (en) * 2013-11-26 2015-05-28 Ncr Corporation Techniques for computer system recovery
US20160306688A1 (en) * 2015-04-15 2016-10-20 Dell Products, Lp System and Method for Cloud Remediation of a Client with a Non-Bootable Storage Medium
US20160364297A1 (en) * 2015-06-12 2016-12-15 Dell Products, Lp System and Method for Hosting Multiple Recovery Operating Systems in Memory
US9529602B1 (en) * 2015-07-22 2016-12-27 Dell Products, L.P. Systems and methods for internet recovery and service

Also Published As

Publication number Publication date
US20200250038A1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
US10795769B2 (en) Facilitating the identification of a service operating system when a main operating system fails
US10261800B2 (en) Intelligent boot device selection and recovery
US7421620B2 (en) Configuration proxy service for the extended firmware interface environment
US20090144720A1 (en) Cluster software upgrades
US10146657B2 (en) Initialization trace of a computing device
US10061651B2 (en) System and method for hosting multiple recovery operating systems in memory
US20060206702A1 (en) Operating system boot from external media
US11144328B2 (en) System method to update failover process by running basic input/output (BIOS) system boot code from non-volatile memory express device (NVME)
EP4100829A1 (en) Firmware update patch
JP2003099268A (en) Method and system for creating and employing operating system having selected functionality
US11886902B2 (en) Physical-to-virtual migration method and apparatus, and storage medium
US11762666B2 (en) Methods and apparatus for hypervisor boot up
US20200349009A1 (en) Information Handling System And Method To Restore System Firmware To A Selected Restore Point
US11294691B2 (en) Dynamic memory layouts for firmware updates based on OEM memory subsystem
US9792168B2 (en) System and method for cloud remediation of a client with a non-bootable storage medium
US11416614B2 (en) Statistical detection of firmware-level compromises
US11392391B2 (en) Selectively updating a bios image
US11789821B1 (en) Out-of-band method to change boot firmware configuration
US11921582B2 (en) Out of band method to change boot firmware configuration
US11928214B2 (en) Enabling SPI firmware updates at runtime
US20240152639A1 (en) Enabling persistence in a volatile secure workspace
US20240143780A1 (en) Supporting secure workspaces in heterogenous environments
US20240036896A1 (en) Generating installation images based upon dpu-specific capabilities
US11803445B2 (en) Boot failure protection on smartNICs and other computing devices
US20240020103A1 (en) Parallelizing data processing unit provisioning

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VIDYADHARA, SUMANTH;RAO, SUDHARSHANA MADHAVA;JOSHI, ANAND PRAKASH;SIGNING DATES FROM 20190111 TO 20190204;REEL/FRAME:048242/0666

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:CREDANT TECHNOLOGIES, INC.;DELL INTERNATIONAL L.L.C.;DELL MARKETING L.P.;AND OTHERS;REEL/FRAME:049452/0223

Effective date: 20190320

AS Assignment

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, NORTH CAROLINA

Free format text: SECURITY AGREEMENT;ASSIGNORS:DELL PRODUCTS L.P.;EMC CORPORATION;EMC IP HOLDING COMPANY LLC;AND OTHERS;REEL/FRAME:050405/0534

Effective date: 20190917

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT, TEXAS

Free format text: PATENT SECURITY AGREEMENT (NOTES);ASSIGNORS:DELL PRODUCTS L.P.;EMC CORPORATION;EMC IP HOLDING COMPANY LLC;AND OTHERS;REEL/FRAME:050724/0466

Effective date: 20191010

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:CREDANT TECHNOLOGIES INC.;DELL INTERNATIONAL L.L.C.;DELL MARKETING L.P.;AND OTHERS;REEL/FRAME:053546/0001

Effective date: 20200409

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: WYSE TECHNOLOGY L.L.C., CALIFORNIA

Free format text: RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058001/0001

Effective date: 20211101

Owner name: EMC IP HOLDING COMPANY LLC, TEXAS

Free format text: RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058001/0001

Effective date: 20211101

Owner name: EMC CORPORATION, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058001/0001

Effective date: 20211101

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058001/0001

Effective date: 20211101

AS Assignment

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:060753/0486

Effective date: 20220329

Owner name: EMC IP HOLDING COMPANY LLC, TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:060753/0486

Effective date: 20220329

Owner name: EMC CORPORATION, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:060753/0486

Effective date: 20220329

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:060753/0486

Effective date: 20220329

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4