(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいて、前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを受信する段階と、
前記ブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する段階と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する段階と、
前記コンピューティングデバイスを再起動する段階と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する段階と
を備え、
前記ブータブルイメージを格納する段階は、前記ブータブルイメージを上位メモリ領域（ＵＭＡ）位置に格納する段階を有する、方法。
【請求項２】
前記コンポーネントに対して前記更新を適用する段階は、
前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信する段階と、
前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答する段階と
を有する、請求項１に記載の方法。
【請求項３】
コンピューティングデバイスにおいて、前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを受信する段階と、
前記ブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する段階と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する段階と、
前記コンピューティングデバイスを再起動する段階と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する段階と
を備え、
前記コンポーネントに対して前記更新を適用する段階は、
前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信する段階と、
前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答する段階と
を有する、方法。
【請求項４】
前記ブータブルイメージを受信する段階は、
デジタル署名されたブータブルイメージを更新サーバから受信する段階と、
前記ブータブルイメージの格納前に前記ブータブルイメージが前記更新サーバによってデジタル署名されていることを確認する段階と
を備える、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記ブータブルイメージを格納する段階は、
前記ブータブルイメージを、前記コンピューティングデバイスの管理エンジンの専用メモリ位置に格納する段階を有し、
前記専用メモリ位置は、前記コンピューティングデバイスの一次プロセッサによってアクセスできない、請求項１から４のいずれか一項に記載の方法。
【請求項６】
コンピューティングデバイスにおいて、前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを受信する段階と、
前記ブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する段階と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する段階と、
前記コンピューティングデバイスを再起動する段階と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する段階と
を備え、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する段階は、
統合デバイスエレクトロニクスリダイレクト（ＩＤＥ−Ｒ）用に前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を設定する段階を有する、方法。
【請求項７】
前記コンポーネントに対して前記更新を適用する段階は、
前記ブータブルイメージを利用してＩＤＥ−Ｒ要求に応答する段階を有する、請求項６に記載の方法。
【請求項８】
前記ＩＤＥ−Ｒ要求に応答する段階は、
前記コンピューティングデバイスの管理エンジンで前記ＢＩＯＳからのＩＤＥ−Ｒ要求を受信する段階と、
前記ＩＤＥ−Ｒ要求に対して、前記管理エンジンから、前記ブータブルイメージのデータで応答する段階と
を有する、請求項７に記載の方法。
【請求項９】
前記コンポーネントに対して前記更新を適用する段階は、
前記コンポーネントのファームウェアを更新する段階を有する、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記コンポーネントに対して前記更新を適用する段階は、
前記更新をハードディスクドライブに適用する段階を有する、請求項１から８のいずれか一項に記載の方法。
【請求項１１】
コンピューティングデバイスに、
前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する手順と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する手順と、
前記ブータブルイメージを利用して前記コンピューティングデバイスを再起動する手順と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する手順と
を実行させ、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する手順は、統合デバイスエレクトロニクスリダイレクト（ＩＤＥ−Ｒ）用に前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を設定する手順を有する、プログラム。
【請求項１２】
前記コンポーネントに対して前記更新を適用する手順は、
前記ブータブルイメージを利用してＩＤＥ−Ｒ要求に応答する段階を有する、請求項１１に記載のプログラム。
【請求項１３】
前記ＩＤＥ−Ｒ要求に応答する段階は、
前記コンピューティングデバイスの管理エンジンで前記ＢＩＯＳからのＩＤＥ−Ｒ要求を受信して、前記ＩＤＥ−Ｒ要求に対して、前記管理エンジンから、前記ブータブルイメージのデータで応答する手順を含む、請求項１２に記載のプログラム。
【請求項１４】
前記コンポーネントに対して前記更新を適用する手順は、
前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信する手順と、
前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答する手順と
を有する、請求項１１から１３のいずれか一項に記載のプログラム。
【請求項１５】
コンピューティングデバイスに、
前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する手順と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する手順と、
前記ブータブルイメージを利用して前記コンピューティングデバイスを再起動する手順と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する手順と
を実行させ、
前記コンポーネントに対して前記更新を適用する手順は、
前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信する手順と、
前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答する手順と
を有する、プログラム。
【請求項１６】
コンピューティングデバイスに、
前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する手順と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する手順と、
前記ブータブルイメージを利用して前記コンピューティングデバイスを再起動する手順と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する手順と
を実行させ、
前記ブータブルイメージを格納する手順は、前記ブータブルイメージを上位メモリ領域（ＵＭＡ）位置に格納する手順を有する、プログラム。
【請求項１７】
前記コンポーネントに対して前記更新を適用する手順は、
前記コンポーネントのファームウェアを更新する手順を有する、請求項１１から１６のいずれか一項に記載のプログラム。
【請求項１８】
前記コンポーネントに対して前記更新を適用する手順は、
前記更新をハードディスクドライブに適用する手順を有する、請求項１１から１６のいずれか一項に記載のプログラム。
【請求項１９】
コンピューティングデバイスであって、
起動デバイスと、
前記起動デバイスに対して起動要求を行う一次プロセッサと、
前記コンピューティングデバイスのコンポーネントのための更新を含むブータブルイメージを格納するセキュアなメモリ位置を有するローカルメモリデバイスと、
二次プロセッサを有し、前記起動デバイスからの前記一次プロセッサの前記起動要求を前記ブータブルイメージにリダイレクトすることで、前記更新を適用する管理エンジンと
を備え、
前記更新を適用することは、統合デバイスエレクトロニクスリダイレクト（ＩＤＥ−Ｒ）用に前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を設定することを有する、コンピューティングデバイス。
【請求項２０】
コンピューティングデバイスであって、
起動デバイスと、
前記起動デバイスに対して起動要求を行う一次プロセッサと、
前記コンピューティングデバイスのコンポーネントのための更新を含むブータブルイメージを格納するセキュアなメモリ位置を有するローカルメモリデバイスと、
二次プロセッサを有し、前記起動デバイスからの前記一次プロセッサの前記起動要求を前記ブータブルイメージにリダイレクトすることで、前記更新を適用する管理エンジンと
を備え
前記ローカルメモリデバイスは、前記ブータブルイメージを上位メモリ領域（ＵＭＡ）位置に格納する、コンピューティングデバイス。
【請求項２１】
コンピューティングデバイスであって、
起動デバイスと、
前記起動デバイスに対して起動要求を行う一次プロセッサと、
前記コンピューティングデバイスのコンポーネントのための更新を含むブータブルイメージを格納するセキュアなメモリ位置を有するローカルメモリデバイスと、
二次プロセッサを有し、前記起動デバイスからの前記一次プロセッサの前記起動要求を前記ブータブルイメージにリダイレクトすることで、前記更新を適用する管理エンジンと
を備え、
前記更新を適用することは、前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信することと、前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答することとを有する、コンピューティングデバイス。
【請求項２２】
前記起動デバイスはハードディスクドライブであり、
前記更新は、前記ハードディスクドライブのファームウェアに対する更新である、請求項１９から２１のいずれか一項に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
殆どのコンピューティングデバイスはファームウェアを含んでおり、ファームウェアは、コンピューティングデバイスのコンポーネントの内部デバイス機能を制御するプログラムおよびデータ構造を含んでいる。ファームウェアは、ＥＰＲＯＭ等のフラッシュ可能メモリデバイスに格納されている場合がある。フラッシュ可能メモリデバイスを利用すると、新たなファームウェアをもつメモリデバイスをフラッシュしてファームウェアの更新を可能としながらも、電源が利用不可能なときには既存のファームウェアを保存することができる。ファームウェアの更新プロセスは、「コンポーネント更新」または「プラットフォーム更新」等として称されることがあり、プラットフォームとは、コンピューティングデバイスのコンポーネントのうち１以上のことを指す。ファームウェア更新中に、更新中のコンポーネントは動作不能にすべきである場合がある。コンポーネントが自身のファームウェアに対してアクセスできないので、コンポーネントは基本機能を実行することができない。
【０００２】
多くのコンピューティングデバイスが、コンピューティングデバイスが自身のオペレーティングシステム（ＯＳ）の実行中には更新できないファームウェア（またはその他ソフトウェア）を含んでいる。たとえば、ＯＳは通常ハードディスクドライブに格納され、ハードディスクドライブは、自身のファームウェアの更新中にはデータを取得することができないので、コンピューティングデバイスは、通常のＯＳ環境ではハードディスクドライブのファームウェア更新を管理することができない。これらファームウェア更新は、通常のＯＳ環境の外部で行う必要がある。一般的には、これは、コンピューティングデバイスに対してブータブルイメージを配信することによって達成されている。ブータブルイメージは、通常のＯＳ環境にアクセスすることなくコンピューティングデバイスを動作させ、ファームウェア更新を適用することができる、ディスクオペレーティングシステム（ＤＯＳ）環境等の独立型ＯＳ環境を含むことができる。
【０００３】
従来、これらファームウェア更新に利用されるブータブルイメージは、フロッピー（登録商標）ディスク、ＵＳＢスティック、その他の可搬型媒体を介して、物理的に各コンピューティングデバイスに配信される必要がある。別の配信法として、ファームウェア更新を含むブータブルイメージが遠隔サーバに格納されている、伝統的なＩＤＥＲ（integrated device electronics redirect）がある。これによって、ネットワーク接続を有し、遠隔サーバにアクセスするよう予め設定されたコンピューティングデバイスを、遠隔のブータブルイメージから起動して、ファームウェア更新を適用することができる。
【図面の簡単な説明】
【０００４】
ここに記載する発明は、図面に例で示されているが、これは限定ではない。図示を簡潔かつ明瞭に行うべく、図面に示す部材は、必ずしも実際の縮尺で描かれてはいない。たとえば一部の部材の寸法を他の部材よりも強調して描くことで明瞭にしている場合もある。さらに適切と思われる場合には、参照番号を図面間で繰り返して、対応するまたは同様の部材であることを示している場合もある。
【０００５】
【図１】コンピューティングデバイスのコンポーネントに対する更新を管理するシステムの一実施形態の簡略化されたブロック図である。
【図２】図１のコンピューティングデバイスのソフトウェア環境の一実施形態の簡略化されたブロック図である。
【図３】図１および図２の更新サーバを利用してブータブルイメージをパッケージ化および配信する方法の一実施形態の簡略化されたフロー図である。
【図４】図１および図２の更新マネージャを利用して更新を管理する方法の一実施形態の簡略化されたフロー図である。
【図５Ａ】図１および図２の管理エンジンを利用して更新を適用する方法の一実施形態の簡略化されたフロー図である。
【図５Ｂ】図１および図２の管理エンジンを利用して更新を適用する方法の一実施形態の簡略化されたフロー図である。
【図６】図１および図２の基本入出力システム（ＢＩＯＳ）を利用してコンピューティングデバイスを起動する方法の一実施形態の簡略化されたフロー図である。
【発明を実施するための形態】
【０００６】
本開示の思想には、様々な変形例および代替的形態が考えられるが、その具体的な例である実施形態を図面に例示し、明細書中で詳述する。しかし、本開示の思想を開示する具体的形態に制限する意図はなく、本発明には、添付請求項が定義する本発明の精神および範囲に含まれるすべての変形例、均等物、および代替物が含まれることが意図されている。
【０００７】
以下の記載では、論理実装例、オペコード、特定のオペランド、リソースの分割／共有／複製の実装例、システムコンポーネントのタイプおよび相互関係、および、論理的分割／統合の選択肢等の複数の具体例を挙げて、本開示の完全な理解を提供する。しかし、当業者であれば、これら特定の詳細なしに本開示の実施形態を実装することができることを理解する。反対に、制御構造、ゲートレベル回路、および完全なソフトウェア命令シーケンスに関しては詳述を避けることで、本発明を曖昧にしないようにしている場合もある。当業者であれば、本記載を読むことで、不当な実験をすることなく、適切な機能を実装することができるだろう。
【０００８】
「一実施形態」「１つの実施形態」「例示的な実施形態」およびこれに類する明細書における言及は、記載される実施形態が特定の特徴、構造、または特性を持つが、全ての実施形態が必ずしもこれら特定の特徴、構造、または特性をもたねばならないというわけではない。さらに、これらの表現は、必ずしも同じ実施形態のことを言及しているわけではない。さらに、特定の特徴、構造、または特性がある実施形態との関連で記載されている場合には、明示されてようといまいと、他の実施形態において特定の特徴、構造、または特性を実装することは当業者の知識の範囲内であるとする。
【０００９】
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組み合わせによって実装することができる。コンピューティングデバイスに実装される本発明の実施形態は、コンポーネント間の１以上のバスベースの相互接続および／またはコンポーネント間の１以上のポイントツーポイント相互接続を含んでよい。本発明の実施形態は、さらに、１以上のプロセッサおよび／またはコントローラが読み出し実行することができる１以上の持続性の機械可読媒体に格納されている命令として実装されてもよい。持続性の、機械可読媒体は、機械（たとえばコンピューティングデバイス）が読み取ることができる形態の情報を格納または送信するいずれの有形のメカニズムを含んでもよい。たとえば、持続性の、機械可読媒体は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスおよびその他を含んでよい。
【００１０】
図１を参照すると、コンピューティングデバイス１０２のコンポーネントに対する更新を管理するシステム１００が示されている。システム１００は、コンピューティングデバイス１０２、ファームウェア更新サーバ１０４、および、コンピューティングデバイス１０２をファームウェア更新サーバ１０４に通信可能に連結するネットワーク１０６を含んでいる。ネットワーク１０６は、ローカルエリアネットワーク、ワイドエリアネットワーク、公衆利用可能なグローバルネットワーク（publicly available global network）（たとえばインターネット）および／または他のネットワーク等の任意のタイプの有線および／または無線ネットワークとして実現されてよい。加えて、ネットワーク１０６は、コンピューティングデバイス１０２とファームウェア更新サーバ１０４との間の通信を促す任意の数の追加デバイス（たとえばルータ、スイッチ、介在するコンピュータ等）を含んでよい。
【００１１】
ファームウェア更新サーバ１０４は、コンピューティングデバイス１０２とは別の任意のタイプの１つまたは複数のコンピューティングデバイスとして実現されてよい。たとえばファームウェア更新サーバ１０４は、１以上のパーソナルコンピュータ、ワークステーション、ラップトップコンピュータ、ハンドヘルドコンピュータ、移動インターネットデバイス、セルラーフォン、情報携帯端末、電話器、ネットワーク機器、可視化デバイス、格納コントローラ、または、ネットワーク１０６でコンピューティングデバイス１０２と通信するよう構成されているその他のコンピュータベースのデバイスとして実現されてもよい。１つのコンピューティングデバイス１０２および１つのファームウェア更新サーバ１０４のみを図１には例示しているが、システム１００は、任意の数のコンピューティングデバイス１０２および任意の数のファームウェア更新サーバ１０４を含んでよい。
【００１２】
ファームウェア更新サーバ１０４は、データベースを含んでも、データベース１０８に通信可能に連結されていてもよい。データベース１０８は、関係型データベース、フラットファイルデータベース等の適切なデータ構造および位置に格納されたデータとして、または、（不図示の）ファームウェア更新サーバのメモリに格納されたデータとして実現されてよい。データベース１０８は、更新を含むブータブルイメージ１１０を含む。一例の実施形態では、ブータブルイメージ１１０は、コンピューティングデバイス１０２のコンポーネントに適用されるファームウェア更新を含んでよい。他の実施形態では、ブータブルイメージ１１０は、コンピューティングデバイス１０２の複数のコンポーネントに適用される複数のファームウェア更新を含んでよい。他の実施形態では、ブータブルイメージ１１０は、コンピューティングデバイス１０２に適用されるべきソフトウェア更新を、追加でまたは代わりに含んでよい。
【００１３】
コンピューティングデバイス１０２は、ここに記載する機能を実行することができる任意のタイプの電子デバイスとして実装されてよい。たとえばコンピューティングデバイス１０２は、パーソナルコンピュータ、ワークステーション、ラップトップコンピュータ、ハンドヘルドコンピュータ、移動インターネットデバイス、セルラーフォン、情報携帯端末、電話器、ネットワーク機器、可視化デバイス、格納コントローラ、または、その他のコンピュータベースのデバイスとして実現されてもよい。図１に例示する実施形態では、コンピューティングデバイス１０２が、一次プロセッサ１１２、メインメモリ１２０、チップセット１２２、１以上の周辺デバイス１３２、データ格納デバイス１３４、および通信回路１３８を含む。一部の実施形態では、上述したコンポーネントの幾つかを、コンピューティングデバイス１０２のマザーボードに組み込んでもよいし、他のコンポーネントは、たとえば周辺ポートによってマザーボードに通信可能に連結されてよい。さらに、コンピューティングデバイス１０２は、図１には記載を明瞭にするために示されていないコンピュータおよび／またはコンピューティングデバイスに共通して見られる他のコンポーネント、サブコンポーネント、および、デバイスを含んでもよい。
【００１４】
コンピューティングデバイス１０２の一次プロセッサ１１２は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ等のソフトウェア／ファームウェアを実行することができる任意のタイプのプロセッサとして実現されてよい。一次プロセッサ１１２は、プロセッサコア１１４を有するシングルコアのプロセッサとして実現されるとして例示されている。しかし他の実施形態では、一次プロセッサ１１２が、複数のプロセッサコアを有するマルチコアプロセッサとして実現されてよい。加えて、コンピューティングデバイス１０２は、１以上のプロセッサコア１１４を有する追加の一次プロセッサ１１２を含んでもよい。一次プロセッサ１１２は、概して、コンピューティングデバイス１０２に常駐するＯＳおよび様々なアプリケーション、プログラム、ライブラリ、およびドライバを含んでよいソフトウェアスタックを実行する役割を持つ。ソフトウェアスタックの一部として、一次プロセッサ１１２は、更新マネージャ１１６を実行してよく、これに関しては図２を参照しながら詳述する。
【００１５】
コンピューティングデバイス１０２のチップセット１２２は、メモリコントローラハブ（ＭＣＨまたは「ノースブリッジ」）、入出力コントローラハブ（ＩＣＨまたは「サウスブリッジ」）、および、ファームウェアデバイスを含んでよい。ファームウェアデバイスは、基本入出力システム（ＢＩＯＳ）１２４および／またはその他の情報を格納するためのメモリ格納デバイスとして実現されてよい。しかし他の実施形態では、他の構成をもつチップセットを利用してもよい。たとえば一部の実施形態では、チップセット１２２が、プラットフォームコントローラハブ（ＰＣＨ）として実現されてもよい。一部の実施形態では、ＭＣＨは、一次プロセッサ１１２内に組み込まれていても、一次プロセッサ１１２に関連付けられていてもよく、一次プロセッサ１１２は、メインメモリ１２０と直接通信することができてよい（図１では破線で示されている）。
【００１６】
プロセッサ１１２は、複数の信号経路によってチップセット１２２に通信可能に連結されている。これらの信号経路（および図１に示すその他の信号経路）は、コンピューティングデバイス１０２のコンポーネント間の通信を促すことができる任意のタイプの信号経路として実現されてよい。たとえば信号経路は、任意の数のワイヤ、ケーブル、光ガイド、プリント基板の配線、ビア、バス、介在するデバイスおよび／またはその他として実現されてよい。
【００１７】
チップセット１２２はさらに、一次プロセッサ１１２とは別個であり概してこれとは独立して動作する、管理エンジン１２６を含んでよい。管理エンジン１２６は、セキュリティ、暗号化、および／または、認証機能を果たすよう構成されている任意の数のハードウェア、ファームウェア、および／またはソフトウェアとして実現されてよい（これに関しては後述する）。管理エンジン１２６は図１には、チップセット１２２に統合されているものとして例示されているが、管理エンジン１２６は、これに加えてまたはこれに代えて、複数の信号経路によってチップセット１２２に通信可能に連結されている１以上の拡張ボードの上に配置された別の回路を含んでもよい。管理エンジン１２６は、チップセット１２２を介して、または他の実施形態では、複数の独立した信号経路によって、コンピューティングデバイス１０２の様々なコンポーネント（たとえば一次プロセッサ１１２、メインメモリ１２０等）に通信可能に連結されてもよい。
【００１８】
図１に例示する実施形態では、管理エンジン１２６が、管理エンジン１２６を一次プロセッサ１１２とは独立して動作させる二次プロセッサ１３０を含む。二次プロセッサ１３０は、不図示の１以上のプロセッサコアを有する１以上のプロセッサを含むマイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ等のソフトウェア／ファームウェアを実行することができる任意のタイプのプロセッサとして実現してよい。この実施形態では、管理エンジン１２６がさらに、二次プロセッサ１３０からはアクセス可能であるが一次プロセッサ１１２はアクセスできないセキュアなメモリ１２８も含む。このセキュアなメモリ１２８は、たとえばＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、フラッシュメモリデバイスおよび／または他のメモリデバイスを含む１以上のメモリデバイスまたはデータ格納位置として実現されてよい。セキュアなメモリ１２８は、二次プロセッサ１３０が実行可能な様々なデータおよびソフトウェア／ファームウェアを格納することができる。一部の実施形態では、管理エンジン１２６が、さらに、追加の内蔵コンポーネント（たとえば専用通信回路）を含んでもよい。
【００１９】
一部の例示する実施形態では、管理エンジン１２６が、Ｉｎｔｅｌ（登録商標）Ａｃｔｉｖｅ  Ｍａｎａｇｅｍｅｎｔ  Ｔｅｃｈｎｏｌｏｇｙ（Ｉｎｔｅｌ（登録商標）ＡＭＴ）を利用して、Ｉｎｔｅｌ（登録商標）ＡＭＴの一部を利用して、Ｉｎｔｅｌ（登録商標）Ｍａｎａｇｅｍｅｎｔ  Ｅｎｇｉｎｅ（Ｉｎｔｅｌ（登録商標）ＭＥ）を利用して、または、Ｉｎｔｅｌ（登録商標）ｖＰｒｏ  Ｔｅｃｈｎｏｌｏｇｙ（Ｉｎｔｅｌ（登録商標）ｖＰｒｏ）を利用して実装することができるが、これらは全て、カリフォルニア州のサンタクララのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能であったり、および／または、Ｉｎｔｅｌ Ｃｏｒｐｏｒａｔｉｏｎが販売するチップセットにおいて利用可能であったりする。Ｉｎｔｅｌ  ＡＭＴ（登録商標）エンベデッドプラットフォーム技術は、各エンドポイントデバイスの不揮発性メモリに格納されているハードウェアおよびソフトウェア情報に対するアウトオブバンドアクセスを可能とし、機能オペレーティングシステムおよび他の管理ツールにみられるソフトウェアエージェントが必要なくなる。
【００２０】
コンピューティングデバイス１０２のメインメモリ１２０は、１以上のメモリデバイスまたはデータ格納位置（たとえばＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、フラッシュメモリデバイスおよび／または他のメモリデバイスを含む）として実装されてよい。メインメモリ１２０は、複数の信号経路によってチップセット１２２に通信可能に連結されている。様々なデータおよびソフトウェアをメインメモリ１２０に格納することができる。たとえば、一次プロセッサ１１２が実行するソフトウェアスタックを構成する１以上のオペレーティングシステム、アプリケーション、プログラム、ライブラリ、およびドライバは、実行中にメインメモリ１２０内に常駐してよい。さらに、メインメモリ１２０に格納されているソフトウェアおよびデータを、メインメモリ１２０とデータ格納デバイス１３４との間で、メモリ管理動作の一環として交換してよい。
【００２１】
一部の実施形態では、メインメモリ１２０がセキュアなメモリ１１８を含んでよく、セキュアなメモリ１１８には、チップセット１２２はアクセス可能であるが（管理エンジン１２６を含む）、一次プロセッサ１１２からはアクセス不可能である。セキュアなメモリ１１８は、メモリ隔離メカニズムを利用してチップセット１２２によって一次プロセッサ１１２から隔離されているメインメモリ１２０の一部として実現されることで、悪意のあるソフトウェアが、セキュアなメモリ１１８にアクセスすることができないようにする。一部の実施形態では、セキュアなメモリ１１８は、上位メモリアドレス（ＵＭＡ）として実現されてもよい。実在している場合には、セキュアなメモリ１１８は、管理エンジン１２６（セキュアなメモリ１２８に加えてまたはセキュアなメモリ１２８に代えて）のための更なるメモリ空間として利用することもできる。
【００２２】
コンピューティングデバイス１０２はさらに、１以上の周辺デバイス１３２、データ格納デバイス１３４、および通信回路１３８を含んでよい。これらの実施形態では、チップセット１２２がさらに、１以上の周辺デバイス１３２、データ格納デバイス１３４、および通信回路１３８に通信可能に連結されている。この１以上の周辺デバイス１３２は、入力デバイス、出力デバイス、およびその他のインタフェースデバイスを含む任意の数の周辺デバイスを含んでよい。たとえば周辺デバイス１３２は、ディスプレイ、マウス、キーボード、およびコンピューティングデバイス１０２の外部のスピーカを含んでよい。周辺デバイス１３２に含まれる特定のデバイスは、たとえば、コンピューティングデバイス１０２が意図されている用途に応じたものであってよい。通信回路１３８は、コンピューティングデバイス１０２とファームウェア更新サーバ１０４との間のネットワーク１０６における通信を可能とする任意の数のデバイスおよび回路として実現されてよい。たとえば、通信回路１３８は、１以上の有線および／または無線ネットワークインタフェースカード（ＮＩＣ）またはその他のネットワーク通信カード、モジュール、または回路として実現されてよい。
【００２３】
データ格納デバイス１３４は、たとえばメモリデバイスおよび回路、メモリカード、ハードディスクドライブ、固体ドライブ、その他のデータ格納デバイス等のデータの短期ストレージまたは長期ストレージのために構成された任意のタイプの１つまたは複数のデバイスとして実現されてよい。図１に示すように、データ格納デバイス１３４は、データ格納デバイス１３４の内部デバイス機能（たとえば、データ格納デバイス１３４からデータを読み出すために必要な物理ハードウェア操作）を制御するファームウェア１３６を含む。ファームウェア１３６が、上述したブータブルイメージ１１０に含まれる更新の対象物であってよい。ファームウェア１３６の更新中に、データ格納デバイス１３４に格納されているデータは、コンピューティングデバイス１０２の他のコンポーネントにアクセスすることができなくてよい。コンピューティングデバイス１０２は、１つのデータ格納デバイス１３４のみを含むものとして例示されているが、コンピューティングデバイス１０２は、それぞれが自身のファームウェア１３６を含む任意の数のデータ格納デバイス１３４を含んでよい。
【００２４】
コンピューティングデバイス１０２の一部の実施形態では、一次プロセッサ１１２からの、データ格納デバイス１３４からデータを取得したいという要求は、統合デバイスエレクトロニクス（ＩＤＥ）バス（場合によっては統合ドライブエレクトロニクスバスと称される場合もある）を利用して処理されてよい。この実施形態では、管理エンジン１２６が、ＩＤＥリダイレクト（ＩＤＥ−Ｒ）をこの要求に対して実行するよう構成されていてよい。ＩＤＥ−Ｒを行っている間は、管理エンジン１２６が、チップセット１２２のＩＤＥバスを管理して、一次プロセッサ１１２からの、データ格納デバイス１３４からデータを取得してほしいという要求を傍受する。これらの要求は、次に別のメモリデバイス（セキュアなメモリ１１８またはセキュアなメモリ１２８を含むがこれらに限定はされない）にリダイレクトされてよい。また他の実施形態では、管理エンジン１２６が、ユニバーサルシリアルバスリダイレクト（ＵＳＢ−Ｒ）を同様に実行するよう構成されていてよい。
【００２５】
図２を参照すると、コンピューティングデバイス１０２のコンポーネントに対する更新を管理するためのソフトウェア環境２００が示されている。ソフトウェア環境２００は、コンピューティングデバイス１０２、ファームウェア更新サーバ１０４、およびネットワーク１０６のうち１以上に実行、格納、および／または、送信されるソフトウェアおよびファームウェアモジュールを含む。したがって、コンピューティングデバイス１０２の、ファームウェア更新サーバ１０４の、およびネットワーク１０６のソフトウェア環境が図２に示されている（図１と同じ参照番号を利用して）。ソフトウェア環境２００は、図２には記載の明瞭性を期して描かれていない他のモジュール、アプリケーション、プログラム、および／またはデータを含んでよい。
【００２６】
ファームウェア更新サーバ１０４のソフトウェア環境は、更新を含むブータブルイメージ１１０を含んでいる。上述したように、一部の実施形態では、ブータブルイメージ１１０は、コンピューティングデバイス１０２の１以上のファームウェア更新および／またはソフトウェア更新を含んでよい。たとえばブータブルイメージ１１０は、コンピューティングデバイス１０２のデータ格納デバイス１３４のファームウェア１３６に対する更新を含んでいてよい。ブータブルイメージ１１０はさらに、コンピューティングデバイス１０２の通常のＯＳ環境とは別のコンピューティングデバイス１０２が実行する独立型ＯＳ環境を含んでよい。たとえば一部の実施形態では、ブータブルイメージ１１０は、ディスクオペレーティングシステム（ＤＯＳ）環境等を含んでよい。コンピューティングデバイス１０２がこの独立型ＯＳ環境で実行し始めると、更新をコンピューティングデバイス１０２の適切なコンポ―ネント（たとえばデータ格納デバイス１３４）に実装することができる。後で詳述するように、更新を含むブータブルイメージ１１０は、セキュリティ面を考慮してファームウェア更新サーバ１０４によってデジタル署名されていてよい。ファームウェア更新サーバ１０４の幾つかの動作例をさらに図３を参照して以下に記載する。
【００２７】
コンピューティングデバイス１０２のソフトウェア環境は、更新マネージャ１１６、ＢＩＯＳ１２４、管理エンジン１２６、データ格納ファームウェア１３６、およびセキュアなメモリ２０２を含む。図１を参照して記載したように、セキュアなメモリ２０２は、セキュアなメモリ１１８を形成するメインメモリ１２０の一部に、および／または、チップセット１２２に常駐しているセキュアなメモリ１２８内に常駐していてよい。いずれの実施形態であっても、セキュアなメモリ２０２は、管理エンジン１２６から直接アクセス可能であってよい（しかし、ソフトウェア環境２００の他のソフトウェア／ファームウェアモジュールからはアクセス可能ではなくてよい）（図２参照）。
【００２８】
更新マネージャ１１６は、コンピューティングデバイス１０２の一次プロセッサ１１２が実行してよい複数のソフトウェア／ファームウェアモジュールを含む。他の動作の中には、更新マネージャ１１６が、ファームウェア更新サーバ１０４と通信して、コンピューティングデバイス１０２のコンポーネントの更新が可能かどうかを判断して、可能である場合には、ファームウェア更新サーバ１０４からの更新を含むブータブルイメージ１１０を受信する。更新マネージャ１１６は、次に、受信したブータブルイメージ１１０を管理エンジン１２６に提供してよい。更新マネージャ１１６は、さらに、通常のＯＳ環境からコンピューティングデバイス１０２の再起動を要求することができる。一部の実施形態では、更新マネージャ１１６は、コンポーネントの更新が成功したかに関して、ファームウェア更新サーバ１０４と通信することができる。図４を参照して、更新マネージャ１１６の幾つかの動作例を後述する。
【００２９】
図２に示すように、管理エンジン１２６は、コンピューティングデバイス１０２の二次プロセッサ１３０によって実行されてよい複数のソフトウェア／ファームウェアモジュールを含む。上述したように、管理エンジン１２６は、コンピューティングデバイス１０２の一次プロセッサ１１２とは独立して動作することができる。更新マネージャ１１６からの更新を含むブータブルイメージ１１０を受信すると、管理エンジン１２６は、セキュアなメモリ２０２のブータブルイメージ１１０のローカルコピー２０４を格納してよい。一部の実施形態では、管理エンジン１２６は、受信したブータブルイメージ１１０および／またはセキュアなメモリ２０２に格納されているローカルコピー２０４の正当性を検証してよい。管理エンジン１２６は、ＢＩＯＳ１２４を、セキュアなメモリ２０２からデータを取得することで、ＩＤＥ−Ｒ（またはＵＳＢ−Ｒ）起動を実行するよう構成してよく、ＩＤＥ−Ｒ（またはＵＳＢ−Ｒ）要求を仲介してよい。管理エンジン１２６はさらに、更新マネージャ１１６と通信して、コンピューティングデバイス１０２の再起動を要求して、更新マネージャ１１６に対して、コンポーネント更新が成功したかを通知することができる。図５Ａおよび図５Ｂを参照して、管理エンジン１２６の幾つかの動作例を後述する。
【００３０】
ＢＩＯＳ１２４は、コンピューティングデバイス１０２のチップセット１２２が実行することができる複数のソフトウェア／ファームウェアモジュールを含む。ＢＩＯＳ１２４は、コンピューティングデバイス１０２の起動または再起動それぞれを行っている間、コンピューティングデバイス１０２のコンポーネントを初期化、識別して、ＯＳ環境をロードする。たとえば通常の起動シーケンスにおいては、ＢＩＯＳ１２４が、データ格納デバイス１３４のファームウェア１３６と通信して、通常のＯＳ環境をロードしてよい。しかし、管理エンジン１２６から受信した１以上の設定パラメータに呼応して、ＢＩＯＳ１２４は、代わりに、ＩＤＥ−Ｒデバイスまたは位置からコンピューティングデバイス１０２を起動してもよい。これらの実施形態では、ＢＩＯＳ１２４は、セキュアなメモリ２０２に格納されているローカルコピー２０４を利用してブータブルイメージ１１０の独立型ＯＳ環境をロードしてよい。ＢＩＯＳ１２４の幾つかの動作の例を、図６を参照しながら後述する。
【００３１】
図３を参照すると、ブータブルイメージ１１０をパッケージ化および配信する方法３００の簡略化されたフロー図が描かれている。一部の実施形態では、方法３００が、コンピューティングデバイス１０２のデータ格納デバイス１３４のためのファームウェア更新を含むブータブルイメージ１１０の準備に関している。例を挙げると、ＯＥＭが、方法３００を、コンポーネントのファームウェア更新を配信するために利用することができる。方法３００は、たとえば、コンピューティングデバイス１０２を含むシステム１００の他のコンポーネントとの協働により、ファームウェア更新サーバ１０４が実行することができる。
【００３２】
方法３００は、ファームウェア更新サーバ１０４が、更新を含むブータブルイメージ１１０を生成するブロック３０２から始められる。更新を含むブータブルイメージ１１０は、任意の自動または手動のプログラミングおよび／またはコンパイルプロシージャによって生成されてよい。ブータブルイメージ１１０を作成した後で、方法３００は、ファームウェア更新サーバ１０４が、ＯＥＭ鍵を利用してブータブルイメージ１１０をデジタル署名するブロック３０４に進む。このＯＥＭ鍵は、ブータブルイメージ１１０の受信者に、ブータブルイメージ１１０が正当であることを検証させる（後述する）。一部の実施形態では、ＯＥＭ鍵は、Rivest, Shamir, and Adleman (RSA)暗号アルゴリズムで生成されたファームウェア署名鍵（ＦＷＳＫ）であってよい。
【００３３】
ブロック３０４の後で、方法３００はブロック３０６に進み、ファームウェア更新サーバ１０４が、ネットワーク１０６上の更新が利用可能な１以上のコンピューティングデバイス１０２を通知する。一部の実施形態では、ブロック３０６が、更新が利用可能であり、ネットワーク１０６に接続されているすべてのコンピューティングデバイス１０２を通知することに関する。ブロック３０６の後で、方法３００はブロック３０８に進み、ファームウェア更新サーバ１０４が、１以上のコンピューティングデバイス１０２が更新を受信する準備ができたことを通知する応答を１以上のコンピューティングデバイス１０２から受信するまで待つ。
【００３４】
ブロック３０８で、ファームウェア更新サーバ１０４がコンピューティングデバイス１０２から応答を受信すると、方法３００はブロック３１０に進み、ファームウェア更新サーバ１０４が、更新を含むブータブルイメージ１１０を、ネットワーク１０６経由で、応答側のコンピューティングデバイス１０２に対して送信する。ブロック３１０で、更新を含むブータブルイメージ１１０が送信されると、受信側のコンピューティングデバイス１０２が、更新をローカルに適用しようと試みる（図４から図６を参照して後述する）。更新を適用しようと試みた後に、コンピューティングデバイス１０２は、ファームウェア更新サーバ１０４に対して、コンピューティングデバイス１０２の対象のコンポーネントに更新が成功裏に適用されたかを示すのに適切なメッセージを送信する。
【００３５】
こうしてブロック３１０の後で、方法３００はブロック３１２に進み、ファームウェア更新サーバ１０４が、更新が成功裏に適用されたかを示す応答をコンピューティングデバイス１０２から受け取るまで待つ。メッセージが、コンピューティングデバイス１０２が更新の適用に失敗した旨を示している場合には、方法３００はブロック３０６に戻り、ファームウェア更新サーバ１０４が、コンピューティングデバイス１０２に対して、更新を利用可能である旨を再度通知する。図３は、更新を含む１つのブータブルイメージ１１０のための方法３００を示しているが、ファームウェア更新サーバ１０４は、１以上のコンピューティングデバイス１０２に対して複数のブータブルイメージ１１０を同時にパッケージ化して配信することができてもよい。
【００３６】
図４を参照すると、ブータブルイメージ１１０に含まれる更新を管理する方法４００が簡略化されたフロー図で示されている。概して、方法４００は、ファームウェア更新サーバ１０４からブータブルイメージ１１０を受信して、ブータブルイメージ１１０を管理エンジン１２６に提供して、コンピューティングデバイス１０２を、管理エンジン１２６が要求しているように再起動することに関している。一部の実施形態では、方法４００は、さらに、更新の適用に成功したかに関するフィードバックをファームウェア更新サーバ１０４に提供することに関していてよい。方法４００は、たとえば、システム１００の他のコンポーネントと相互作用してよいコンピューティングデバイス１０２の他のコンポーネントの協働により、更新マネージャ１１６によって実行されてよい。
【００３７】
方法４００は、更新マネージャ１１６が、更新が利用可能である旨の通知を、ファームウェア更新サーバ１０４からネットワーク１０６経由で受信するのを待つブロック４０２から始まる。更新が利用可能であるとの通知を受信すると、更新マネージャ１１６は、コンピューティングデバイス１０２のコンポーネントに更新を適用することができるか、および、コンピューティングデバイス１０２が更新を受信する準備ができているかを判断してよい。これらの条件に合致すると、更新マネージャ１１６は、更新を含むブータブルイメージ１１０の受信準備が出来ている旨の通知を、ファームウェア更新サーバ１０４に提供する。
【００３８】
ブロック４０２の後で、方法４００はブロック４０４に進み、更新マネージャ１１６は、更新を含むブータブルイメージ１１０を、ファームウェア更新サーバ１０４からネットワーク１０６経由で受信する。一部の実施形態では、ブロック４０４でブータブルイメージ１１０を受信すると、更新マネージャ１１６は、ブータブルイメージ１１０を、メインメモリ１２０に、および／または、データ格納デバイス１３４に格納してよい。ブロック４０４で、更新を含むブータブルイメージ１１０が受信されると、方法４００は（および図５Ａから図５Ｂの方法５００も図６の方法６００の場合も）、コンピューティングデバイス１０２がネットワーク１０６上でファームウェア更新サーバ１０４と通信できるかどうかに関わらず、処理を進める。言い換えると、ファームウェア更新サーバ１０４にフィードバックを与える選択肢の他には（たとえば後述するブロック４１０および４１８）、コンピューティングデバイス１０２は、ファームウェア更新サーバ１０４とはさらに通信はせずに更新を適用してよい。
【００３９】
ブロック４０４の後で、方法４００はブロック４０６に進み、更新マネージャ１１６は、更新を含むブータブルイメージ１１０を、管理エンジン１２６に提供する。ブロック４０６で、ブータブルイメージ１１０が管理エンジン１２６に提供されると、管理エンジン１２６は、ブータブルイメージ１１０の正当性を検証しようと試み、ブータブルイメージ１１０のローカルコピー２０４をセキュアなメモリ２０２に格納して、ＩＤＥ−Ｒ起動のためにＢＩＯＳ１２４を設定して、コンピューティングデバイス１０２の再起動を要求する（図５Ａを参照して後述する）。
【００４０】
ブロック４０６の後で、方法４００はブロック４０８に進み、更新マネージャ１１６は、更新を含むブータブルイメージ１１０の正当性が確認されたかに関する通知を、管理エンジン１２６から待つ。ブータブルイメージ１１０が検証できず、管理エンジン１２６がエラーを更新マネージャ１１６に返すと、方法４００はブロック４１０に進む。ブロック４１０で、更新マネージャ１１６は、ファームウェア更新サーバ１０４に、更新に失敗したことを通知する（コンピューティングデバイス１０２が、この時点で、ネットワーク１０６でファームウェア更新サーバ１０４と通信できる場合）。ブロック４１０でファームウェア更新サーバ１０４に対して、更新の試みに失敗した旨を通知した後で、方法４００はブロック４２０に進み、更新マネージャ１１６は、コンピューティングデバイス１０２で現在実行されているＯＳからウォーム再起動を要求する。
【００４１】
ブロック４０８において、更新マネージャ１１６が、管理エンジン１２６から、ブータブルイメージ１１０が検証された旨を示すメッセージを受信した場合には、方法４００はブロック４１２に進む（ブロック４１０ではなくて）。ブロック４１２で、更新マネージャ１１６は、管理エンジン１２６からの、コンピューティングデバイス１０２の再起動要求を待つ。この要求が管理エンジン１２６から受信されると、方法４００はブロック４１４に進み、更新マネージャ１１６が、コンピューティングデバイス１０２で現在実行されているＯＳからウォーム再起動を要求する。ブロック４１４で再起動した後で（管理エンジン１２６がＩＤＥ−起動用にＢＩＯＳ１２４を設定したと想定して）、管理エンジン１２６は、ブータブルイメージ１１０のローカルコピー２０４の正当性を検証して、セキュアなメモリ２０２に対してＩＤＥ−Ｒ要求を仲介して、更新に成功したかを更新マネージャ１１６に通知する（図５Ｂを参照して後述する）。
【００４２】
ブロック４１４の後で、方法４００はブロック４１６に進み、更新マネージャ１１６は、更新に成功したかに関する通知を管理エンジン１２６から受け取るまで待つ。管理エンジン１２６がエラーを更新マネージャ１１６に返すと、方法４００はブロック４１０に進む。ブロック４１０で、更新マネージャ１１６は、ファームウェア更新サーバ１０４に対して、更新に失敗したことを通知する（コンピューティングデバイス１０２が、この時点で、ネットワーク１０６でファームウェア更新サーバ１０４と通信できる場合）。ブロック４１０でファームウェア更新サーバ１０４に対して、更新の試みに失敗した旨を通知した後で、方法４００はブロック４２０に進み、更新マネージャ１１６は、コンピューティングデバイス１０２で現在実行されているＯＳからウォーム再起動を要求する。
【００４３】
ブロック４１６において、更新マネージャ１１６が、管理エンジン１２６から、更新に成功した旨を示すメッセージを受信した場合には、方法４００はブロック４１８に進む（ブロック４１０ではなくて）。ブロック４１８で、更新マネージャ１１６は、ファームウェア更新サーバ１０４に対して、更新に成功したことを通知する（コンピューティングデバイス１０２が、この時点で、ネットワーク１０６でファームウェア更新サーバ１０４と通信できる場合）。ブロック４１８でファームウェア更新サーバ１０４に対して、更新の試みに成功した旨を通知した後で、方法４００はブロック４２０に進み、更新マネージャ１１６は、コンピューティングデバイス１０２で現在実行されているＯＳからウォーム再起動を要求する。
【００４４】
図５Ａおよび図５Ｂを参照すると、ブータブルイメージ１１０に含まれる更新を適用する方法５００を簡略化されたフロー図で示している。概して図５Ａに示す方法５００の部分は、ブータブルイメージ１１０の正当性を検証して、ブータブルイメージ１１０のローカルコピー２０４をセキュアなメモリ２０２に格納して、ＩＤＥ−Ｒ起動のためにＢＩＯＳ１２４を設定して、コンピューティングデバイス１０２の再起動を要求することに関する。概して図５Ｂに示す方法５００の部分は、ブータブルイメージ１１０のローカルコピー２０４の正当性を検証して、セキュアなメモリ２０２に対してＩＤＥ−Ｒを仲介して、更新に成功したかを更新マネージャ１１６に通知することに関する。方法５００は、たとえば、システム１００の他のコンポーネントと相互作用することができるコンピューティングデバイス１０２の他のコンポーネントとの協働によって、管理エンジン１２６によって実行されてよい。
【００４５】
方法５００は、管理エンジン１２６が、更新マネージャ１１６から、更新を含むブータブルイメージ１１０を受信するブロック５０２から開始される（方法４００のブロック４０６を参照しながら上述した）。ブロック５０２でブータブルイメージ１１０を受信した後で、方法５００はブロック５０４に進み、管理エンジン１２６が、ブータブルイメージ１１０の正当性を検証する。一部の実施形態では、ブロック５０４は、管理エンジン１２６が、管理エンジン１２６に格納されている（セキュアなメモリ１２８に格納されている）暗号／復号鍵を利用して、ブータブルイメージ１１０にデジタル署名されているＯＥＭ鍵を検証することに関する。
【００４６】
ブロック５０４の後で、方法５００はブロック５０６に進み、管理エンジン１２６が、ブータブルイメージ１１０に含まれる更新を適用するよう進めていいかを判断する。ブロック５０４でブータブルイメージ１１０の正当性が確認されなかった場合には、方法５００はブロック５０８に進み、管理エンジン１２６が、更新マネージャ１１６に対して、ブータブルイメージ１１０が検証されなかったことを示すメッセージを送る。ブロック５０６において、管理エンジン１２６が、ブータブルイメージ１１０の正当性を確認できたと判断した場合には、方法５００はブロック５１０に進み（ブロック５０８ではなくて）、管理エンジン１２６は、更新マネージャ１１６に対して、ブータブルイメージ１１０が検証されたことを示すメッセージを送る。
【００４７】
ブロック５１０で、管理エンジン１２６は、更新を含むブータブルイメージ１１０のローカルコピー２０４をセキュアなメモリ２０２に格納する。上述した通り、一部の実施形態では、ブロック５１０は、管理エンジン１２６が、ブータブルイメージ１１０のローカルコピー２０４を、セキュアなメモリ１１８を形成するメインメモリ１２０の一部に、および／または、チップセット１２２に常駐しているセキュアなメモリ１２８内に格納することに関していてよい。
【００４８】
ブロック５１０で、方法５００は、管理エンジン１２６が、ＩＤＥ−Ｒ起動を実行するようＢＩＯＳ１２４を設定してよいブロック５１２に進む。一部の実施形態では、ブロック５１２は、管理エンジン１２６が、ＢＩＯＳ１２４の１以上の設定パラメータを、コンピューティングデバイス１０２をＩＤＥ−Ｒデバイスまたは位置から起動するよう設定することに関している。ブロック５１２の後に、方法５００はブロック５１４に進み、管理エンジン１２６が、１以上の内部パラメータを、次のＩＤＥ−Ｒ起動の位置が、ブータブルイメージ１１０のローカルコピー２０４を格納する、セキュアなメモリ２０２の位置になるよう（ネットワーク１０６の遠隔ドライブの位置ではなく）設定する。ブロック５１４の後で、方法５００はブロック５１６に進み、管理エンジン１２６が、内部フラグ（たとえば「ＵＰＤＡＴＥ  ＢＯＯＴ」）を設定して、自身に対して、次の起動時に、ファームウェアを適用すべきである旨を知らせる。ブロック５１２から５１６は、コンピューティングデバイス１０２の次の起動時に、ブータブルイメージ１１０のローカルコピー２０４を実行して、そこに含まれる更新を適用するように、ＢＩＯＳ１２４と管理エンジン１２６とを設定する、という組み合わせられた効果を有する。ブロック５１６の後で、方法５００はブロック５１８に進み、管理エンジン１２６が、更新マネージャ１１６からのウォーム再起動を要求する（方法４００のブロック４１２を参照して上述した）。
【００４９】
図５Ｂに示すように、方法５００はブロック５２０へと続き、管理エンジン１２６が、更新マネージャ１１６によるコンピューティングデバイス１０２の再起動を待つ（方法４００のブロック４１４を参照して上述した）。コンピューティングデバイス１０２の再起動時に、方法５００はブロック５２２に進み、管理エンジン１２６が、ファームウェア更新を現在の起動中に適用するかを判断する。一部の実施形態では、ブロック５２２は、管理エンジン１２６が、内部フラグ（たとえば「ＵＰＤＡＴＥ  ＢＯＯＴ」）を設定するかを判断することに関する。ブロック５２２において、管理エンジン１２６は、適用準備ができている更新がないと判断すると、方法５００はブロック５２４に進み、管理エンジン１２６が、自身の通常の起動シーケンスを続ける。ブロック５２２中に、管理エンジン１２６が、適用準備が出来ている更新があると判断すると、方法５００はブロック５２６に進む（ブロック５２４ではなくて）。
【００５０】
ブロック５２６中に、管理エンジン１２６は、セキュアなメモリ２０２に格納されているブータブルイメージ１１０のローカルコピー２０４の正当性を検証する。一部の実施形態では、ブロック５２６は、管理エンジン１２６が、ブータブルイメージ１１０のローカルコピー２０４にデジタル署名されたＯＥＭ鍵を検証することに関していてよい。ブロック５２６の後に、方法５００はブロック５２８に進み、管理エンジン１２６が、ブータブルイメージ１１０のローカルコピー２０４に含まれる更新を適用するよう進めてよいかを判断する。ブロック５２６でローカルコピー２０４の正当性が確認されなかった場合には、方法５００はブロック５３０に進み、管理エンジン１２６が、更新マネージャ１１６に対して、ブータブルイメージ１１０が確認されなかったことを示すメッセージを送る。ブロック５２８において、管理エンジン１２６が、ローカルコピー２０４の正当性を確認できたと判断した場合には、方法５００はブロック５３２に進み（ブロック５３０ではなくて）、管理エンジン１２６は、更新マネージャ１１６に対して、ブータブルイメージ１１０のローカルコピー２０４が検証されたことを示すメッセージを送る。
【００５１】
ブロック５３２において、管理エンジン１２６は、ブロック５１４で設定された１以上の内部パラメータをチェックして、現在の起動中のＩＤＥ−Ｒ要求を、ブータブルイメージ１１０のローカルコピー２０４を格納するセキュアなメモリ２０２またはネットワーク１０６上の遠隔ドライブにダイレクトすべきであるかを判断する。ブロック５３２中に、管理エンジン１２６が、ＩＤＥ−Ｒ要求を遠隔ドライブに送るべきであると判断すると、方法５００はブロック５３４に進み、管理エンジン１２６が、伝統的なＩＤＥ−Ｒシーケンスを実行する（つまり、ＩＤＥバス読み取り要求をネットワーク１０６で遠隔ドライブにリダイレクトする）。ブロック５３２で、管理エンジン１２６がＩＤＥ−Ｒ要求をセキュアなメモリ２０２にローカルにダイレクトすべきであると判断した場合には、方法５００はブロック５３６に進む（ブロック５３４ではなくて）。
【００５２】
ブロック５３６において、管理エンジン１２６は、ＩＤＥバス読み取り要求をＢＩＯＳ１２４および／またはコンピューティングデバイス１０２の一次プロセッサ１１２から、セキュアなメモリ２０２に格納されているブータブルイメージ１１０のローカルコピー２０４にリダイレクトすることで、ＩＤＥ−Ｒシーケンスを仲介する。このプロシージャを利用すると、一次プロセッサ１１２は、ブロック５３６中に、ブータブルイメージ１１０のローカルコピー２０４に含まれる更新を適用する。一例である実施形態では、ブータブルイメージ１１０のローカルコピー２０４からの起動によって、一次プロセッサ１１２が、データ格納デバイス１３４のファームウェア１３６を更新することができてよい。ブロック５３８に示すように、管理エンジン１２６は、ブロック５３６の進捗状態を同時監視して、更新が適用されたかを判断する。
【００５３】
ブロック５３８で管理エンジン１２６が更新を完了したと判断すると、方法５００はブロック５４０に進み、管理エンジン１２６が、内部フラグ（たとえば「ＵＰＤＡＴＥ  ＢＯＯＴ」）をリセットして、自身に対して、次の起動時に、ファームウェア更新が既に適用された旨を知らせる。方法５００の一部の実施形態では、ブロック５４０がさらに、管理エンジン１２６が、ブータブルイメージ１１０を無効化して、後続する起動時にコンピューティングデバイス１０２に更新が再度適用されないようにすることにも関していてよい。ブロック５４０の後で、方法５００はブロック５４２に進み、管理エンジン１２６が、更新マネージャ１１６から、更新の適用に成功した旨を知らせるメッセージを送信する（方法４００のブロック４１６を参照して上述した）。
【００５４】
図６を参照すると、コンピューティングデバイス１０２の起動方法６００の簡略化されたフロー図が示されている。概して、方法６００は、コンピューティングデバイス１０２の現在の起動をＩＤＥ−Ｒ起動にして、コンピューティングデバイス１０２を適切な起動シーケンスに従って起動すべきかを判断することに関する。方法６００は、たとえば、システム１００の他のコンポーネントと相互作用してよい、コンピューティングデバイス１０２の他のコンポーネントとの協働により、ＢＩＯＳ１２４により実行されてよい。
【００５５】
方法６００は、ＢＩＯＳ１２４が、コンピューティングデバイス１０２の現在の起動がＩＤＥ−Ｒデバイスまたは位置からのものであるべきかを示す設定パラメータの１以上をチェックするブロック６０２から開始される。上述したように（方法５００のブロック５１２を参照して）、管理エンジン１２６は、ＢＩＯＳ１２４の１以上の設定パラメータを設定して、ＩＤＥ−Ｒ起動を実行すべきかを示してよい。ブロック６０２の後で、方法６００はブロック６０４に進み、ＢＩＯＳ１２４が、通常の起動シーケンスまたはＩＤＥ−Ｒ起動シーケンスのいずれかを進めるべきかを判断する。もしもブロック６０２でチェックされた１以上の設定パラメータが、ＩＤＥ−Ｒ起動を実行すべきであると示していない場合には、方法６００はブロック６０６に進み、通常の起動シーケンスをＢＩＯＳ１２４によって実行する（たとえばＢＩＯＳ１２４が、通常のＯＳ環境をデータ格納デバイス１３４からロードする）。ブロック６０４中に、ＢＩＯＳ１２４が、コンピューティングデバイス１０２の現在の起動がＩＤＥ−Ｒデバイスまたは位置からのものであるべきであると判断すると、方法６００はブロック６０８に進む（ブロック６０６ではなく）。
【００５６】
ブロック６０８中にＢＩＯＳ１２４は、読み取り要求を管理エンジン１２６に送信し、ここから、これらの読み取り要求は、自身の内部パラメータに基づいて、適切なＩＤＥ−Ｒデバイスまたは位置にリダイレクトされる。管理エンジン１２６がＩＤＥ−Ｒ要求をＢＩＯＳ１２４から、セキュアなメモリ２０２に格納されているブータブルイメージ１１０のローカルコピー２０４にリダイレクトするよう設定されている場合には（方法５００のブロック５３６を参照して上述したように）、方法６００はブロック６１０を含む。これらの状況においては、ＢＩＯＳ１２４は、コンピューティングデバイス１０２に適用すべき更新を含むブータブルイメージ１１０のローカルコピー２０４を利用してコンピューティングデバイス１０２を起動する。実行されると、ブータブルイメージ１１０は、コンピューティングデバイス１０２のそれぞれのコンポーネントに更新を適用する。一部の実施形態では、ブータブルイメージは、コンピューティングデバイス１０２に、更新が成功裏に完了したら再起動させる命令を含んでもよい。これら実施形態では、更新マネージャ１１６は、更新が成功裏に完了した場合には、再起動を要求しなくてもよい（つまり、方法４００のブロック４２０が更新マネージャ１１６によって実行されなくてもよい）。
【００５７】
本開示は図面および前述の記載に図示および記載されたが、これら図示および記載は、あくまで例であり、その性質上限定ではなく、実施形態のみが示され記載されており、本開示の精神内に含まれるすべての変形例および変更例を保護対象として意図している点を理解されたい。
［項目１］
コンピューティングデバイスにおいて、前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを受信する段階と、
前記ブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する段階と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する段階と、
前記コンピューティングデバイスを再起動する段階と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する段階と
を備える方法。
［項目２］
前記ブータブルイメージを受信する段階は、
デジタル署名されたブータブルイメージを更新サーバから受信する段階と、
前記ブータブルイメージの格納前に前記ブータブルイメージが前記更新サーバによってデジタル署名されていることを確認する段階と
を備える、項目１に記載の方法。
［項目３］
前記ブータブルイメージを格納する段階は、
前記ブータブルイメージを、前記コンピューティングデバイスの管理エンジンの専用メモリ位置に格納する段階を有し、
前記専用メモリ位置は、前記コンピューティングデバイスの一次プロセッサによってアクセスできない、項目１または２に記載の方法。
［項目４］
前記ブータブルイメージを格納する段階は、
前記ブータブルイメージを上位メモリ領域（ＵＭＡ）位置に格納する段階を有する、項目１から３のいずれか一項に記載の方法。
［項目５］
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する段階は、
統合デバイスエレクトロニクスリダイレクト（ＩＤＥ−Ｒ）用に前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を設定する段階を有する、項目１に記載の方法。
［項目６］
前記コンポーネントに対して前記更新を適用する段階は、
前記ブータブルイメージを利用してＩＤＥ−Ｒ要求に応答する段階を有する、項目５に記載の方法。
［項目７］
前記ＩＤＥ−Ｒ要求に応答する段階は、
前記コンピューティングデバイスの管理エンジンで前記ＢＩＯＳからのＩＤＥ−Ｒ要求を受信する段階と、
前記ＩＤＥ−Ｒ要求に対して、前記管理エンジンから、前記ブータブルイメージのデータで応答する段階と
を有する、項目６に記載の方法。
［項目８］
前記コンポーネントに対して前記更新を適用する段階は、
前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信する段階と、
前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答する段階と
を有する、項目１から７のいずれか一項に記載の方法。
［項目９］
前記コンポーネントに対して前記更新を適用する段階は、
前記コンポーネントのファームウェアを更新する段階を有する、項目１から８のいずれか一項に記載の方法。
［項目１０］
前記コンポーネントに対して前記更新を適用する段階は、
前記更新をハードディスクドライブに適用する段階を有する、項目１から８のいずれか一項に記載の方法。
［項目１１］
コンピューティングデバイスに、
前記コンピューティングデバイスのコンポーネントに対する更新を含むブータブルイメージを、前記コンピューティングデバイスのローカルの、セキュアなメモリ位置に格納する手順と、
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する手順と、
前記ブータブルイメージを利用して前記コンピューティングデバイスを再起動する手順と、
前記コンピューティングデバイスの前記再起動が行われると、前記コンポーネントに対して前記更新を適用する手順と
を実行させるプログラム。
［項目１２］
前記コンピューティングデバイスを、前記ブータブルイメージから起動するよう設定する手順は、
統合デバイスエレクトロニクスリダイレクト（ＩＤＥ−Ｒ）用に前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を設定する段階を有する、項目１１に記載のプログラム。
［項目１３］
前記コンポーネントに対して前記更新を適用する手順は、
前記ブータブルイメージを利用してＩＤＥ−Ｒ要求に応答する段階を有する、項目１２に記載のプログラム。
［項目１４］
前記ＩＤＥ−Ｒ要求に応答する段階は、
前記コンピューティングデバイスの管理エンジンで前記ＢＩＯＳからのＩＤＥ−Ｒ要求を受信して、前記ＩＤＥ−Ｒ要求に対して、前記管理エンジンから、前記ブータブルイメージのデータで応答する手順を含む、項目１３に記載のプログラム。
［項目１５］
前記コンポーネントに対して前記更新を適用する手順は、
前記コンピューティングデバイスの管理エンジンで、統合デバイスエレクトロニクスリダイレクト要求（ＩＤＥ−Ｒ要求）を受信する手順と、
前記ブータブルイメージを利用して前記ＩＤＥ−Ｒ要求に応答する手順と
を有する、項目１１から１４のいずれか一項に記載のプログラム。
［項目１６］
前記コンポーネントに対して前記更新を適用する手順は、
前記コンポーネントのファームウェアを更新する手順を有する、項目１１から１５のいずれか一項に記載のプログラム。
［項目１７］
前記コンポーネントに対して前記更新を適用する手順は、
前記更新をハードディスクドライブに適用する手順を有する、項目１１から１５のいずれか一項に記載のプログラム。
［項目１８］
コンピューティングデバイスであって、
起動デバイスと、
前記起動デバイスに対して起動要求を行う一次プロセッサと、
前記コンピューティングデバイスのコンポーネントのための更新を含むブータブルイメージを格納するセキュアなメモリ位置を有するローカルメモリデバイスと、
二次プロセッサを有し、前記起動デバイスからの前記一次プロセッサの前記起動要求を前記ブータブルイメージにリダイレクトすることで、前記更新を適用する管理エンジンと
を備える、コンピューティングデバイス。
［項目１９］
前記更新を適用する段階は、
統合デバイスエレクトロニクスリダイレクト（ＩＤＥ−Ｒ）用に前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を設定する段階を有する、項目１８に記載のコンピューティングデバイス。
［項目２０］
前記起動デバイスはハードディスクドライブであり、
前記更新は、前記ハードディスクドライブのファームウェアに対する更新である、項目１８または１９に記載のコンピューティングデバイス。
【図１】
0005767750.tif 000002
【図２】
0005767750.tif 000003
【図３】
0005767750.tif 000004
【図４】
0005767750.tif 000005
【図５Ａ】
0005767750.tif 000006
【図５Ｂ】
0005767750.tif 000007
【図６】
0005767750.tif 000008