(58)【調査した分野】(Int.Cl.,DB名)
前記選択されたトレースのリプレイが、さらに、前記1つ以上の不揮発性メモリモジュールへの前記選択されたトレースに関連する識別子の保存を含み、それにより、前記ブートコントローラの次の初期化に応じて、前記ブートコントローラに前記識別子へのアクセスを提供する、請求項5に記載のプラットフォームコントローラ。
コンピューティングデバイスのブートコントローラにより、前記コンピューティングデバイスの基本入出力システム(BIOS)による前記コンピューティングデバイスの初期化をモニタすることであって、前記ブートコントローラ及び前記BIOSは、お互いに独立しており、前記コンピューティングデバイスの前記初期化は、前記コンピューティングデバイスのプロセッサによって実行され、前記コンピューティングデバイスの前記プロセッサは、前記ブートコントローラとは異なる、初期化をモニタすることと、
前記ブートコントローラにより前記コンピューティングデバイスの前記モニタされた初期化のトレースを生成することと、
前記ブートコントローラにより、前記コンピューティングデバイスのメモリに前記初期化の前記生成されたトレースを保存することと、
を含み、
前記コンピューティングデバイスの前記初期化をモニタすることが、さらに、パワーオンセルフテスト(POST)の実行前の初期状態からオペレーティングシステム(OS)が前記コンピューティングデバイスにインスタンスを生成される後続の状態まで、前記コンピューティングデバイスの前記初期化をモニタすることを含む、コンピュータで実行させる方法。
前記トレースを保存することが、さらに、複数の他のトレースのレポジトリに前記トレースを保存することを含み、前記他のトレースは前記コンピューティングデバイスの以前にモニタされた初期化から生成されたものである、請求項13に記載の方法。
前記選択されたトレースをリプレイすることが、さらに、前記コンピューティングデバイスの不揮発性メモリに前記選択されたトレースに関連する識別子を保存することを含む、請求項15に記載の方法。
前記コンピューティングデバイスの初期化が、前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化する複数のファームウェアの実行を含む、請求項12乃至14のいずれか1項記載の方法。
コンピューティングデバイスの基本入出力システム(BIOS)による前記コンピューティングデバイスの初期化をモニタする手段であって、前記モニタする手段と前記BIOSはお互いに独立しており、前記コンピューティングデバイスの前記初期化は、前記コンピューティングデバイスのプロセッサによって実行され、前記コンピューティングデバイスの前記プロセッサは、前記初期化をモニタする手段とは異なる、初期化をモニタする手段と、
前記コンピューティングデバイスの前記モニタされた初期化のトレースを生成する手段と、
前記初期化の前記生成されたトレースを前記コンピューティングデバイスのメモリに保存する手段と、
を備え、
前記コンピューティングデバイスの前記初期化をモニタする前記手段がさらに、パワーオンセルフテスト(POST)の実行前の初期状態からオペレーティングシステム(OS)が前記コンピューティングデバイス上にインスタンスを生成される後続の状態までモニタする手段を含む、コンピューティングデバイス。
【発明を実施するための形態】
【0006】
コンピューティングデバイスの初期化をトレースする方法、記憶媒体、及びプラットフォームコントローラが本明細書で説明される。実施形態において、プラットフォームコントローラは、ブートコントローラを含みうる。ブートコントローラは、いくつかの不揮発性メモリモジュールに接続され、この不揮発性メモリモジュールは、コンピューティングデバイス上で初期化プロセスを実行するその中に保存された初期化命令を有することができる。単一初期化プロセスは、いくつかのハードウェア、複数のマイクロコントローラ、複数のソフトウェアコンポーネント等の初期化を含み、それによりコンピューティングデバイスを動作可能な状態に到達させうる。いくつかの不揮発性メモリモジュールは、またブートコントローラにより実行されたときに、コンピューティングデバイスによる初期化命令の実行の少なくとも一部をブートコントローラにモニタさせ、第1の命令の実行のモニタされた部分のトレースを生成することができる。実施形態において、トレースは、ブートコントローラにより不揮発性メモリモジュールのいくつかに保存されうる。例えば、初期化命令は、いくつかの実施形態において、いくつかのコントローラ又はコンピューティングデバイスのエンジンを初期化することに利用されるファームウェアの形態を取ることができる。ブートコントローラは、これらのファームウェアの実行をモニタし、このモニタからトレースを生成できる。すなわち、ここでMは、いくつかのマイクロコントローラ(ブートコントローラ自身を含む)によりブートコントローラによってキャプチャされた初期化の数であり、システムブートは、全M初期化の集合体である。モニタされたトレースに加えて、例えば、一般性を失うこと無く、コンピューティングデバイスをマニュファクチャリングモード(manufacturing mode)、リカバリモード(recovery mode)、パフォーマンスモード(performance mode)等にブートする所定のトレースもありうる。いくつかの実施形態において、ブートコントローラは、コンピューティングデバイスの少なくとも一部を初期化するブートコントローラにアクセス可能ないかなるトレースもリプレイ(replay)できるように構成されうる。いくつかの実施形態において、トレースの一部はリプレイされうる。このことは、例えば、部分的な攻撃に関連するシグネチャ(signature)を見つけ出すのに役に立ちうる。これらのシグネチャは、その結果、このような攻撃からコンピューティングデバイスを保護することに利用できる。
【0007】
以下の詳細な説明において、参照記号(reference)は、あらゆる個所で同様の番号が同様の部分を指定する本明細書の一部を形成する添付図面に対してされ、その中で説明により実施されうる実施形態が示される。他の実施形態も利用することができ、構造的又は論理的な変更が本開示の範囲から逸脱すること無く、行うことができることを理解されたい。したがって、以下の詳細な説明は、制限を行う趣旨で理解されるべきではなく、実施形態の範囲が添付の請求項及びその均等物によって規定される。
【0008】
様々なオペレーション(operation)が、請求された発明の内容を理解するのに最も有用な方法で、複数の個別のアクションや順番のオペレーションとして説明されうる。しかしながら、説明の順序は、それらのオペレーションが必要な順序依存性があることを意味すると理解すべきではない。特に、それらのオペレーションは、本開示の順番で実行されないかも知れない。記載されたオペレーションは、記載された実施形態とは異なる順番で実行されうる。様々な追加のオペレーションが実行され及び/又は記載のオペレーションが追加の実施形態では除外されうる。
【0009】
本開示の目的で、表現「A及び/又はB」(A and/or B)は、(A)、(B)、又は(A及びB)を意味する。本開示の目的で、表現「A、B、及び/又はC」(A, B, and/or C)は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B及びC)を意味する。明細書で表現「実施形態において、」(in an embodiment,)又は「いくつかの実施形態において、」(in embodiments,)を使う場合は、それぞれ同様の又は異なる1つ以上の実施形態を参照することができる。その上、「備える」(comprising)、「含む」(including)、「有する」(having)等が、本開示の実施形態に関して使われるときは、同義語である。
【0010】
図1は、本開示のいくつかの実施形態によるブートコントローラ114を有するコンピューティングデバイス100の実例となる構成を示す。ブートコントローラ114は、コンピューティングデバイス100の初期化プロセスをモニタし、初期化プロセスのモニタに基づきトレースを生成するように構成することができる。実例となる初期化プロセスは、
図2を参照してさらに詳細に検討される。これらに制限されないが、トレースの全部又は一部のリプレイ、又はコンピューティングデバイス100の初期化プロセスを検証する(validate)トレースの利用を含み、トレースは色々な方法で利用されることができ、これらは、以下でさらに詳細に検討される。
【0011】
実施形態において、コンピューティングデバイス100は、プロセッサ102のような一つ以上のプロセッサと、コヒーレントドメイン(coherent domain)における1つ以上の処理要素(例えば、ベースボード管理コントローラ(BMC)、
図1に示していないイノベーションエンジン(IE)、管理エンジン(ME)等)を含むことができる。本明細書において使用される、コヒーレントドメインは、所定のブートシーケンスに関与し、メモリ及び/又はハードウェアリソースを共用しうる全てのコントローラを参照しうる。いくつかの実施形態において、プロセッサ102は、グラフィックスモジュール104とメモリコントローラ106を含みうる。プロセッサ102は、単一のプロセッサコア又は複数のプロセッサコアから成り立ちうる。さらに、いくつかの実施形態において、プロセッサ102は、複数のプロセッサの一つでありうる。いくつかの実施形態では、複数の非コヒーレント及び/又はコヒーレントプロセッサは協力してプラットフォームを初期化するように働くことができる。マルチプロセッサの実施形態では、複数のプロセッサが同じタイプであり、すなわち、ホモジニアス、又は違うタイプであり、すなわち、ヘテロジニアスでありえ、いかなるタイプのシングル又はマルチコアプロセッサも含みうる。本開示は、プロセッサのタイプ及び/又は数にかかわらず、同様に適用可能である。
【0012】
メモリコントローラ106は、いくつかの実施形態において、図示したようにプロセッサ102と同じパッケージ内に統合されうる。他の実施形態では、メモリコントローラ106は、ディスクリートチップであり又はコンピューティングデバイス100の別の部分に統合されうる。メモリコントローラ106は、1つ以上のランダムアクセスメモリ(RAM)108からの読み取り及びRAMへの書き込みを制御し、RAM108のリフレッシュも制御するように構成することができる。
【0013】
いくつかの実施形態では、統合されたグラフィックスモジュール104が図示したようにプロセッサ102と同じパッケージに統合されうる。いくつかの実施形態においては、統合されたグラフィックスモジュール104が、ディスクリートチップであり、コンピューティングデバイス100の他の部分と統合され、システムオンチップ(SoC)として実装され、又はバスによって接続されたいくつかのディスクリートの部品として実装されうる。統合されたグラフィックスモジュール104は、コンピューティングデバイス100のディスプレイへ出力するグラフィカルデータを扱うように構成されたプロセッサを含むことができる。いくつかの実施形態において、統合されたグラフィックスモジュール104は、専用のグラフィックスカードで置き換えられうる。
【0014】
プロセッサ102は、サウスブリッジ110と接続されうる。サウスブリッジ110は、例えば、プラットフォームコントローラハブ(PCH)、ファームウェアコントローラハブ(FCH)、入出力(I/O)コントローラハブ等のような、プラットフォームコントローラ又はその一部という形態を取りうる。本明細書で使用される、プラットフォームコントローラは、サウスブリッジ110やサウスブリッジ110に接続されるコントローラ及び/又はメモリを含みうる。サウスブリッジ110は、例えば、ファーメモリインタフェース(FMI)、1つ以上のペリフェラルコンポーネントインターコネクト(PCI)、ユニバーサルシリアルバス(USB)、ローピンカウント(LPC)ブリッジ、スーパーペリフェラルインタフェース(SPI)バス、システム管理バス(SMB)等を介して、コンピューティングデバイス100のI/O機能を調整することができる。これを達成するために、サウスブリッジ110は、例えば管理エンジン(ME)112と1つ以上の入出力(I/O)コントローラ116のようないくつかのコントローラ及び/又はエンジンを含むことができる。いくつかの実施形態では、複数のMEがコンピューティングデバイス100に統合されうる。例えば、上述のコンポーネントのサードパーティーベンダが提供するコード又はファームウェアを実行する第1のMEがあり、プラットフォームのコード又はファームウェアを実行する追加のMEがあっても良い。いくつかの実施形態では、サウスブリッジ110は、一緒に統合されたブートコントローラ114を有することができる。他の実施形態では、ブートコントローラ114は、ディスクリートチップ上に配置され、又はコンピューティングデバイス100の他のコンポーネントと一緒に統合されうる。これらのエンジンやコントローラは、単に説明のためのものであり、本開示を制限することを意味するものではないことを理解されたい。いくつかのコントローラ及び/又はエンジンが、本開示から逸脱することなく含まれうる。さらに、これらのコントローラは、本開示の範囲を逸脱すること無く、他の形態を取り、コンピューティングデバイス100の異なる位置に配置されうる。いくつかの実施形態では、サウスブリッジ110は、BMC又は他の内臓コントローラ(EC)、以下ではBMC/EC120のような帯域外(out-of-band)管理コントローラ及び例えばキーボード、マウス、カメラ、外付けハードドライブ等のような1つ以上の周辺デバイス122に接続されうる。いくつかの実施形態では、ブートコントローラ114は、BMC/EC120と統合されうる。サウスブリッジ110は、またファーメモリインタフェース(FMI:far memory interface)124、又は他のメモリインタフェースを含みうる。FMI124は、不揮発性メモリ(NVM)128にデータコネクション126を介して接続されうる。いくつかの実施形態では、NVM128は、例えばDDR4のようなダブルデータレート(DDR)仕様書に従って動作するように構成されうる。
【0015】
上述の各コンポーネントは、コンピューティングデバイス100の追加のコンポーネントと同様に、コンポーネントが動作状態(operational state)に到達する前に初期化を必要とすることができる。その結果、コンピューティングデバイス100が動作状態に到達する前に、
図2の初期化プロセス200のような複雑な初期化プロセスをコンピューティングデバイス100が受けうる。さらに、これらの多くのコンポーネントは、個別の初期化を達成するための特定のファームウェアにアクセスする必要がありうる。もし1つのコンポーネントでも正しく初期化されなかった場合は、コンピューティングデバイス100が、動作状態に達することが阻止され、コンピューティングデバイス100がウィルス、マルウェア、又はサイバー攻撃に対して脆弱な状態になりうる。
【0016】
実施形態において、ブートコントローラ114は、
図2に示したように、コンピューティングデバイス100の初期化プロセスをモニタし、モニタした初期化プロセスのトレースを生成するように構成することができる。このようなトレースは、リセットベクタの実行前の状態からコンピュータデバイス100への動作状態へのインスタンスを生成(instantiation)までの初期化手順の全部又は一部を含みうる。さらに、いくつかの実施形態では、例えばBMC、IE、ME、基本入出力システム(BIOS)、メモリコントローラ等の初期化のような各初期化手順は、そのようなコンポーネントの個別の初期化と関連するトレースセグメントを有することができる。そのような実施形態では、各トレースセグメントは、ブートコントローラ114により実行されるモニタリングを通じて生成されうる。さらに、これらの各コンポーネントは、例えば個別のコンポーネントのベンダーにより提供されうるトレースのような所定のトレースを有することができる。いくつかの実施形態では、コンピューティングデバイス100に対する初期化プロセスの開始前にブートコントローラ114の初期化するファームウェアを含むリードオンリーメモリ(ROM)と共に、このモニタリングはプロビジョニングブートコントローラ114によって遂行されうる。いくつかの実施形態において、ブートコントローラ114の本明細書に記載される機能を実行するのに必要な命令の全てが、ROM118に保存されうる。別の実施形態では、ROM118が動作状態に到達するまでのブートコントローラ114に関する初期化命令を単に含み、ブートコントローラ114は、NVM128のような他のメモリから実行可能な命令を読み出すことができる。
【0017】
実施形態において、初期化プロセスのモニタリングを実行し、関連するトレースを生成するために、ブートコントローラ114は、NVM128のようなメモリにアクセスする必要がありうる。例えば、上述の通り、NVM128は、ブートコントローラ114に本明細書で記載した機能の少なくとも一部を実行させるような実行可能な命令を含みうる。実施形態において、ブートコントローラ114は、FMI124及びデータコネクション126経由でNVM128にアクセスし、ブートコントローラ114がモニタリングプロセスを実行できるように構成されうる。FMI124及びデータコネクション126は、上述のブートコントローラ114と同様の態様で初期化されうる。いくつかの実施形態において、FMI124とデータコネクション126は、ROM118を利用して初期化され、ブートコントローラ114を初期化するように使用されうる。別の実施形態では、FMI124及びデータコネクション126は、ROM118とは別のROMを利用して初期化されうる。いくつかの実施形態において、ブートコントローラ114、FMI124及びデータコネクション126は、コンピューティングデバイス100のパワーオンセルフテスト(POST)の前に初期化され、それにより、コンピューティングデバイス100の各個別のコンポーネントのPOSTの前の状態からコンピューティングデバイス又はその他のコンポーネントのモニタリングをイネーブルしうる。
【0018】
実施形態において、NVM128は、トレースストア(trace store)130、トレースリプレイ識別子(trace replay identifier)132及び/又はファームウェアストア(firmware store)134を含むように構成することができる。トレースストア130は、ブートコントローラ114によって以前に生成されたトレース及び/又はブートコントローラ114によって現在生成されているトレースを保存するように構成することができる。さらに、いくつかの実施形態では、トレースストア130は、コンピューティングデバイス100の単一のコンポーネント又はコンポーネントのグループ、又はその全体として、特定の状態に初期化する能力を有する所定のトレースと共に構成されうる。例えば、一般性を失うことなく、リカバリ(recovery)、パフォーマンスモード(performance mode)への初期化、パワーエフィシェントモード(power efficient mode)への初期化、マルウェアプロテクションモード(malware protection mode)への初期化等をシステム全体として最適化する所定のトレースが存在しうる。本明細書においてブートコントローラメールボックスとして参照されるトレースリプレイ識別子(trace replay identifier)132は、コンピューティングデバイス100のユーザがリプレイを選択したトレースの識別子を保存するように構成されうる。実施形態において、ブートコントローラ114は、トレースがリプレイのために選択されたことを判定するためにトレースリプレイ識別子132をチェックするように構成され、もしその場合、所定のトレースにコンピューティングデバイス100に関する通常の初期化プロセスの代わりにリプレイさせるように構成されうる。このプロセスは、以下で
図6を参照して、さらに詳細に検討される。ファームウェア134は、コンピューティングデバイス100の個別のコンポーネントを初期化するために必要な全てのファームウェア、又はその一部を含みうる。
【0019】
いくつかの実施形態において、コンピューティングデバイス100の個別のコンポーネントは、ファームウェア134にアクセスし、個別のコンポーネントの初期化に必要なファームウェアを読み出す。このような実施形態において、ブートコントローラ114は、これらのアクセスをモニタし、トレースストア130に保存されるトレースの生成を補助するように構成されうる。他の実施形態において、ブートコントローラ114は、NVM128に対して仲介者(middleman)又は門番(gatekeeper)として働くように構成されうる。そのような実施形態において、ブートコントローラ114は、個別のコンポーネントからファームウェアストア134内に含まれるファームウェアに対するリクエストを受け取り、リクエストされたファームウェアに対するアクセスを提供することによりこのようなリクエストにサービスを提供しうる。いくつかの実施形態において、ファームウェアが適正なコンポーネントに対して提供されているかを保証するためのファームウェアへのアクセスを提供する前に、ブートコントローラ114は、ファームウェアのリクエスタが本物であることの確認を行うよう構成することができる。さらに、いくつかの実施形態において、ブートコントローラ114は、ファームウェアストア134内に保存されたファームウェアの更新(update)を実行するように構成されうる。このような実施形態において、ブートコントローラ114は、トレースストア130に保存された以前に記録されたトレースのリプレイに必要でありうる以前のバージョンのファームウェアを維持するように構成されうる。いくつかの実施形態によると、ブートコントローラ114は、生成されたトレースからチェックサム(checksum)を生成し、所定の検証コード(validation code)に対して比較し、初期化プロセスを検証するように構成することができる。いくつかの実施形態によると、もし初期化プロセスの検証が失敗した場合、ブートコントローラは、コンピューティングデバイスにトレースストア130からの以前に保存されたトレースを利用してコンピューティングデバイスに再初期化させるように構成することができる。これが遂行され、例えば、ブートコントローラ114によって、トレースリプレイ識別子132に以前に生成されたトレースの識別子を保存し、コンピューティングデバイスをリセットしうる。さらに、ブートコントローラ114は、トレースされた初期化プロセスの成功した検証のみに応じて、NVM128に生成されたトレースを保存する(persist)ように構成されうる。上述の通り、トレースは、コンピューティングデバイス100のいずれかのコンポーネント又はコンポーネントのグループ、又はその全体の初期化を含みうる。その結果、検証は、コンピューティングデバイス100のいずれかのコンポーネント又はコンポーネントのグループ又はその全体のトレース上で実行されうる。
【0020】
図2は、本開示のいくつかの実施形態による実例となる初期化プロセス200を示す。初期化プロセスは、
図1のブートコントローラ114によりモニタされ、トレースストア232内にトレースNが生成され、ここでNは、いくつかのトレースのうちの最近のトレースを表すことができる。初期化プロセス200は、ブロック204においてセキュリティ(SEC)フェーズで始まり、ここで中央処理ユニット(CPU)キャッシュは、フラッシュ(flush)され、基本入出力システム(BIOS)リセットベクタが実行されうる。ブロック206において、データエリアは、CPUキャッシュの中に確立され、スタックベースのプログラミング言語が、システムメモリの初期化の前に使用されうる。
【0021】
ブロック208において、SECフェーズが、事前拡張ファームウェアインタフェース(PEI:pre-extensible firmware interface)に引き継ぐことができる。PEIフェーズで、BIOSがブロック210においてメモリに必要な速度を決定することができる。その後、メモリは、ブロック212で初期化されうる。ブロック214において、初期化プロセスが、見つかったメモリをメモリに関して定義されたアドレスマップにマップすることができる。このメモリマップは、見つかったメモリのメモリアドレスを、メモリマップによってカバーされるメモリ領域と関連付けることができる。例えば、メモリマップは、メモリアドレスの特定の範囲を予約済みメモリアドレスとして指定し、ブロック214における手順は、これらのメモリアドレスをそのように指定しうる。
【0022】
ブロック216において、ブートプロセスのPEIフェーズが完了し、ドライバ実行環境(DXE:driver execution environment)が開始されうる。ブロック218においてチップセット及びサテライトコントローラがそれぞれのコンポーネントに関連したファームウェアを使用して初期化されうる。ブロック220において、中央処理ユニット(CPU)が初期化されうる。CPUが初期化された後、ポテンシャルブート可能パーティションの優先順位を付けたリストからブートデバイスを選ぶプロセスがブロック222において実行されうる。ブロック224において、PCIエニュメレーション(enumeration)プロセスが実行され、コンピューティングデバイスのPCIバスに接続されるデバイスが決定され、オプションROMがそれらのコンポーネントの初期化を開始しうる。ブロック226において、各ROMのシャドウ又はコピーがコンピューティングデバイスのメモリに保存されうる。ブロック228において、コンピューティングデバイスのオペレーティングシステム(OS)がブートされうる。
【0023】
この初期化プロセス全体又はその部分は、ブートコントローラ114によってモニタされ、トレースストア232に保存されるトレースが生成されうる。上述の初期化プロセスは、初期化プロセスの例を単に説明することを意図している。このように説明した初期化プロセスは、コンピューティングデバイスの初期化を実行する実際のプロセスの一部分を表しているだけでありうる。初期化プロセスが追加のプロセスを含み、又はコンピューティングデバイスやその中に含まれるコンポーネントに依存して変化しうることを理解されたい。本開示は、コンピューティングデバイスによって実行されうる初期化プロセスにかかわらず同様に適用可能である。
【0024】
図3は、本開示のいくつかの実施形態による、
図1のNVM128のような不揮発性メモリの実例となるメモリマップ300を示す。メモリマップ300は、NVMのレイアウトを規定し、本開示のいくつかの態様で予約されるNVM内のメモリアドレスの範囲、又は領域を指定しうる。実施形態おいて、メモリマップ300は、ディスクリプタ(descriptor)領域302を含むことができる。ディスクリプタ領域302は、ブートコントローラ等のコンポーネントがいくつかの領域へのアクセスを制限するために使用しうるメモリマップ300によって定義された異なる領域へのアクセス許可を含みうる。トレースストア304は、コンピューティングデバイスの初期化プロセスのブートコントローラにより生成されたトレースを記憶するように構成することができる。メモリマップ300は、また
図1のトレースリプレイ識別子132のようなリプレイされるトレースの識別子を保存するのに利用されうるブートコントローラメールボックス306を含みうる。実施形態において、メモリマップ300は、ROMのコピーを含みうるROMシャドウ308を含むことができ、ROMのコピーは以前に生成されたトレースにおいて特定されたROMのリプレイを可能にするためにコンピューティングデバイスの初期化で利用されうる。
【0025】
実施形態において、トレースストア304は、コンピューティングデバイスを初期化するために必要な全てのプロセスを含むトレースを含みうる。いくつかの実施形態において、コンピューティングデバイスの個別のコンポーネントは、
図1に示されるような個別のコンポーネント全てに対するファームウェアを含む単一のファームウェアストアを持つよりは、各ファームウェアストアを持ちうる。いくつかの実施形態において、各コンポーネントのファームウェアは、管理エンジン(ME)ファームウェア310、イノベーションエンジン(IE)ファームウェア314やベースボード管理コントローラ(BMC)ファームウェア318のような個別のストアに保存されことができる。これらの各ファームウェアストア、310、314及び318は、単に個別のコンポーネントの最新のファームウェアを含むだけではなく、以前に生成されたトレースをリプレイするために必要となりうる以前のバージョンのファームウェアも含むことができる。コンピュータデバイスの個別のコンポーネントの初期化に利用するファームウェアに類似して、メモリマップもオペレーティングシステム(OS)メモリ322領域を含みうる。この領域は、コンピューティングデバイス上にオペレーティングシステムのインスタンスを生成するために必要なメモリエントリを含むことができる。実施形態においては、OSメモリ322が、以下で
図5を参照して検討されるように、ユーザドリブンチェックポイントに関するOS状態情報を含むことができる。
【0026】
いくつかの実施形態においては、トレースストア304が、コンピューティングデバイスの個別のコンポーネントの初期化に必要な全てのプロセスを含むことができる。他の実施形態では、トレースストア304に保存されたトレースが、初期化プロセスの簡略化したバージョン(abridged version)を個別のコンポーネントの初期化を通して生成されたトレースセグメントに関連付けて含まれうる。例えば、トレースストアは、MEトレースセグメント312、IEトレースセグメント316、BMCトレースセグメント320及びOSトレースセグメント324に含まれるトレースセグメントと関連したトレースを含むことができる。トレースセグメントとトレースストア304内のトレースとの組合せは、コンピューティングデバイスに関する初期化プロセス全体を包含しうる。
【0027】
図4は、本開示のいくつかの実施形態による、ブートコントローラによってコンピューティングデバイスの初期化トレースを生成するための実例となるプロセスフロー400を示す。ブロック402において、プロセスは例えば本明細書の他の場所で議論されたブートコントローラの初期化から始まりうる。ブロック404において、ブートコントローラは、例えば
図2の初期化プロセス200のようなコンピューティングデバイスの初期化プロセスをモニタすることができる。ブロック406において、ブートコントローラは、既に検討したように、モニタされた初期化からトレースを生成することができる。
【0028】
ブロック408で、初期化が成功したか否かについての判定が行われうる。いくつかの実施形態において、初期化が成功したか否かの判定は、初期化のトレースからブートコントローラによって生成されるチェックサムの検証に基づいて行われうる。この判定/検証プロセスは、ブートコントローラ、コンピュータデバイスの他のコンポーネント、ネットワーク経由でコンピューティングデバイスと接続されるうるリモートコンピューティングデバイス、又はコンピューティングデバイスのユーザ又はアドミニストレータによって実行されうる。このチェックサムは、例えば、各コンピューティングデバイスが異なるコンポーネントを有すが、アドミニストレータは、個別のコンピューティングデバイスの予想される初期化プロセスを保証したいサーバファーム(server farm)又はデータウェアハウス(data warehouse)において利用された場合に有益でありうる。このような環境では、個別のコンピューティングデバイスが個別のコンピューティングデバイスに関する予測される値(expected value)との比較のためチェックサムが中央のレポジトリ(central repository)に送信されうる。
他の実施形態では、初期化の成功が、コンピューティングデバイスによって実行されるシステムテストの結果に基づいて判定されうる。さらに他の実施形態では、ユーザ又はアドミニストレータがコンピューティングデバイスの実施可能性(operability)に基づいて初期化を検証することができる。
【0029】
もし初期化が成功しなかった場合、プロセスは、失敗に終わった初期化タスクが実行されうるブロック409まで進み、その後、プロセスはプロセスが終了しうるブロック416へ進むことができる。いくつかの実施形態では、失敗に終わった初期化タスクが、ブートコントローラによるコンピュータシステムのリセット及び以前に生成されたトレースのリプレイを含み、それにより、コンピューティングデバイスを適切に初期化できる。他の実施形態では、失敗に終わった初期化タスクは、ユーザ又はアドミニストレータが制定したポリシーを含みうる。例えば、アドミニストレータが、既に検討した所定のトレースの1つのような、アドミニストレータが失敗に終わった初期化の場合に、それを利用してコンピューティングデバイス又はその一部を初期化したいと思うような所定のトレースを望みうる。さらに別の実施形態では、不成功に終わった初期化タスクが、ブートコントローラによるプロンプト又はログの生成を含み、それによりユーザ又はアドミニストレータに不成功に終わった初期化のコンピューティングデバイスを知らせることができる。
【0030】
もし初期化が成功した場合は、プロセスは、ブロック410へ進むことができる。ブロック410において、ブートコントローラは、以前にセーブされた既存のトレースが存在するか否かを判定することができる。既存のトレースが存在しない場合、次にプロセスは、ブートコントローラがトレースをトレースNとしてセーブするブロック412へ進むことができ、ここでNは直近のトレースを示し、トレースはブロック416で終了しうる。既存のトレースが存在する場合は、いくつかの実施形態において、次に、プロセスがブロック414へ進むことができる。ブロック414でブートコントローラは以前のトレースNをトレースN−1と格下げし、他の以前に保存されたトレースに対しても同様にすることができる。他の実施形態において、ブートコントローラは、以前のトレースNを現在のトレースと単に置き換えることができる。以前のトレースが降格され又は置き換えられた後、プロセスは、ブロック416へ進み、プロセスは終了しうる。既に検討した通り、いくつかの実施形態において、コンピューティングデバイスの各コンポーネントと関連したトレースセグメントが存在しうる。そのような実施形態では、各コンポーネントに対してトレースセグメントNが存在しうる。このような各トレースセグメントは、初期化の成功(successfulness)を判定するために分析され、それぞれのコンポーネントの成功した初期化に対応してトレースNにアペンド(append)されうる。
【0031】
図5は、コンピューティングデバイス上のユーザドリブンチェックポイントを確立するための実例となるプロセスフロー500を本開示のいくつかの実施形態にしたがって、説明する。プロセスは、オペレーティングシステム(OS)が通常動作状態に到達しうるブロック502で始まることができる。ブロック504で、ユーザドリブンチェックポイントに到達したかについて判定が行われうる。この判定は、ブートコントローラ、OSのコンポーネント、又は他の適切なコンポーネントによって行われうる。もしブートコントローラ以外のコンポーネントがこの判定を行う場合、次にいくつかの実施形態では、判定の肯定的な結果がブートコントローラに伝えられうる。このような判定は、コンピュータシステムの特定のアプリケーション又はイベントに基づいて行われ、それらはユーザによってコンピューティングデバイスの正常動作を示すチェックポイントとして定義されうる。例えば、チェックポイントは、電子メール(email)クライアント又は他の同様のイベントのようなユーザが通常利用する所定のアプリケーションの初期化によって定義されうる。ユーザドリブンチェックポイントが発生しなかったと判定された場合、次に、プロセスは、ブロック502へ戻り、OSは通常の動作を続けることができる。
【0032】
イベントがユーザドリブンチェックポイントと判定された場合は、プロセスは、ブロック506へ進むことができる。ブロック506で、ブートコントローラは以前セーブされたチェックポイントの既存のトレースが存在するか否か判定することができる。もし既存のトレースが存在しない場合は、次にプロセスはブロック508へ進み、そこでブートコントローラは、このチェックポイントをトレースNとしてセーブし、ここでNは直近のトレースを示し、そして、プロセスはブロック502で通常のOS動作に戻ることができる。もし既存のトレースが存在する場合、次にプロセスはブロック510へ進み、そこではブートコントローラ、OSのコンポーネント、又は他の適切なコンポーネントがチェックポイントマネージャを起動しうる。チェックポイントマネージャが一旦起動されると、コンピューティングデバイスのユーザは、このチェックポイントに対するトレースを置き換えるか、以前に生成されたトレースNを降格させるか、チェックポイントマネージャによって判断するように促されうる。いくつかの実施形態では、チェックポイントマネージャはブートコントローラの一部でありうる。他の実施形態において、チェックポイントマネージャは、OSの一部として実装され、ブートコントローラと通信するように構成されうる。ブロック514で、もしユーザがそうように選択するか、又はブートコントローラがトレースNを現在のトレースと単に置換した場合には、以前のトレースNがブートマネージャによりトレースN−1に降格させられうる。以前のトレースNが降格され、又は置換された後に、プロセスは、OSが通常動作を続けられるブロック502まで進むことができる。保存できるトレースの数は、トレースを保持するメモリの記憶能力によってのみ制限されうることを理解されたい。
【0033】
いくつかの実施形態において、トレースは、それぞれのトレースを保存させるユーザドリブンチェックポイントの指示を有することができる。いくつかの実施形態では、ユーザドリブンチェックポイントに基づいてトレースが構成され、もしユーザがこれらのトレースのうち1つをリプレイしたい場合、
図6に示されたようにプロセス全体をユーザがリプレイしたいトレースを特定するユーザドリブンチェックポイントを選択することができる。
【0034】
図6は、コンピュータデバイスを初期化するトレースのリプレイに関して実例となるプロセスフロー600を、本開示のいくつかの実施形態にしたがって説明する。プロセスは、ブートコントローラが初期化されるブロック602で始まることができる。ブロック604で、既に検討したように、ブートコントローラが、トレース識別子がブートコントローラメールボックスに保存されているか否か判定されうる。もしブートコントローラメールボックスに保存されたトレース識別子がない場合、プロセスは、コンピューティングデバイスが通常通り初期化されるブロック606へ進むことができる。その後、プロセスは、ブロック612で終了することができる。もしトレース識別子がブートコントローラメールボックスに保存されている場合、プロセスは、所定のトレースがブートコントローラによって取り出されうるブロック608へ進むことができる。ブロック610において、ブートコントローラは、通常の初期化プロセスの代わりにコンピューティングデバイスを初期化するトレースをリプレイすることができる。その後、プロセスは、ブロック612で終了することができる。いくつかの実施形態では、コンピューティングデバイスの各コンポーネントは、上述のようにトレースセグメントと関連付けられうる。そのような実施形態では、トレースのリプレイは、選択されたトレースのリプレイの実行と協調するこれらのトレースセグメントのリプレイを含むことができる。いくつかの実施形態において、トレースは、リモートサーバ、クラウド、ネットワーク接続ストレージ(NAS)、又は同種のものに保存されうる。そのような実施形態において、トレース識別子は、トレースが読み出されるアドレスも含むことができる。
【0035】
いくつかの実施形態では、ブートコントローラメールボックスは、トレースを読み出した後に、フラッシュされうる。別の実施形態では、ユーザが新たなトレースの生成を決めるまで、ブートコントローラメールボックスは、コンピューティングデバイスの各初期化に関して使用される同じトレースを確保するように持続することができる。これは、ユーザがコンピューティングデバイスの一貫した初期化の確保を望んでいる場合に起こりうる。そのようなシナリオでは、コンピューティングデバイスのコンポーネントのファームウェア更新又コンピューティングデバイスへの新たなハードウェア又はソフトウェアの追加のような、コンピューティングデバイスへの変更が発生した場合にのみ、新たなトレースの生成をユーザが選択することができる。
【0036】
本明細書の目的では、コンピュータ使用可能又はコンピュータ読取り可能媒体は、命令実行システム、装置、又はデバイスによって又は関連しての使用に関するプログラムを、含み、保存し、通信し、又は伝搬するいかなる媒体でもありうる。媒体は、揮発性又は不揮発性メモリでありうる。媒体は、電子的、磁気的、光学的、電磁気的、赤外線の、半導体システム(又は装置又はデバイス)又は伝搬媒体でありうる。コンピュータ読取り可能記憶媒体の例は、半導体、ソリッドステートのメモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、固定磁気ディスク及び光学ディスクを含む。光学ディスクの現在の例は、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDを含む。
【0037】
本開示の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態又はハードウェアとソフトウェアの両方を含む実施形態という形態を取りうる。いくつかの実施形態では、ソフトウェアは、これには制限されないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含みうる。その上、本開示は、コンピュータ又はいかなる命令実行システムによって使用される又は関連するプログラムコードを提供するコンピュータ使用可能又はコンピュータ読取り可能媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。
【0038】
本明細書において、特定の実施形態が説明され、記述されてきたが、本開示の実施形態の範囲から逸脱すことなく当業者によって幅広い代替手段及び/又は均等の実装が、提示され記述された特定の実施形態と置き換えられることを理解されたい。本出願は、本明細書で検討された実施形態のいかなる改変又は変形もカバーすることを意図する。したがって、本開示の実施形態が制限されるのは、請求項及びその均等物によってのみであることを意図している。
【0039】
例
いくつかの実施形態による、本開示のいくつかの例を説明する。例1は、ブートコントローラ、前記ブートコントローラに接続された1つ以上の不揮発性メモリモジュールとを備えた、プラットフォームコントローラであって、前記不揮発性メモリモジュールが、前記プラットフォームコントローラをホスティングするコンピューティングデバイスのプロセッサにより実行されたときに、前記コンピューティングデバイスを初期化する第1の
複数の命令(first instructions)と、前記ブートコントローラにより実行されたときに、前記ブートコントローラに前記コンピューティングデバイスによる前記第1の
複数の命令の実行の少なくとも一部をモニタさせ、前記1つ以上の不揮発性メモリモジュールに保存される前記第1の
複数の命令の前記命令の前記モニタされた部分のトレースを生成する第2の
複数の命令(second instructions)と、を中に保存する、プラットフォームコントローラ。
【0040】
例2は、例1の前記発明特定事項を含むことができ、前記第2の命令が前記ブートコントローラによって実行されたときに、パワーオンセルフテスト(POST)の実行前の初期状態から前記コンピューティングデバイスへのオペレーティングシステム(OS)のインスタンスの作成が行われる後続の状態まで前記コンピューティングデバイスによる前記第1の命令の実行をモニタする例2。
【0041】
例3は、例2の前記発明特定事項を含むことができ、前記ブートコントローラによって実行されたときに、前記第2の命令が、前記第1の命令の実行の成功に応じて前記1つ以上の不揮発性メモリに前記トレースを保存する、例3。
【0042】
例4は、例1乃至3のうち1つの前記発明特定事項を含むことができ、前記1つ以上の不揮発性メモリモジュールは、前記ブートコントローラによって生成された、以前に前記第1の命令の複数のモニタされた実行の複数のトレースを保存する、例4。
【0043】
例5は、例1乃至3のうち1つの前記発明特定事項を含むことができ、前記第2の命令は、前記ブートコントローラによって実行されたときに、さらに前記ブートコントローラに、リクエストに応答して、以前に生成され保存されたトレース選択のため前記コンピューティングデバイスのユーザに提示し、選択に応じて、前記以前に生成され保存されたトレースの選択された1つをリプレイし、前記コンピューティングデバイスを初期化する、例5。
【0044】
例6は、例5の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイが、さらに前記不揮発性メモリモジュール中の前記選択されたトレースと関連する識別子のストレージを含み、前記ブートコントローラの次の初期化に応じて、前記識別子へのアクセスを前記ブートコントローラに提供する、例6。
【0045】
例7は、例6の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイが、さらに、前記ブートコントローラの前記次の初期化に応じた前記1つ以上の不揮発性メモリモジュールからの前記識別子の読取り、前記識別子を介しての前記選択されたトレースの特定、及び前記コンピューティングデバイスの初期化する前記選択されたトレースの利用を含む、例7。
【0046】
例8は、例1乃至3のうち1つの前記発明特定事項を含むことができ、前記第2の命令は、前記ブートコントローラよって実行されたときに、さらに、前記第1の命令の前記モニタされた実行の正常終了に応じて、前記ブートコントローラに前記トレースに基づきチェックサムを生成させる、例8。
【0047】
例9は、例8の前記発明特定事項を含むことができ、前記第2の命令は、前記ブートコントローラによって実行されたときに、前記ブートコントローラに、前記チェックサムを予測されるチェックサムと比較し、前記コンピューティングデバイスの初期化を検証させる、例9。
【0048】
例10は、例1乃至3のうち1つの前記発明特定事項を含むことができ、前記第1の命令は、前記コンピューティングデバイスに存在する複数のハードウェアコンポーネントを初期化する複数のファームウェアを含む、例10。
【0049】
例11は、例10の前記発明特定事項を含むことができ、前記第2の命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに、前記複数のハードウェアコンポーネントの各ハードウェアコンポーネントに対応するトレースセグメントの生成を通して前記トレースを生成し、前記トレースセグメントをアクセス及びリプレイするハードウェアコンポーネントに対応する各トレースセグメントを利用可能にする、例11。
【0050】
例12は、命令を含む1つ以上のコンピュータ読取り可能媒体であって、前記命令は、コンピューティングデバイスのブートコントローラによって実行されたときに、前記ブートコントローラに、前記コンピューティングデバイスの基本入出力システム(BIOS)による前記コンピューティングデバイスの初期化をモニタさせ、ここで前記ブートコントローラ及び前記BIOSは、互いに独立であり、前記コンピューティングデバイスのメモリに前記モニタされた初期化の前記生成されたトレースを保存する、例12。
【0051】
例13は、例12の前記発明特定事項を含むことができ、初期化のモニタが、パワーオンセルフテスト(POST)の実行の前の初期状態から、前記コンピューティングデバイス上にオペレーティングシステム(OS)のインスタンスを生成される後続の状態まで前記コンピューティングデバイスをモニタする、例13。
【0052】
例14は、例12の前記発明特定事項を含むことができ、前記生成されたトレースの保存が、前記初期化の正常終了に応じて、前記1つ以上の不揮発性メモリモジュールに前記トレースを保存する、例14。
【0053】
例15は、例14の前記発明特定事項を含むことができ、前記トレースの保存が、他の複数のトレースのレポジトリに前記トレースを保存し、ここで前記他のトレースが、前記コンピューティングデバイスの以前にモニタされた初期化から生成されたものである、例15。
【0054】
例16は、例12乃至15のうち1つの前記コンピュータ読取り可能媒体を含み、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラにリクエストに応答して以前に生成され保存された複数のトレースを選択のため前記コンピューティングデバイスのユーザに提示し、選択に応じて、前記以前に生成され保存されたトレースの選択された1つをリプレイし、前記コンピューティングデバイスを初期化する、例16。
【0055】
例17は、例16の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイが、さらに、前記ブートコントローラの初期化の間に前記ブートコントローラによってアクセス可能なロケーションに前記選択されたトレースに関連した識別子のストレージを含み、前記ブートコントローラに前記ブートコントローラの次の初期化に応じて、前記識別子へのアクセスを提供する、例17。
【0056】
例18は、例17の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイは、さらに、前記ブートコントローラの前記次の初期化に応じて、前記1つ以上の不揮発性メモリモジュールから前記識別子の読取り、前記識別子に基づく前記選択されたトレースの取得、及び前記コンピューティングデバイスを初期化する前記取得したトレースの利用を含む、例18。
【0057】
例19は、例12乃至15のうち1つの前記発明特定事項を含むことができ、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに前記コンピューティングデバイスの前記初期化の正常終了に応じて、前記トレースに基づきチェックサムを生成させる、例19。
【0058】
例20は、例19の前記発明特定事項を含むことができ、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに、前記チェックサムを予測されるチェックサムと比較させ、前記コンピューティングデバイスの初期化を検証させる、例20。
【0059】
例21は、例12乃至15にうち1つに記載の前記発明特定事項を含むことができ、前記コンピューティングデバイスの前記初期化が、前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化するための複数のファームウェアの実行を含む、例21。
【0060】
例22は、例21の前記発明特定事項を含み、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに複数のハードウェアコンポーネントに各ハードウェアコンポーネントに対応するトレースセグメントの生成を通して、前記トレースを生成せ、前記対応するハードウェアコンポーネントに対する前記トレースセグメントのアクセスを提供し、前記対応するハードウェアコンポーネントの前記複数のトレースセグメントのリプレイを可能にする、例22。
【0061】
例23は、コンピュータ実施方法であって、コンピューティングデバイスのブートコントローラによって、前記コンピューティングデバイスの基本入出力システム(BIOS)による前記コンピューティングデバイスの初期化をモニタすることであって、前記ブートコントローラと前記BIOSは、相互に独立である、モニタすることと、前記ブートコントローラによって、前記コンピューティングデバイスの前記モニタした初期化のトレースを作成することと、前記ブートコントローラによって前記コンピューティングデバイスのメモリ中の前記初期化の生成されたトレースを保存することと、を含むコンピュータ実施方法。
【0062】
例24が例23の前記発明特定事項を含み、前記コンピュータデバイスの前記初期化をモニタすることが、さらに、パワーオンセルフテスト(POST)の実行前の初期状態から、オペレーティングシステム(OS)が前記コンピュータ上にインスタンスを生成される後続の状態まで前記コンピューティングデバイスの前記初期化のモニタすることを含む、例24。
【0063】
例25は、例24の前記発明特定事項を含むことができ、さらに前記ブートコントローラにより、前記初期化の正常終了に応じて、前記コンピューティングデバイスの不揮発性メモリにトレースを保存することを含む、例25。
【0064】
例26は、例25の前記発明特定事項を含むことができ、前記トレースを保存することが、さらに、複数の他のトレースのレポジトリに前記トレースを保存することを含み、前記他のトレースが、前記コンピューティングデバイスの以前モニタされた初期化から生成されたものである、例26。
【0065】
例27は、例23乃至26のいずれか1つの前記発明特定事項を含むことができ、さらにリクエストに応じて、前記ブートコントローラが、以前に生成し保存された複数のトレースを選択のために前記コンピューティングデバイスのユーザに提示し、以前に生成し保存された前記複数のトレースの1つの選択を受信し、以前に生成し保存された前記複数のトレースの前記選択された1つをリプレイし、コンピューティングデバイスを初期化することを含む、例27。
【0066】
例28が例27の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイすることが、前記コンピューティングデバイスの不揮発性メモリに前記選択されたトレースに関連する識別子を保存することを含む、例28。
【0067】
例29は、例28の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイすることが、さらに、前記ブートコントローラの前記次の初期化に応じて、前記不揮発性メモリから前記識別子を読取り、前記ブートコントローラのよって前記識別子に基づいて前記選択されたトレースを取得し、前記取得されたトレースを使用して前記コンピューティングデバイスを初期化することを含む、例29。
【0068】
例30は、例23乃至26のうち1つの前記発明特定事項を含むことができ、さらに、前記ブートコントローラによって前記第1の命令の前記モニタされた実行の正常終了に応じて、前記トレースに基づいてチェックサムを生成することを含む例30。
【0069】
例31は、例30の前記発明特定事項を含むことができ、さらに、前記ブートコントローラによって、予測されるチェックサムに対する前記生成されたチェックサムの検証を行うことと、前記生成されたチェックサムの前記検証が失敗したときに、前記ブートコントローラによって前記コンピューティングデバイスのユーザに知らせることを含む、例30。
【0070】
例32は、例23乃至26のうち1つの前記発明特定事項を含むことができ、前記コンピューティングデバイスの初期化が、前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化する複数のファームウェアを実行することを含む、例32。
【0071】
例33は、例32の前記発明特定事項を含むことができ、前記トレースを生成することが、さらに、前記複数のハードウェアコンポーネントの各ハードウェアコンポーネントに対応するトレースセグメントを生成することと、ここで前記トレースは、前記トレースセグメントの組合せを含み、前記対応するハードウェアコンポーネントに対する前記トレースセグメントのアクセスを提供することによって前記対応するハードウェアコンポーネントによる前記トレースセグメントのリプレイを可能にすることを含む、例33。
【0072】
例34は、コンピューティングデバイスであって、コンピューティングデバイスの基本入出力システム(BIOS)による前記コンピューティングデバイスの初期化をモニタする手段と、ここで前記モニタする手段と前記BIOSは相互に独立であり、前記コンピューティングデバイスの前記モニタされた初期化のトレースを生成する手段と、前記コンピューティングデバイスのメモリ中に前記初期化の前記生成されたトレースを保存する手段とを有する例34。
【0073】
例35は、例34の前記発明特定事項を含み、ここで前記コンピューティングデバイスの前記初期化をモニタする前記手段は、さらに、パワーオンセルフテスト(POST)の実行より前の初期状態からオペレーティングシステム(OS)が前記コンピューティングデバイス上にインスタンスが生成される後続の状態まで初期化をモニタする手段を含む、例35。
【0074】
例36は、例35の前記発明特定事項を含むことができ、さらに、前記初期化の正常終了に応じて、前記コンピューティングデバイスの不揮発性メモリの中に前記トレースを保存する手段とを含む、例36。
【0075】
例37は、例36の前記発明特定事項を含むことができ、前記トレースを保存する手段が、さらに複数の他のトレースのレポジトリに前記トレースを保存する手段を含み、ここで前記他のトレースは、前記コンピューティングデバイスの以前モニタされた初期化から生成される、例37。
【0076】
例38は、例34乃至37のうち1つの前記発明特定事項を含むことができ、さらに、リクエストに応答して、以前に生成され保存された複数のトレースを選択のため前記コンピューティングデバイスのユーザに提示する手段と、以前に生成され保存された前記複数のトレースの選択された1つをリプレイし、前記コンピューティングデバイスを初期化する手段とを有する、例38。
【0077】
例39は、例38の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイする前記手段が、さらに、前記コンピューティングデバイスの不揮発性メモリ中の前記選択されたトレースに関連する識別子を保存する手段をさらに含む、例39。
【0078】
例40は、例39の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイする前記手段が、前記不揮発性メモリから前記識別子を読み取る手段と、前記識別子に基づき、前記選択されたトレースを取得する手段と、前記取得したトレースを使用して前記コンピューティングデバイスを初期化する手段をさらに含む例40。
【0079】
例41は、前記34乃至37のうち1つの前記発明特定事項を含むことができ、さらに前記第1の命令の前記モニタされた実行の正常終了に応じて、前記トレースに基づき、チェックサムを生成する手段を含む、例41。
【0080】
例42は、例41の前記発明特定事項を含むことができ、さらに、予測されるチェックサムに対して前記生成されたチェックサムを検証する手段と、前記生成されたチェックサムの前記検証が失敗した場合に、前記コンピューティングデバイスのユーザに知らせる手段とを含む、例42。
【0081】
例43は、例34乃至37のうち1つの前記発明特定事項を含むことができ、前記コンピューティングデバイスの初期化が前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化する複数のファームウェアを実行することを含む、例43。
【0082】
例44は、例43の前記発明特定事項を含むことができ、前記トレースを生成する前記手段が、さらに、前記複数のハードウェアコンポーネントに各ハードウェアコンポーネントに対応するトレースセグメントを生成する手段であって、前記トレースは、トレースセグメントの組合せを含み、前記対応するハードウェアコンポーネントに対する前記トレースセグメントへのアクセスを提供することにより、前記対応するハードウェアコンポーネントによる前記トレースセグメントのリプレイを可能にする手段とを、含む例44。