JP6124994B2 - レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム - Google Patents

レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム Download PDF

Info

Publication number
JP6124994B2
JP6124994B2 JP2015507347A JP2015507347A JP6124994B2 JP 6124994 B2 JP6124994 B2 JP 6124994B2 JP 2015507347 A JP2015507347 A JP 2015507347A JP 2015507347 A JP2015507347 A JP 2015507347A JP 6124994 B2 JP6124994 B2 JP 6124994B2
Authority
JP
Japan
Prior art keywords
uefi
boot environment
legacy
context
environment
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
Application number
JP2015507347A
Other languages
English (en)
Other versions
JP2015518615A (ja
Inventor
タン、ウェンウェイ
ソーダールンド、アダム、リー
ウー、ソンチン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2015518615A publication Critical patent/JP2015518615A/ja
Application granted granted Critical
Publication of JP6124994B2 publication Critical patent/JP6124994B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/1438Restarting or rejuvenating
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピュータ・システムのファームウェアに関し、より詳細には、レガシーOS環境からUEFIブート前環境(pre-boot environment)への復元を行うための方法およびシステムに関する。
レガシーBIOS(基本入出力システム)は、一種のファームウェアであり、基本入出力システムとして、起動するときにハードウェアのブートおよび検出などの作業を担い、OSがハードウェアを制御している間は中間的役割を果たす。Windows(R) NT、Linux(R)から、これらのOSは、以前であればBIOSによって実行される必要があるハードウェア制御プログラムをOSに組み込んでおり、プログラムはOSで実行され、もはやBIOSの機能を呼び出す必要は全くない。ハードウェアの迅速な開発が原因で、レガシーBIOSは開発の重荷になった。
最近、最新の拡張可能ファームウェア・インターフェース(EFI:ExtensibleFirmware Interface)が開発された。統合拡張可能ファームウェア・インターフェース(UEFI:UnifiedExtensible Firmware Interface)が、EFI1.10に基づいて開発され、UEFIは、全く新しい種類のインターフェースを記載する規格である。そのようなインターフェースは、ブート前動作環境から一種のOSへの自動的なロードのためにOSによって使用され、それによって、起動手順を簡素化し、時間を節約する。
UEFIは、C言語式のパラメータ・スタック渡しの手法および動的リンクの方法を使用してシステムを構築し、BIOSよりも容易に実装され、耐障害性および誤り訂正の点でより優れており、システムの研究開発の時間を短縮する可能性がある。さらに、UEFIは、32ビット・モードまたは64ビット・モードで動作し、より高いアドレス指定能力が、BIOSと比べて優れた性能をもたらす可能性がある。さらに、UEFIアーキテクチャのドライバは、UEFIドライバに関する1組の仮想マシン命令であるEFIバイト・コードで記述され、命令は、UEFIによって駆動される動作環境で実行されるために解釈され、UEFIの十分な下位互換性を保証することができる。加えて、グラフィック・ドライバ機能がUEFIに組み込まれており、高解像度のカラー・グラフィック環境を提供することができる。環境に入った後、ユーザは、マウスでクリックすることによって構成を調整することができ、これは、Windows(R)システムのアプリケーション・ソフトウェアと同じぐらい簡単である。さらに、UEFIは、モジュール式の設計を採用しており、論理的に2つの部分、すなわち、ハードウェアの制御およびOSのソフトウェアの管理に分けられ、ハードウェアの制御は、すべてのUEFIのバージョンに共通であり、OSのソフトウェアの管理は、実際は、メインボードの製造業者が様々な豊富な機能を実現することができるプログラム可能なオープン・インターフェースである。例えば、当業者によく知られている様々なバックアップ機能および診断機能が、UEFIを通じて実現され得る。したがって、多くのコンピュータ製造業者が、現在、UEFIファームウェアを使用し始めており、UEFIファームウェアをサポートするマシンの販売が支配的になることが期待されている。
UEFIファームウェアの観点から見て、OSは、2つの種類に分けられる可能性があり、つまり、第1の種類のOSは、Windows(R) Server 2008 R2などのUEFIファームウェアをサポートし、利用することができるOSであり、第2の種類のOSは、UEFIファームウェアをサポートすることができないOS、すなわち、レガシーOSである。UEFIは、UEFIファームウェアがWindows(R) XP 32ビット版、Windows(R) Server 2003 for x86などのレガシーOSをロードし、ブートすることを可能にする互換性サポート・モジュールを提供することができる。
UEFIファームウェアの実行環境は、UEFIブート前環境であり、この環境は、UEFIファームウェアのコードを実行し、OSのためのブート環境のシステム・ブート段階を準備する。UEFIファームウェアのシステム・ロード・モジュールは、UEFIをサポートし、利用するOSをロードするとき、何らかの問題が原因でOSが正常にロードされ得ない場合、UEFIブート前環境に直接戻ることができる。しかし、UEFIファームウェアのシステム・ロード・モジュールがレガシーOSをロードし、ブートするときは、レガシーOSをロードし、ブートすることを可能にするために、互換性サポート・モジュールがシステム・ロード・モジュールで必要とされるか、または互換性サポート・モジュールがシステム・ロード・モジュールなしに直接利用される。しかし、従来技術においては、UEFIがレガシーOSのブートを試みるために互換性サポート・モジュールを開始すると、たとえレガシーOSのブートの試みが失敗する場合であってもUEFIブート前環境に戻る方法はない。したがって、エンジニアは、問題の診断を行うことができない。
レガシーOS環境から統合拡張可能ファームウェア・インターフェース(UEFI)ブート前環境への復元を行うための方法およびシステムを提供する。
本発明の一態様によれば、レガシーOS環境から統合拡張可能ファームウェア・インターフェース(UEFI)ブート前環境への復元を行うための方法が提供される。方法は、UEFIブート前環境で、残される必要があるUEFIブート前環境のコンテキストを記憶するステップであって、残される必要があるUEFIブート前環境のコンテキストが、CPUの実行コンテキストを含む、記憶するステップと、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じてCPUの実行コンテキストの第1の部分を復元するステップと、UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、システム管理モードでCPUの実行コンテキストの第2の部分を復元するステップと、CPUのシステム管理モードから抜け、それによって、UEFIブート前環境に戻るステップとを含む。
本発明の別の態様によれば、レガシーOS環境から統合拡張可能ファームウェア・インターフェース(UEFI)ブート前環境への復元を行うためのシステムが提供される。システムは、UEFIブート前環境で、残される必要があるUEFIブート前環境の、CPUの実行コンテキストを含むコンテキストを記憶するように構成された記憶手段と、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じてCPUの実行コンテキストの第1の部分を復元するように構成された第1の復元手段と、UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、システム管理モードでCPUの実行コンテキストの第2の部分を復元するように構成された第2の復元手段と、CPUのシステム管理モードから抜け、それによって、UEFIブート前環境に戻るように構成された退出手段とを含む。
添付の図面の本開示の一部の実施形態のより詳細な記載によって、本開示の上述のおよびその他の目的、特徴、および利点がより明らかになり、概して、同じ参照は、本開示の実施形態の同じ構成要素を指す。
本発明の実施形態を実装するために適用可能な例示的なコンピュータ・システム100を示す図である。 本発明によるUEFIブート前環境のブロック図である。 本発明の一実施形態によるレガシーOS環境からUEFIブート前環境への復元を行うための方法のステップを示す図である。 UEFIファームウェアによって定義されたメモリ領域の種類を示す図である。 レガシーOS環境からUEFIブート前環境への復元を行うためのシステムの構造的なブロック図である。
一部の好ましい実施形態が、本開示の好ましい実施形態が示された添付の図面を参照してより詳細に説明される。しかし、本開示は、様々な方法で実装される可能性がありしたがって、本明細書において開示された実施形態に限定されると見なされるべきでない。それどころか、それらの実施形態は、本開示を十分かつ完全に理解することと、当業者に本開示の範囲を完全に伝えることとのために提供される。
図1は、本発明の実施形態を実装するために適用可能な例示的なコンピュータ・システム100を示す。図1に示されるように、コンピュータ・システム100は、CPU(中央処理ユニット)101、RAM(ランダム・アクセス・メモリ)102、ROM(読み出し専用メモリ)103、システム・バス104、ハード・ドライブ・コントローラ105、キーボード・コントローラ106、シリアル・インターフェース・コントローラ107、パラレル・インターフェース・コントローラ108、ディスプレイ・コントローラ109、ハード・ドライブ110、キーボード111、シリアル周辺機器112、パラレル周辺機器113、およびディスプレイ114を含み得る。上述のデバイスの中で、CPU101、RAM102、ROM103、ハード・ドライブ・コントローラ105、キーボード・コントローラ106、シリアル・インターフェース・コントローラ107、パラレル・インターフェース・コントローラ108、およびディスプレイ・コントローラ109は、システム・バス104に結合される。ハード・ドライブ110は、ハード・ドライブ・コントローラ105に結合される。キーボード111は、キーボード・コントローラ106に結合される。シリアル周辺機器112は、シリアル・インターフェース・コントローラ107に結合される。パラレル周辺機器113は、パラレル・インターフェース・コントローラ108に結合される。そして、ディスプレイ114は、ディスプレイ・コントローラ109に結合される。図1に示される構造は、本発明に対するいかなる限定のためでもなく例示のみを目的としていることを理解されたい。場合によっては、いくつかのデバイスが、特定の状況に基づいてコンピュータ・システム100に追加されるか、またはコンピュータ・システム100から削除される可能性がある。
当業者に理解されるであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、すべてハードウェアの実施形態、すべてソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態の形態をとる可能性があり、これらのすべてが本明細書において概して「回路」、「モジュール」、もしくは「システム」と呼ばれることがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを具現化1つまたは複数のコンピュータ可読媒体で具現化されたコンピュータ・プログラム製品の形態をとる可能性がある。
1つまたは複数のコンピュータ可読媒体の任意の組み合わせが、利用される可能性がある。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体である可能性がある。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光、電磁、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいはこれらの任意の好適な組み合わせである可能性があるが、これらに限定されない。コンピュータ可読ストレージ媒体のより詳細な例(非網羅的なリスト)は、以下、すなわち、1つもしくは複数の配線を有する電気的な接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせを含むであろう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含むあるいは記憶することができる任意の有形の媒体である可能性がある。
コンピュータ可読信号媒体は、例えば、ベースバンドで、または搬送波の一部としてコンピュータ可読プログラム・コードを具現化する伝播されるデータ信号を含み得る。そのような伝播される信号は、電磁的、光学的、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない様々な形態のうちの任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを伝達、伝播、あるいは搬送することができる任意のコンピュータ可読媒体である可能性がある。
コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない任意の適切な媒体を用いて送信される可能性がある。
本発明の態様の操作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの通常の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組み合わせで記述され得る。プログラム・コードは、すべてユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的にかつ遠隔のコンピュータ上で部分的に、またはすべて遠隔のコンピュータもしくはサーバ上で実行され得る。最後の場合では、遠隔のコンピュータが、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得るか、または外部コンピュータへの接続が(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)行われ得る。
本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して以下で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、流れ図もしくはブロック図またはその両方の1つのブロックあるいは複数のブロックで規定された機能/動作を実施するための手段をもたらすように、多目的コンピュータ、専用コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサに与えられてマシンを作り出すものであってよい。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、流れ図もしくはブロック図またはその両方の1つのブロックあるいは複数のブロックで規定された機能/動作を実施する命令の手段を含む製品をもたらすようにコンピュータ可読媒体に記憶され、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスを特定の方法で機能させるように指示するものであってよい。
コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能な装置で実行される命令が流れ図もしくはブロック図またはその両方の1つのブロックあるいは複数のブロックで規定された機能/動作を実施するためのプロセスを提供するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされ、一連の操作のステップをそのコンピュータ、その他のプログラム可能な装置、またはその他のデバイス上で実行させてコンピュータで実施されるプロセスを生成するものであってよい。
ここで図2を参照すると、本発明によるUEFIブート前環境のブロック図、すなわち、UEFIファームウェアのブロック図が示されている。説明において、UEFIブート前環境およびUEFIファームウェアは、同義語であり、区別されない。UEFIブート前環境は、主に、UEFI実行環境モジュールを含み、さらに、このモジュールは、セキュリティ・モジュール、初期化モジュール、ドライバ実行環境モジュール、ブート・ドライバ選択モジュール、およびシステム・ロード・モジュールまたは互換性サポート・モジュールを含む。UEFIのシステム・ロード・モジュールが、UEFIをサポートし、利用するOSをロードするときは、そのようなOSがUEFIの仕様によって定義されたいくつかの標準的なインターフェースをサポートするので、システム・ロード・モジュールは、何らかの問題が原因でOSが正常にロードされ得ない場合、UEFIブート前環境に直接戻ることができる。しかし、UEFIの互換性サポート・モジュールがレガシーOSをロードし、ブートするときは、UEFIがレガシーOSのブートを試みるために互換性サポート・モジュールを開始すると、たとえレガシーOSのブートの試みが失敗する場合であってもUEFIブート前環境に戻る方法はない。したがって、エンジニアは、問題の診断を行うことができない。
UEFIファームウェアとOSとの両方は、CPUのハードウェアで実行されるソフトウェアである。UEFIファームウェアは、OSの前に実行されるコードのセグメントであり、OSが起動する前のハードウェアの初期化と、OSが利用可能なサービス・インターフェースの準備とを担う。CPUシステムは、リアル・モード、プロテクト・モード、仮想8086モード、およびシステム管理モードを含む様々なモードを有し、様々なモードの間で切り替えられる可能性がある。概して、CPUは、電源を投入された後、リアル・モードで動作し、レジスタを使用してメモリ内の命令の位置をCPUに知らせ、次のプログラムを実行するときに必要とされる主な内容を示すために、DS、ES、FS、GS、SS、およびその他のレジスタを使用してメモリ内の異なる目的を持ったデータ・セグメントの位置を示す。プロテクト・モードは、リアル・モードと同じであり、プロテクト・モードでプログラムを実行することの核心は、やはり、「CPUが(1つまたは複数の)命令を実行して関連するデータを操作する」ことである。したがって、リアル・モードの様々なコード・セグメント、データ・セグメント、スタック・セグメント、割り込みサービス・プログラムがやはり存在し、それらの機能および効果は変更されないままである。UEFIファームウェアは、CPUが電源を投入された後、リアル・モードで動作し、UEFIは、CPUのプロテクト・モードで実行されるコードおよびCPUのシステム管理モードで実行されるコードも含む。UEFIが互換性サポート・モジュールを開始してレガシーOSのブートを試みるとき、UEFIのコードは、CPUのプロテクト・モードで実行されている。ブートの試みが失敗し、UEFIブート前環境に戻る必要がある場合、必要とされることは、最初にCPUのプロテクト・モードに戻ることである。システム管理モードは、電源管理、システム・ハードウェア制御などのシステム・レベルのいくつかの機能を提供することができる特別なプロセッサ・モードである。システム管理モードの主な恩恵は、システム管理モードが、通常のCPU動作環境と完全に異なり、独立しているプロセッサ環境を提供することができることである。そのような環境は、OSまたはアプリケーション・ソフトウェアによって認識されにくい。CPUは、システム管理モードを開始するとき、CPUのレジスタの値などのCPUの実行コンテキスト情報の一部をシステム管理モードのメモリ(SMM RAM)のチャンク、すなわち、いわゆる、CPUの状態保存領域(Save State Region)に保存する。システム管理モードから抜けるとき、プロセッサは、プロセッサの状態保存領域のCPUの実行コンテキストの一部を利用して、システム管理モードを開始する前のプロセッサの状態を復元する。UEFIファームウェアは、システム管理モードを抜けるときにシステム管理モードを開始する前のプロセッサの状態を復元するような技術的な特徴を利用して、UEFI実行前環境に戻ることができる。
UEFIをサポートするOSに関しては、システム・ロード・モジュールは、UEFIによって直接呼び出されるので、失敗する場合、UEFI実行前環境に直接戻る。OSは、正常にロードされ終わるまでUEFIブート前環境を壊さない。しかし、OS正常に起動した後は、UEFIブート前環境に直接戻る方法はない。
互換性サポート・モジュールは、レガシーOSをブートすることができ、これは、互換性サポート・モジュールがこれまでのBIOSに元々存在していたレガシーOSまたはレガシー・オプションROM(Option ROM)によって必要とされるいくつかのインターフェースの実装をUEFIファームウェアで提供するからであり、オプションROMは、様々なボードおよびカードを制御するファームウェアの一種であり、ボードおよびカードに置かれるか、またはUEFIファームウェアもしくはBIOSファームウェアに含まれる可能性がある。しかし、UEFIファームウェアが互換性サポート・モジュールを開始してレガシーOSのブートを実行すると、UEFIブート前環境のコンテキストは壊される。したがって、たとえレガシーOSをブートする試みが失敗したとしても、UEFIブート前環境のコンテキストは壊されてしまっているので、UEFIブート前環境に戻る方法はない。
したがって、UEFIブート前環境にもとるために、1つの重要なことは、UEFIブート前環境の完全性を保証すること、つまり、UEFIブート前環境のコンテキストの必要な情報を保存することである。もう1つは、CPUが、システム管理モードから抜けるときにシステム管理モードを開始する前のプロセッサの状態を復元するという上述の特徴を利用することである。
したがって、本発明は、レガシーOS環境からUEFIブート前環境への復元を行うための方法およびシステムを提供する。マルチOSをサポートする環境内で、そのような方法およびシステムは、レガシーOSのブートの失敗の診断およびその後のUEFI OSのブートの試みをサポートするために使用され得る。
図3は、発明の一実施形態によるレガシーOS環境からUEFIブート前環境への復元を行うための方法のステップを示す。図3によれば、方法は、
ステップS301において、UEFIブート前環境で、残される必要があるUEFIブート前環境の、CPUの実行コンテキストを含むコンテキストを記憶することと、
ステップS302において、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じてCPUの実行コンテキストの第1の部分を復元することと、
ステップS303において、UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、システム管理モードでCPUの実行コンテキストの第2の部分を復元することと、
ステップS304において、CPUのシステム管理モードから抜け、それによって、UEFIブート前環境に戻ることとを含む。
残される必要があるUEFIブート前環境のコンテキストは、CPUの実行コンテキストを含む。特に、CPUの実行コンテキストは、2つの部分に分けられる可能性があり、第1の部分は、グローバル記述子テーブル(GDT:Global Descriptor Table)、割り込み記述子テーブル(IDT:InterruptDescriptor Table)、制御レジスタ、およびセグメント・レジスタを含み、第2の部分は、フラグ・レジスタ、命令ポインタ・レジスタ、汎用レジスタ、システム管理ベース・レジスタを含む。CPUの実行コンテキストの第2の部分は、システム管理モードで復元されなければならないが、CPUは、CPUの実行コンテキストの第1の部分が復元された後にのみシステム管理モードを開始することができるので、そのCPUの実行コンテキストを利用して、システム管理モードを抜けるときにシステム管理モードを開始する前のプロセッサの状態を復元し、それによって、UEFIブート前環境を復元することができる。
CPUのレジスタは、ソフトウェアがCPUのハードウェアと通信するソフトウェア−ハードウェア・インターフェースであり、保存され、復元される必要があるCPU(64ビットCPUを例にとる)のレジスタの値は、フラグ・レジスタ(RFLAGSなど)、命令ポインタ・レジスタ(RIPなど)、汎用レジスタ(RDI、RSI、RBP、RSP、RBX、RDX、RCX、RAX、R8〜R15など)、システム管理ベース・レジスタ(SMBASE)、制御レジスタ(CR0、CR3など)、セグメント・レジスタ(GS、FS、DS、SS、CS、ESなど)を含む。CPUの状態保存領域を修正することによって復元され得るレジスタは、フラグ・レジスタ、命令ポインタ・レジスタ、汎用レジスタ、システム管理ベース・レジスタを含む。セグメント・レジスタは、MOVまたはPOP命令によって復元される可能性があり、制御レジスタは、MOV命令によって復元される可能性がある。グローバル記述子テーブルは、メモリ領域に存在し、グローバルなデータ構造(セグメント記述子など)を記憶する。GDTRレジスタは、グローバル記述子テーブルが記憶されるメモリ領域を指し、グローバル記述子テーブルのアドレスは、LGDT/SGDT命令によってロードまたは保存される可能性があり、割り込み記述子テーブルは、メモリ領域に存在し、割り込み記述子を記憶する。IDTRレジスタは、グローバル記述子テーブルが記憶されるメモリ領域を指し、割り込み記述子テーブルのアドレスは、LIDT/SIDT命令によってロードまたは保存される可能性がある。ここで、命令ポインタ・レジスタは、現在実行されているコードのメモリ・アドレスを指すために使用される。
上述の方法は、CPUのシステム管理モードから抜け、それによって、元の実行環境、すなわち、UEFIブート前環境に戻ることができるが、この環境は、必ずしも元のUEFIブート前環境であるとは限らず、このことは、主に、元のUEFIブート前環境に戻るために使用されるコンテキスト情報の別の部分が壊されたかどうかが分からないためである。したがって、残される必要があるUEFIブート前環境のコンテキストは、UEFIのコードおよびデータが存在するメモリ領域のアドレスとそのメモリ領域の内容とをさらに含み、その理由は、そのアドレスおよび内容が、UEFIが元々動作する環境であり、これらの情報が、UEFIが元々動作する環境にシステムが直接戻ることを可能にし得るためである。UEFIの仕様によって定義されたUEFIブート・サービス・ルーチンは、UEFIファームウェアの実装で与えられなければならず、その実装のGetMemorymap()メソッドが、メモリ領域テーブル(メモリ・マップ)を取得するために使用され得る。メソッドは、メモリ記述子を含む配列を返し、メモリ記述子のそれぞれは、対応するメモリ領域の種類、開始アドレス、サイズ、および属性を示す。残される必要があるメモリ領域のアドレスは、メモリ記述子の開始アドレスおよびサイズによって決定される可能性があり、それによって、そのメモリ領域の内容を取得する。
図4は、UEFIファームウェアによって定義されたメモリ領域の種類を示し、図4の上半分は、UEFIブート前環境の残される必要があるメモリ領域の種類である。図で、メモリの種類の記述子は、以下の通りである。
EfiReservedMemoryType−予約されたメモリの種類。この種類のメモリ領域はUEFIファームウェアおよびOSによって保護される。
EfiLoaderCode、EfiLoaderData−UEFIローダのコードおよびデータを記憶するためのメモリ領域の種類。
EfiBootServicesCode、EfiBootServicesData−ブート・サービス・ドライバ・プログラムのコードおよびデータを記憶するためのメモリ領域の種類。
EfiRuntimeServicesCode、EfiRuntimeServicesData−ランタイム・サービス・ドライバ・プログラムのコードおよびデータを記憶するためのメモリ領域の種類。
EfiConventionalMemory−使用可能な通常のメモリ領域の種類。
EfiUnusableMemory−エラーがあるために使用することができないメモリ領域の種類。
EfiACPIReclaimMemory−高度設定および電力インターフェース(advanced configuration and power interface)テーブル(ACPIテーブル)を記憶するためのメモリ領域の種類。
EfiACPIMemoryNVS−ファームウェアによる仕様のために予約されたメモリ領域の種類。
fiMemoryMappedIO−メモリ・マップド入出力を確立するためのメモリ領域の種類。
fiMemoryMappedIOPortSpace−メモリ・マップド入出力ポートのためのメモリ領域の種類。
EfiPalCode−プロセッサ抽象化レイヤのコードを記憶するためのメモリの種類。
一実施形態において、システムが元のUEFI実行環境に直接戻ることを可能にするために、図3に示された方法は、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元することをさらに含む。しかし、この復元方法は、メモリ領域がOSによって同時にアクセスされており、したがって、UEFIブート前環境のコンテキストの完全性が損なわれる危険性をはらむ。さらなる実施形態では、方法は、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力(MMIO)を終了させることをさらに含む。これは、UEFIブート前環境のコンテキストの完全性が損なわれる危険性を減らすために、ダイレクト・メモリ・アクセス・デバイス(DMA)によるメモリへのアクセスが復元された領域を壊すことを防止することができる。終了させるステップは、PCIデバイスの設定空間のベース・アドレス・レジスタを消去することによって行われる可能性がある。
別の実施形態において、システムが元のUEFI実行環境に直接戻ることを可能にするために、図3に示された方法は、CPUがシステム管理モードを開始することに応じて、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元することをさらに含む。さらなる実施形態では、方法は、CPUがシステム管理モードを開始することに応じて、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力(MMIO)を終了させることをさらに含む。これは、ダイレクト・メモリ・アクセス・デバイス(DMA)によるメモリへのアクセスが復元された領域を壊すことを防止することができる。終了させるステップは、PCIデバイスの設定空間のベース・アドレス・レジスタを消去することによって行われる可能性がある。
残される必要があるUEFIブート前環境のコンテキストは、そのメモリ領域に記憶されたデータがUEFIブート前環境およびレガシーOS環境で壊されることにならない限り、任意の適切なメモリ領域に保存され得る。単純な実施形態においては、外部ストレージ(一般的には、USBストレージ媒体、光ディスク、取り外し可能なハード・ディスクまたはフロッピー(R)・ディスクなどのストレージ媒体)が、残される必要があるUEFIブート前環境のコンテキストを記憶するために使用される可能性がある。これらの方法によって記憶される内容は、プログラムによって制御される可能性があり、UEFIブート前環境およびレガシーOS環境によって壊されない。しかし、復元のために必要とされる時間は、比較的長く、復元のプロセスは、比較的複雑であり、例えば、デバイスを駆動することができるコードは、復元中に実行される必要があり、外部ストレージ・デバイスに記憶されたコンテキストの内容は、(隠しパーティションに置かれるなど)特別な保護メカニズムが存在しない場合、壊され得る可能性がある。
別の実施形態においては、UEFIの予約されたメモリが、残される必要があるUEFIブート前環境のコンテキストを記憶するために使用される可能性がある。そのようなEFIの予約されたメモリのメモリ領域の完全性は、UEFIブート前環境とレガシーOS環境との両方で保証され得る。残される必要があるUEFIブート前環境のコンテキストは、UEFIがレガシーOSのブートの呼び出しを実行するために互換性サポート・モジュールを開始する前である限り、UEFIブート前環境を開始した後の任意の時間に保存され得る。好ましい実施形態においては、UEFIシステム・サービスが、残される必要がある上記UEFIブート前環境のコンテキストが割り当てられた予約されたメモリに保存されるように、十分な予約されたメモリを割り当てるために最初に呼び出される必要がある。
一実施形態において、方法は、レガシーOSを再び呼び出し、UEFIブート前環境に再び戻り、それによって、悪循環に陥ることを避けるために、命令ポインタ・レジスタがレガシーOSのブートを行う呼び出し命令の次の命令を指すように、CPUがシステム管理モードを開始することに応じて、保存された命令ポインタ・レジスタを修正することをさらに含む。
ステップS302において、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じてCPUの実行コンテキストの第1の部分を復元するが、本明細書では、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定する方法についてのいくつかの実施形態が提供される。
一実施形態においては、互換性サポート・モジュールがレガシーOSのローダを開始するとき、ブートの失敗に応じて、レガシーOSのローダは、通常、(INT18などの)ソフトウェア割り込みを呼び出してUEFIファームウェアに知らせる。UEFIファームウェアの観点からすれば、レガシーOSのローダからソフトウェア割り込みを受け取ることに応じて、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定され得る。失敗と判定されると、UEFIブート前環境に関連するCPUにシステム管理モードを開始させる方法は、割り込みハンドラ機能を利用して、CPUの実行コンテキストの第1の部分またはUEFIのコードおよびデータが存在するメモリ領域のアドレスあるいはその両方と、そのメモリ領域の内容とを復元する可能性がある。
別の実施形態においては、ウォッチドッグ・クロックが、ブート期間中のレガシーOSのシステム・ハング状態を検出するためにUEFIファームウェアに追加される可能性がある。ウォッチドッグ・クロックは、指定された時間に事前に設定され、ウォッチドッグ・クロックによって事前に設定された指定された時間以内にレガシーOSのブートが成功であるという通知をUEFIブート前環境が受信しなかった場合、ハードウェア割り込みをトリガし、ハードウェア割り込みのトリガによって、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定される。反対に、UEFIブート前環境がレガシーOSを正常にロードした場合、UEFIブート前環境は、ウォッチドッグ・クロックによって事前に設定された指定された時間以内にレガシーOSが正常にブートされたという通知を受信し、この時点で、UEFIファームウェアが、ウォッチドッグ・クロックを停止するか、またはウォッチドッグ・クロックを無限の期間に事前設定する可能性がある。特定の実施形態においては、CPUの実行コンテキストの第1の部分またはUEFIのコードおよびデータが存在するメモリ領域のアドレスあるいはその両方と、そのメモリ領域の内容とを復元するために割り込みハンドラ機能が使用される可能性がある。
さらに別の実施形態においては、マシン検査例外(Machine-CheckException)メカニズムが使用される可能性がある。マシン検査例外は、ハードウェア・エラーを検出し、報告するためにCPUによって提供されるメカニズムである。マシン検査例外は、PCシステムにおいて最も優先度の高い例外であり、いかなるその他の割り込み/例外によっても中断され得ない。マシン検査例外では、例えば、X86アーキテクチャを有するCPUについては、発生したエラーの状態が、IA32_MCi_STATUSレジスタによって報告される可能性があり、このレジスタの2ビットが、現在のCPUの実行コンテキストが壊されたかどうかを検査するために使用される可能性があり、すなわち、Valid(ビット63)=1かつPCC(ビット57)=0であり、それは、コンテキストが壊されていないことを表す。CPUの実行コンテキストが壊されていない場合、CPUの実行コンテキストの第1の部分またはUEFIのコードおよびデータが存在するメモリ領域のアドレスあるいはその両方と、そのメモリ領域の内容とが、マシン検査例外のハンドラ機能で復元され得る。さらなる実施形態においては、CPUの実行コンテキストが壊されたかどうかが、例外ハンドラ機能で最初に判定される必要がある。CPUの実行コンテキストが壊されていない場合、CPUの実行コンテキストの第1の部分またはUEFIのコードおよびデータが存在するメモリ領域のアドレスあるいはその両方と、そのメモリ領域の内容とが、エラーが訂正された後に復元される可能性があり、CPUの実行コンテキストが壊された場合、唯一できることはシステムをリブートすることである。
CPUの実行コンテキストの第1の部分を復元することは、グローバル記述子テーブル(GDT)、割り込み記述子テーブル(IDT)、制御レジスタ、およびセグメント・レジスタを復元することを含み、以下の擬似コードが使用され得る。
MemoryCopy(ORIGINAL_GDT_ADDRESS,SAVED_GDT_ADDRESS,sizeof(GDT))//グローバル記述子テーブルを復元する
LGDT ORIGINAL_GDT_ADDRESS
MemoryCopy(ORIGINAL_IDT_ADDRESS,SAVED_IDT_ADDRESS,sizeof(IDT))//割り込み記述子テーブルを復元する
LIDT ORIGINAL_IDT_ADDRESS
MOV CONTROL_REGISTER,SAVED_CR_VALUE//制御レジスタを復元する
FAR JMP ADDRESS_OF_NEXT_INSTRUCTION//次の命令にfarジャンプ(far jump)し、実行フローを変更し、プロセッサをシリアライズする
MOV SEGMENT_REGISTER,//セグメント・レジスタを復元する
SAVED_SEGMENT_REGISTER_VALUE
UEFIのコードおよびデータが存在するメモリ領域のアドレスとそのメモリ領域の内容とを復元するために、残される必要があるUEFIブート前環境のコンテキストは、UEFIのコードおよびデータが存在するメモリ領域の内容をUEFIのコードおよびデータが存在するメモリ領域のアドレスにコピーするために利用され得る。予約されたメモリが残される必要があるUEFIブート前環境のコンテキストを記憶するために使用されるとき、それは、メモリ間コピーの方法である。
ステップS303において、UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、システム管理モードでCPUの実行コンテキストの第2の部分を復元する。CPUの実行コンテキストの第2の部分を復元することは、フラグ・レジスタ、命令ポインタ・レジスタ、汎用レジスタ、システム管理ベース・レジスタを復元することを含み、CPUの実行コンテキストの第1の部分を復元するために使用された擬似コードと同様の擬似コードが使用され得る。UEFIブート前環境に関連するCPUにシステム管理モードを開始させることは、ハードウェア・トリガ方法を使用する可能性があり、またはソフトウェア・システム管理割り込み(ソフトウェアSMI:software System Management Interrupt)をトリガする方法を使用する可能性がある。UEFIブート前環境に関連するCPUにシステム管理モードを開始させる前に、CPUがシステム管理モードを開始することができるように、CPUが最初に保護モードに切り替えられるべきであり、次いで、ソフトウェア・システム管理割り込み(ソフトウェアSMI)がトリガされる。
ステップS304において、CPUのシステム管理モードを抜け、それによって、UEFIブート前環境に戻り、CPUのシステム管理モードを抜けることは、次のUEFIのブート・オプションを試すか、またはUEFIシステム診断を実行することが可能であるように、CPUによってRSM命令を実行し、それによって、最初に保存されたUEFIブート前実行環境に戻ることによって実現され得る。さらに、システムのコントローラがレガシー・システムのブートを試みる間にUEFIによってすべて切断されるので、UEFIブート前環境が復元された後、UEFIによって制御されるコントローラのドライバは、コントローラに対するUEFIの制御が復元され得るように、UEFIブート前環境に戻ることに応じて再実行させられる。
同じ発明の概念の下で、本発明は、レガシーOS環境からUEFIブート前環境への復元を行うためのシステムも開示し、図5は、レガシーOS環境からUEFIブート前環境への復元を行うためのシステムの構造的なブロック図を示す。図5によれば、システムは、UEFIブート前環境で、残される必要があるUEFIブート前環境の、CPUの実行コンテキストを含むコンテキストを記憶するように構成された記憶手段501と、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じてCPUの実行コンテキストの第1の部分を復元するように構成された第1の復元手段502と、UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、システム管理モードでCPUの実行コンテキストの第2の部分を復元するように構成された第2の復元手段503と、CPUのシステム管理モードから抜け、それによって、UEFIブート前環境に戻るように構成された退出手段504とを含む。
一実施形態において、残される必要があるUEFIブート前環境のコンテキストは、UEFIのコードおよびデータが存在するメモリ領域のアドレスとそのメモリ領域の内容とをさらに含む。好ましくは、記憶手段は、UEFIの予約されたメモリを使用して、残される必要があるUEFIブート前環境のコンテキストを記憶する。
一実施形態において、第1の復元手段は、レガシーOSのローダからソフトウェア割り込みを受け取ることに応じてUEFIブート前環境がレガシーOSをロードすることに失敗すると判定するように構成された第1の判定手段と、ウォッチドッグ・クロックによって事前に設定された指定された時間以内にレガシーOSのブートが成功であるという通知をUEFIブート前環境が受信しなかった場合、ハードウェア割り込みをトリガするウォッチドッグ・クロックをUEFIファームウェアに追加し、ハードウェア割り込みのトリガによって、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定するように構成された第2の判定手段と、マシン検査例外メカニズムを利用することによってUEFIブート前環境がレガシーOSをロードすることに失敗すると判定するように構成された第3の判定手段とのうちの1つを使用することによってUEFIブート前環境がレガシーOSをロードすることに失敗すると判定する。
一実施形態において、第1の復元手段は、UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元するようにさらに構成されている。好ましくは、第1の復元手段は、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力を終了させるようにさらに構成されている。
別の実施形態において、第2の復元手段は、CPUがシステム管理モードを開始することに応じて、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元するようにさらに構成されている。好ましくは、第2の復元手段は、残される必要があるUEFIブート前環境のコンテキスト内のUEFIのコードおよびデータが存在するメモリ領域の内容を、UEFIのコードおよびデータが存在するメモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力を終了させるようにさらに構成されている。好ましくは、第2の復元手段は、命令ポインタ・レジスタがレガシーOSのブートを行う呼び出し命令の次の命令を指すように、CPUがシステム管理モードを開始することに応じて、保存された命令ポインタ・レジスタを修正するようにさらに構成されている。
一実施形態において、退出手段は、UEFIブート前環境に戻ることに応じて、UEFIによって制御されるコントローラのドライバが再実行されるようにするようにさらに構成されている。
図面の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品のあり得る実装のアーキテクチャ、機能、および操作を示す。これに関連して、流れ図またはブロック図の各ブロックは、(1つまたは複数の)規定された論理的な機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表す可能性がある。一部の代替的な実装においては、ブロックで示された機能が、図面に示された順序とは異なる順序で行われる可能性があることにも留意されたい。例えば、関連する機能に応じて、連続で示された2つのブロックが実際には実質的に同時に実行される可能性があり、またはそれらのブロックが逆順に実行されることもあり得る。ブロック図または流れ図あるいはその両方の各ブロックと、ブロック図または流れ図あるいはその両方のブロックの組み合わせとは、規定された機能もしくは動作を実行する専用のハードウェアに基づくシステム、または専用のハードウェアとコンピュータ命令との組み合わせによって実装され得ることも認められるであろう。
本発明の様々な実施形態の説明は、例示を目的として示されたが、網羅的であるように、または開示された実施形態に限定されるように意図されていない。多くの変更および改変が、説明された実施形態の範囲および精神から逸脱することなく当業者に明らかになるであろう。本明細書において使用された用語は、実施形態の原理、実用的な応用、もしくは市場に見られるテクノロジーに勝る技術的な改善を最もよく説明するか、または当業者が本明細書で開示された実施形態を理解することを可能にするように選択された。

Claims (21)

  1. レガシーOS環境から統合拡張可能ファームウェア・インターフェース(UEFI)ブート前環境への復元を行うための方法であって、
    前記UEFIブート前環境で、残される必要がある前記UEFIブート前環境の、CPUの実行コンテキストを含むコンテキストを記憶するステップと、
    前記UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて前記CPUの実行コンテキストの第1の部分を復元するステップと、
    前記UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、前記システム管理モードで前記CPUの実行コンテキストの第2の部分を復元するステップと、
    CPUのシステム管理モードから抜け、それによって、前記UEFIブート前環境に戻るステップとを含む、方法。
  2. 残される必要がある前記UEFIブート前環境の前記コンテキストが、UEFIのコードおよびデータが存在するメモリ領域のアドレスと前記メモリ領域の内容とをさらに含む、請求項1に記載の方法。
  3. 残される必要がある前記UEFIブート前環境のコンテキストを記憶する前記ステップにおいて、UEFIの予約されたメモリが、残される必要がある前記UEFIブート前環境の前記コンテキストを記憶するために利用される、請求項2に記載の方法。
  4. 以下の手法、すなわち、
    I)レガシーOSのローダからソフトウェア割り込みを受け取ることに応じて、UEFIブート前環境が前記レガシーOSをロードすることに失敗すると判定するステップと、
    II)ウォッチドッグ・クロックによって事前に設定された指定された時間以内にレガシーOSのブートが成功であるという通知をUEFIブート前環境が受信しなかった場合、ハードウェア割り込みをトリガする前記ウォッチドッグ・クロックをUEFIファームウェアに追加し、前記ハードウェア割り込みのトリガによって、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定するステップと、
    III)マシン検査例外メカニズムを利用することによってUEFIブート前環境がレガシーOSをロードすることに失敗すると判定することとのうちの1つを使用することによって、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定される、請求項2または3に記載の方法。
  5. 前記UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて、残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元するステップをさらに含む、請求項4に記載の方法。
  6. 残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力を終了させるステップをさらに含む、請求項5に記載の方法。
  7. 前記CPUがシステム管理モードを開始することに応じて、残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元するステップをさらに含む、請求項4に記載の方法。
  8. 残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力を終了させるステップをさらに含む、請求項7に記載の方法。
  9. 命令ポインタ・レジスタがレガシーOSのブートを行う呼び出し命令の次の命令を指すように、CPUがシステム管理モードを開始することに応じて、保存された前記命令ポインタ・レジスタを修正するステップをさらに含む、請求項5または7に記載の方法。
  10. 前記UEFIブート前環境に戻ることに応じて、UEFIによって制御されるコントローラのドライバが再実行されるようにするステップをさらに含む、請求項5または7に記載の方法。
  11. レガシーOS環境から統合拡張可能ファームウェア・インターフェース(UEFI)ブート前環境への復元を行うためのシステムであって、
    前記UEFIブート前環境で、残される必要がある前記UEFIブート前環境の、CPUの実行コンテキストを含むコンテキストを記憶するように構成された記憶手段と、
    前記UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて前記CPUの実行コンテキストの第1の部分を復元するように構成された第1の復元手段と、
    前記UEFIブート前環境に関連するCPUにシステム管理モードを開始させ、前記システム管理モードで前記CPUの実行コンテキストの第2の部分を復元するように構成された第2の復元手段と、
    CPUのシステム管理モードから抜け、それによって、前記UEFIブート前環境に戻るように構成された退出手段とを含む、システム。
  12. 残される必要がある前記UEFIブート前環境の前記コンテキストが、UEFIのコードおよびデータが存在するメモリ領域のアドレスと前記メモリ領域の内容とをさらに含む、請求項11に記載のシステム。
  13. 前記記憶手段において、残される必要がある前記UEFIブート前環境の前記コンテキストを記憶するためにUEFIの予約されたメモリが利用される、請求項12に記載のシステム。
  14. 前記第1の復元手段が、
    レガシーOSのローダからソフトウェア割り込みを受け取ることに応じて、UEFIブート前環境が前記レガシーOSをロードすることに失敗すると判定するように構成された第1の判定手段と、
    ウォッチドッグ・クロックによって事前に設定された指定された時間以内にレガシーOSのブートが成功であるという通知をUEFIブート前環境が受信しなかった場合、ハードウェア割り込みをトリガする前記ウォッチドッグ・クロックをUEFIファームウェアに追加し、前記ハードウェア割り込みのトリガによって、UEFIブート前環境がレガシーOSをロードすることに失敗すると判定するように構成された第2の判定手段と、
    マシン検査例外メカニズムを利用することによってUEFIブート前環境がレガシーOSをロードすることに失敗すると判定するように構成された第3の判定手段とのうちの1つを使用することによってUEFIブート前環境がレガシーOSをロードすることに失敗すると判定する、請求項12または13に記載のシステム。
  15. 前記第1の復元手段が、前記UEFIブート前環境がレガシーOSをロードすることに失敗することに応じて、残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元するようにさらに構成されている、請求項14に記載のシステム。
  16. 前記第1の復元手段が、残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力を終了させるようにさらに構成されている、請求項15に記載のシステム。
  17. 前記第2の復元手段が、前記CPUがシステム管理モードを開始することに応じて、残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元するようにさらに構成されている、請求項14に記載のシステム。
  18. 前記第2の復元手段が、残される必要がある前記UEFIブート前環境の前記コンテキスト内のUEFIのコードおよびデータが存在する前記メモリ領域の内容を、UEFIのコードおよびデータが存在する前記メモリ領域のアドレスに復元した後で、PCIデバイスのメモリ・マップド入出力を終了させるようにさらに構成されている、請求項17に記載のシステム。
  19. 前記第2の復元手段が、命令ポインタ・レジスタがレガシーOSのブートを行う呼び出し命令の次の命令を指すように、CPUがシステム管理モードを開始することに応じて、保存された前記命令ポインタ・レジスタを修正するようにさらに構成されている、請求項15または17に記載のシステム。
  20. 前記退出手段が、前記UEFIブート前環境に戻ることに応じて、UEFIによって制御されるコントローラのドライバが再実行されるようにするようにさらに構成されている、請求項15または17に記載のシステム。
  21. コンピュータで実行されるときに、請求項1ないし10のいずれかに記載の方法のステップを実行するように適合されたプログラム・コードを含む、コンピュータ・プログラム。
JP2015507347A 2012-04-28 2013-04-12 レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム Active JP6124994B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201210132893.6 2012-04-28
CN201210132893.6A CN103377063B (zh) 2012-04-28 2012-04-28 从遗留操作系统环境恢复到uefi预启动环境的方法和系统
PCT/CN2013/074127 WO2013159652A1 (en) 2012-04-28 2013-04-12 Restoring from legacy os environment to uefi pre-boot environment

Publications (2)

Publication Number Publication Date
JP2015518615A JP2015518615A (ja) 2015-07-02
JP6124994B2 true JP6124994B2 (ja) 2017-05-10

Family

ID=49462227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015507347A Active JP6124994B2 (ja) 2012-04-28 2013-04-12 レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム

Country Status (6)

Country Link
US (2) US9081734B2 (ja)
JP (1) JP6124994B2 (ja)
CN (1) CN103377063B (ja)
DE (1) DE112013002254T5 (ja)
GB (1) GB2517333B (ja)
WO (1) WO2013159652A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9530000B2 (en) 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9703346B2 (en) * 2014-06-23 2017-07-11 Intel Corporation Firmware interface with backup non-volatile memory storage
US9612887B2 (en) 2015-06-26 2017-04-04 Intel Corporation Firmware-related event notification
US9965270B2 (en) * 2015-07-01 2018-05-08 Quanta Computer Inc. Updating computer firmware
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10303487B2 (en) 2016-05-18 2019-05-28 Dell Products, L.P. System and method for booting an information handling system
US10452404B2 (en) 2016-07-28 2019-10-22 Microsoft Technology Licensing, Llc. Optimized UEFI reboot process
CN106293620B (zh) * 2016-08-09 2019-05-14 浪潮电子信息产业股份有限公司 intel平台检测Flash Rom中参数的方法
US10521216B2 (en) 2017-01-17 2019-12-31 Oracle International Corporation Unified extensible firmware interface updates
US11036408B2 (en) 2017-03-26 2021-06-15 Oracle International Corporation Rule-based modifications in a data storage appliance monitor
US10540501B2 (en) * 2017-06-02 2020-01-21 Dell Products, L.P. Recovering an information handling system from a secure boot authentication failure
US20190004818A1 (en) * 2017-06-29 2019-01-03 American Megatrends Inc. Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof
US10496853B2 (en) * 2017-06-30 2019-12-03 Phoenix Technologies Ltd. Securing a host machine against direct memory access (DMA) attacks via expansion card slots
CN107451005B (zh) * 2017-08-10 2020-11-17 合肥联宝信息技术有限公司 配置板载内存的方法、控制装置、计算机主板及计算机
CN107832238B (zh) * 2017-10-09 2021-08-31 江苏航天龙梦信息技术有限公司 一种基于龙芯处理器平台的高速缓存作内存的方法
CN110134443A (zh) * 2018-02-08 2019-08-16 联想企业解决方案(新加坡)有限公司 在计算设备中执行附件的选项rom的方法和设备
US10853087B2 (en) * 2018-05-04 2020-12-01 Dell Products L.P. UEFI boot mode OS provisioning system
US11010224B2 (en) * 2018-07-06 2021-05-18 Dell Products L.P. System and method of utilizing a watchdog timer
US10838815B2 (en) * 2018-09-19 2020-11-17 Dell Products L.P. Fault tolerant and diagnostic boot
KR102103593B1 (ko) * 2019-07-29 2020-04-23 김창석 외장형 운영체제 구동 장치 및 그 방법
CN112069056B (zh) * 2020-07-31 2023-09-01 江苏航天龙梦信息技术有限公司 一种uefi固件富调试的方法
CN112035136A (zh) * 2020-08-12 2020-12-04 中电科技(北京)有限公司 基于uefi的固件镜像恢复方法及系统
CN112306754B (zh) * 2020-11-05 2024-05-24 中国电子信息产业集团有限公司 基于可信的uefi固件恢复方法、装置、介质和设备
US11797679B2 (en) * 2021-07-28 2023-10-24 Dell Products, L.P. Trust verification system and method for a baseboard management controller (BMC)
CN113608926A (zh) * 2021-07-29 2021-11-05 联想开天科技有限公司 一种备份恢复方法、装置及电子设备
CN117472449A (zh) * 2022-07-20 2024-01-30 戴尔产品有限公司 向操作系统公开bios设置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748553B2 (en) * 2000-12-27 2004-06-08 Intel Corporation Method and apparatus for default factory image restoration of a system
US6948094B2 (en) * 2001-09-28 2005-09-20 Intel Corporation Method of correcting a machine check error
US6961848B2 (en) * 2001-12-11 2005-11-01 Intel Corporation System and method for supporting legacy operating system booting in a legacy-free system
US20040255106A1 (en) * 2003-06-10 2004-12-16 Rothman Michael A. Recovery of operating system configuration data by firmware of computer system
US7146512B2 (en) * 2003-06-30 2006-12-05 Intel Corporation Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
US7363536B1 (en) * 2004-07-30 2008-04-22 Hewlett-Packard Development Company, L.P. Delivery of an interruption to an operating system
US7546487B2 (en) * 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US7607041B2 (en) * 2005-12-16 2009-10-20 Cisco Technology, Inc. Methods and apparatus providing recovery from computer and network security attacks
US7454547B1 (en) 2006-05-16 2008-11-18 American Megatrends, Inc. Data exchange between a runtime environment and a computer firmware in a multi-processor computing system
WO2009032445A1 (en) 2007-08-01 2009-03-12 Devicevm, Inc. Integration model for instant-on environment
US7779305B2 (en) * 2007-12-28 2010-08-17 Intel Corporation Method and system for recovery from an error in a computing device by transferring control from a virtual machine monitor to separate firmware instructions
US7984286B2 (en) * 2008-06-25 2011-07-19 Intel Corporation Apparatus and method for secure boot environment
US8726364B2 (en) 2008-06-30 2014-05-13 Intel Corporation Authentication and access protection of computer boot modules in run-time environments
US8201163B2 (en) 2008-07-16 2012-06-12 Dell Products, Lp Input/output transaction management during platform initiation
US8296553B2 (en) * 2008-11-19 2012-10-23 Intel Corporation Method and system to enable fast platform restart
US8694761B2 (en) 2008-12-31 2014-04-08 Vincent Zimmer System and method to secure boot both UEFI and legacy option ROM's with common policy engine
US20100306774A1 (en) 2009-05-28 2010-12-02 Subash Kalbarga Instant-On Computing System
JP5593856B2 (ja) 2010-06-02 2014-09-24 富士通株式会社 情報処理装置およびドライバ実行制御方法
US8499142B1 (en) * 2010-07-22 2013-07-30 American Megatrends, Inc. UEFI boot loader for loading non-UEFI compliant operating systems
WO2013067486A1 (en) * 2011-11-04 2013-05-10 Insyde Software Corp. Secure boot administration in a unified extensible firmware interface (uefi)- compliant computing device
US8930764B2 (en) * 2012-07-26 2015-01-06 Futurewei Technologies, Inc. System and methods for self-healing from operating system faults in kernel/supervisory mode
US9189248B2 (en) * 2013-04-25 2015-11-17 Insyde Software Corp. Specialized boot path for speeding up resume from sleep state
US9349009B2 (en) * 2013-07-15 2016-05-24 Paul A. Rivera Method and apparatus for firmware based system security, integrity, and restoration
JP6054908B2 (ja) * 2014-05-22 2016-12-27 レノボ・シンガポール・プライベート・リミテッド 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ

Also Published As

Publication number Publication date
CN103377063B (zh) 2016-06-22
GB2517333B (en) 2015-05-27
GB201420702D0 (en) 2015-01-07
GB2517333A (en) 2015-02-18
US20150227427A1 (en) 2015-08-13
US20130290778A1 (en) 2013-10-31
WO2013159652A1 (en) 2013-10-31
DE112013002254T5 (de) 2015-03-05
CN103377063A (zh) 2013-10-30
US9372754B2 (en) 2016-06-21
JP2015518615A (ja) 2015-07-02
US9081734B2 (en) 2015-07-14

Similar Documents

Publication Publication Date Title
JP6124994B2 (ja) レガシーos環境から統合拡張可能ファームウェア・インターフェース(uefi)ブート前環境への復元を行うための方法およびシステム、ならびにコンピュータ・プログラム
US10139876B2 (en) Efficient reboot of an operating system executed in a virtual machine
EP3491519B1 (en) Optimized uefi reboot process
US9501289B2 (en) Method of a UEFI firmware and computer system thereof
US10613773B2 (en) Backing up firmware during initialization of device
CN106990958B (zh) 一种扩展组件、电子设备及启动方法
US7017039B2 (en) Method of booting a computer operating system to run from a normally unsupported system device
US7877639B2 (en) Systems and methods to provide failover support for booting embedded hypervisor from an internal non-volatile memory card
US9384094B2 (en) Method and system for instant restore of system volume from a backup image
US7146512B2 (en) Method of activating management mode through a network for monitoring a hardware entity and transmitting the monitored information through the network
JP2005322242A (ja) 仮想環境からのハードウェアへの直接アクセスの提供
WO2007045133A1 (fr) Systeme informatique et procede pouvant realiser une verification d’integrite
TWI441081B (zh) 更新韌體方法與開機方法及使用其之電子裝置
WO2019242272A1 (zh) 一种bios启动操作系统的方法、装置、设备及介质
US10586048B2 (en) Efficient reboot of an operating system
US7900033B2 (en) Firmware processing for operating system panic data
US20130007439A1 (en) Multicore processor system, computer product, and notification method
WO2012155439A1 (zh) 一种bios启动系统和方法
US10768940B2 (en) Restoring a processing unit that has become hung during execution of an option ROM
US10838737B1 (en) Restoration of memory content to restore machine state
WO2008048581A1 (en) A processing device operation initialization system
CN117075974A (zh) 一种基于risc-v服务器cpu的新型edk2启动引导方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170404

R150 Certificate of patent or registration of utility model

Ref document number: 6124994

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150