(57)【要約】【課題】コンピュータシステムにおいてファームウェア更新を受信して処理するシステム、方法およびプログラム製品を提供すること。【解決手段】本コンピュータシステムはハイパーバイザと一つ以上のゲストオペレーティングシステムとを実行しており、ファームウェア更新はこのコンピュータシステムによってアクセス可能なハードウェア装置に対応している。このハードウェア装置は、更新可能なファームウェアを使用してプログラムされるタイプである。このコンピュータシステム内で動作するハイパーバイザは、受信されたファームウェア更新を、先ずゲストオペレーティングシステムの各々による装置の使用を禁止することによって処理する。ゲストオペレーティングシステムが装置の使用を禁止された後に装置内のファームウェアは、受信されたファームウェア更新を使用してハイパーバイザによってアップグレードされる。ファームウェアがアップグレードされた後に、ゲストオペレーティングシステムの各々は装置の使用を許可される。【選択図】        図１
2008243183.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいてファームウェア更新を受付けるステップを含むことを特徴とする、コンピュータによって実施される方法であって、
前記コンピュータシステムは、ハイパーバイザと一つ以上のゲストオペレーティングシステムとを実行しており、
前記ファームウェア更新は、前記コンピュータシステムによってアクセス可能なハードウェア装置に対応しており、
前記ハードウェア装置は、更新可能なファームウェアを含み、
前記ハイパーバイザは、前記ファームウェア更新の受信に応答して、
前記ゲストオペレーティングシステムの各々による前記装置の使用を禁止するステップと、
前記禁止するステップの後に、受信された前記ファームウェア更新を使用して前記ファームウェアをアップグレードするステップと、
前記アップグレードするステップの後に、前記ゲストオペレーティングシステムの各々に前記装置の使用を許可するステップと、によって動作することを特徴とする方法。
【請求項２】
前記ファームウェアのアップグレードに先立って前記ファームウェア更新を検証するステップを更に含み、
前記アップグレードは、前記ファームウェア更新の成功した検証に応じて実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記検証は更に、
ユーザから、前記コンピュータシステムへのファームウェア更新を制御するために使用されるパスワードを受信するステップと、
受信された前記パスワードを予期されるパスワードと比較するステップと、を含み、
前記アップグレードは、予期される前記パスワードと一致する、受信された前記パスワードに応じて実行されることを特徴とする請求項２に記載の方法。
【請求項４】
前記検証は更に、
受信された前記ファームウェア更新が、認可されたユーザによってディジタルに署名されていることを検証するステップを含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記検証は更に、
受信された前記ファームウェア更新に対してハッシュアルゴリズムを実行することにより、ハッシュ値を得るステップと、
前記ハッシュ値を予期されるハッシュ値と比較するステップと、
予期される前記ハッシュ値と一致しない前記ハッシュ値に応じて前記ファームウェア更新を拒否するステップと、
予期される前記ハッシュ値と一致する前記ハッシュ値に応じて前記ファームウェア更新を受け入れるステップと、を含むことを特徴とする請求項２に記載の方法。
【請求項６】
前記禁止するステップは更に、
前記ゲストオペレーティングシステムの各々から前記装置を取り外すステップと、
前記ゲストオペレーティングシステムの各々を中断するステップと、を含み、
前記許可するステップは更に、
前記ゲストオペレーティングシステムの各々を再開するステップと、
前記ゲストオペレーティングシステムの各々に前記装置を取り付けるステップと、を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記禁止するステップは更に、
前記ゲストオペレーティングシステムの一つ以上から受信された前記装置に関する一つ以上の要求をバッファ内にバッファ記憶するステップを含み、
前記許可するステップは更に、
前記バッファ記憶された要求の各々を前記装置に送るステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
一つ以上のプロセッサと、
前記プロセッサの少なくとも一つによってアクセス可能なメモリと、
前記プロセッサの少なくとも一つによってアクセス可能な不揮発性記憶領域と、
前記装置の動作を制御する更新可能なファームウェアを含み且つ前記プロセッサの少なくとも一つによってアクセス可能なハードウェア装置と、
前記メモリと前記不揮発性記憶領域とに記憶されていて前記プロセッサによって実行されるハイパーバイザおよび一つ以上のゲストオペレーティングシステムと、
前記ハイパーバイザによって実行される１セットの命令と、を備え、
前記プロセッサの一つ以上は、
前記ハードウェアに対応するファームウェア更新を受信する処理と、
前記ファームウェア更新の受信に応じて前記ゲストオペレーティングシステムの各々による前記装置の使用を禁止する処理と、
前記禁止の後に前記受信されたファームウェア更新を使用して前記ファームウェアをアップグレードする処理と、
前記アップグレードの後に、前記ゲストオペレーティングシステムの各々に前記装置の使用を許可する処理と、を実行するための１セットの命令を実行することを特徴とする情報処理システム。
【請求項９】
前記１セットの命令は更に、
前記ファームウェアのアップグレードに先立って前記ファームウェア更新を検証する処理を含み、
前記アップグレードは前記ファームウェア更新の成功した妥当性検証に応じて実行され、
前記検証は、
ユーザから、前記コンピュータシステムへのファームウェア更新を制御するために使用されるパスワードを受信するステップと、
受信された前記パスワードを予期されるパスワードと比較するステップと、を含み、
前記アップグレードは、予期される前記パスワードと一致する、受信された前記パスワードに応じて実行されるもことを特徴とする請求項８に記載の情報処理システム。
【請求項１０】
前記１セットの命令は更に、
前記ファームウェアのアップグレードに先立って前記ファームウェア更新を検証する処理を含み、
前記アップグレードは前記ファームウェア更新の成功した妥当性検証に応じて実行され、
前記検証は、
前記受信されたファームウェア更新が認可されたユーザによってディジタルに署名されていることを検証するステップを含むことを特徴とする請求項８に記載の情報処理システム。
【請求項１１】
前記１セットの命令は更に、
前記ファームウェアのアップグレードに先立って前記ファームウェア更新を検証する処理を含み、
前記アップグレードは前記ファームウェア更新の成功した妥当性検証に応じて実行され、
前記検証は、
受信された前記ファームウェア更新に対してハッシュアルゴリズムを実行することにより、ハッシュ値を得るステップと、
前記ハッシュ値を、予期されるハッシュ値と比較するステップと、
予期される前記ハッシュ値と一致しない前記ハッシュ値に応じて前記ファームウェア更新を拒否するステップと、
予期される前記ハッシュ値と一致する前記ハッシュ値に応じて前記ファームウェア更新を受け入れるステップと、を含むことを特徴とする請求項８に記載の情報処理システム。
【請求項１２】
前記禁止する処理を実行する命令は、
前記ゲストオペレーティングシステムの各々から前記装置を取り外すステップと、
前記ゲストオペレーティングシステムの各々を中断するステップと、を含む第１のセットの処理を実行するための命令を含み、
前記許可する処理を実行する命令は更に、
前記ゲストオペレーティングシステムの各々を再開するステップと、
前記ゲストオペレーティングシステムの各々に前記装置を取り付けるステップと、を含む第２のセットの行動を実行するための命令を含む、ことを特徴とする請求項８に記載の情報処理システム。
【請求項１３】
前記禁止する処理を実行する命令は、
前記ゲストオペレーティングシステムの一つ以上から受信された前記装置に関する一つ以上の要求を前記メモリ内に記憶されたバッファ内にバッファ記憶するステップを含む第１のセットの処理を実行するための命令を含み、
前記許可する処理を実行する命令は、
前記バッファ記憶された要求の各々を前記装置に送るステップを含む第２の処理を実行するための命令を含む、ことを特徴とする請求項８に記載の情報処理システム。
【請求項１４】
コンピュータシステムにおいてファームウェア更新を受信するための機能的で記述的な要素を含むコンピュータ読み取り可能媒体に記憶されるコンピュータプログラムプロダクトにおいて、
前記要素は、
前記コンピュータシステムはハイパーバイザと一つ以上のゲストオペレーティングシステムとを実行しており、
前記ファームウェア更新は前記コンピュータシステムによってアクセス可能なハードウェア装置に対応しており、
前記ハードウェア装置は更新可能なファームウェアを含んでおり、
前記ハイパーバイザは、前記ファームウェア更新の受信に応答して
前記ゲストオペレーティングシステムの各々による前記装置の使用を禁止する処理と、
前記禁止する処理の後に、受信された前記ファームウェア更新を使用して前記ファームウェアをアップグレードする処理と、
前記アップグレードする処理の後に、前記ゲストオペレーティングシステムの各々に前記装置の使用を許可する処理と、
をデータ処理システムに実行させることを特徴とするコンピュータプログラムプロダクト。
【請求項１５】
前記要素は、
前記ファームウェアのアップグレードに先立って前記ファームウェア更新を検証する処理をさらに前記データ処理システムに実行させ、
前記アップグレードは前記ファームウェア更新の成功した妥当性検証に応じて実行されることを特徴とする請求項１４に記載のコンピュータプログラムプロダクト。
【請求項１６】
前記検証を実行する前記要素は、前記ファームウェアのアップグレードに先立って前記ファームウェア更新を検証する処理を含み、
前記アップグレードは前記ファームウェア更新の成功した妥当性検証に応じて実行され、
前記検証は、
ユーザから、前記コンピュータシステムへのファームウェア更新を制御するために使用されるパスワードを受信するステップと、
受信された前記パスワードを予期されるパスワードと比較するステップと、を含み、
前記アップグレードは、予期される前記パスワードと一致する、受信された前記パスワードに応じて実行される、ことを特徴とする請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１７】
前記検証を実行する前記要素は、
受信された前記ファームウェア更新が、認可されたユーザによってディジタルに署名されていることを検証するステップを含むことを特徴とする請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１８】
前記検証を実行する前記要素は、
受信された前記ファームウェア更新に対してハッシュアルゴリズムを実行することにより、ハッシュ値を得るステップと、
前記ハッシュ値を、予期されるハッシュ値と比較するステップと、
予期される前記ハッシュ値と一致しない前記ハッシュ値に応じて前記ファームウェア更新を拒否するステップと、
予期される前記ハッシュ値と一致する前記ハッシュ値に応じて前記ファームウェア更新を受け入れるステップと、
を含むことを特徴とする請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１９】
前記要素は、
前記ゲストオペレーティングシステムの各々から前記装置を取り外すステップと、前記ゲストオペレーティングシステムの各々を中断するステップと、を更に含む前記禁止する処理と、
前記ゲストオペレーティングシステムの各々を再開するステップと、前記ゲストオペレーティングシステムの各々に前記装置を取り付けるステップと、を更に含む前記許可する処理と、をさらに前記データ処理システムに実行させることを特徴とする請求項１５に記載のコンピュータプログラムプロダクト。
【請求項２０】
前記要素は、
前記ゲストオペレーティングシステムの一つ以上から受信された前記装置に関する一つ以上の要求をバッファ内にバッファ記憶するステップを更に含む前記禁止する処理と、
前記バッファ記憶された要求の各々を前記装置に送るステップを更に含む前記許可する処理と、をさらに前記データ処理システムに実行させることを特徴とする請求項１５に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェア装置を確実に更新するシステムとその方法とに関する。特に本発明は、ファームウェア装置を更新するための安定な環境を与えるためにハイパーバイザを使用するシステムと方法とに関する。
【背景技術】
【０００２】
ファームウェアは、ハードウェア装置上にプログラムされたソフトウェアプログラムまたは１セットの命令である。ファームウェアは、装置が主要なシステムを含む他のコンピュータハードウェアとどのように通信するかを制御する命令を与える。また、ファームウェアは、典型的にはハードウェア装置のフラッシュＲＯＭ（読取専用メモリ）に記憶される。ＲＯＭは一般に「読取専用メモリ」を意味するが、フラッシュＲＯＭは消去および書換えが可能であるタイプのフラッシュメモリである。
【０００３】
ファームウェアは、ファームウェアアップデーター（ｆｉｒｍｗａｒｅ  ｕｐｄａｔｅｒ）によって更新されない限り同じ状態を維持するので、「半永久的」と考えることができる。ハードドライブおよびビデオカードといったある幾つかの装置のファームウェアは、これらが正しく働くために（例えばコンピュータシステムにインストールされる新しいオペレーティングシステムのために）、時々更新する必要がある。ファームウェアはまた、装置の機能と効率とを改善するためにも更新される。例えばＣＤおよびＤＶＤドライブの製造業者はしばしば、これらのドライブがより高速の媒体を読み取ることを可能にするファームウェア更新を利用可能にする。
【０００４】
製造業者は、ホストコンピュータシステムからファームウェアをロードすることがより安価で、より柔軟であることを見出している。その結果、現在の多くのハードウェアは、ホストコンピュータからの必要なファームウェアの供給が完了するまでは、如何なる有用な仕方においても機能できない。このファームウェアのロードは、装置ドライバによって処理される。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ファームウェアは、ある幾つかの点でオペレーティングシステムと同程度の動作システムのソフトウェアコンポーネントである。しかしながら従来のコンピュータシステムは、大抵の最新のオペレーティングシステムとは異なり、バグを取り除くための且つ装置が出荷された後に検出された機能的な問題に取り組むための洗練されたファームウェア更新機構が欠如しているという難題を突きつけられている。
【０００６】
従来のファームウェア更新の直面するもう一つの難題は、ファームウェアのバージョンを検出してこれらを更新するための機構が標準化されていないことである。その結果、これらの装置は、最新のコンピュータシステムの他の部分と比較して、遥かに高いパーセンテージでファームウェア駆動の機能的な問題を持つ傾向がある。
【０００７】
ファームウェア更新に関する難題は、最新のコンピュータシステムがますます複雑になっているという事実により悪化している。最新のコンピュータシステムは、所定の時間にシステム上で動作する二つ以上のオペレーティングシステムを有し得る。更に、ソフトウェアウィルスのような増加傾向にある多くのプログラムは悪質である。これらの悪質なアプリケーションは、大抵の従来システムにおいて装置のファームウェアを更新する、または削除さえする可能性を有している。これらの難題は、組織内のヘルプデスクによって追跡され、管理され得る装置ドライバを含む標準ソフトウェアを有する安定なシステムを望む大きな組織においてますます明らかになっている。
【課題を解決するための手段】
【０００８】
上記の難題は、コンピュータシステムにおいてファームウェア更新を受信して処理するシステム、方法およびコンピュータプログラム製品を使用して解決されることが発見されている。このコンピュータシステムは、ハイパーバイザと一つ以上のゲストオペレーティングシステムとを実行しており、ファームウェア更新はこのコンピュータシステムによってアクセス可能なハーウェア装置に対応する。このハードウェア装置は更新可能なファームウェアを使用してプログラムされるタイプである。このコンピュータシステム内で動作するハイパーバイザは、ゲストオペレーティングシステムの各々による装置の使用を先ず禁止することによって受信されたファームウェア更新を処理する。ゲストオペレーティングシステムが装置の使用を禁止された後に、装置内のファームウェアは受信されたファームウェア更新を使用してハイパーバイザによってアップグレードされる。ファームウェアがアップグレードされた後に、ゲストオペレーティングシステムの各々は、装置の使用を許可される。
【０００９】
一実施形態ではファームウェアをアップグレードするに先立って、ファームウェア更新が妥当性検証される。この実施形態ではアップグレードは、ファームウェア更新の成功した妥当性検証に応じてだけ実行される。
【００１０】
更なる妥当性検証実施形態では妥当性検証は、コンピュータシステムのユーザからのファームウェア更新を制御するために使用されるパスワードを受信することを含む。ユーザによって供給されたパスワードは、予期されるパスワードと比較される。この実施形態ではアップグレードは、受信されたパスワードが期待されるパスワードと一致したときにだけ実行される。
【００１１】
別の妥当性検証実施形態では、受信されたファームウェア更新に含まれるディジタル署名が分析される。この実施形態ではアップグレードは、受信されたファームウェア更新が認可されたユーザによってディジタルに署名されていることを検証した後にだけ、実行される。例えば非対称キーを使用して認可されたユーザは、認可されたユーザの秘密キーを使用してファームウェア更新にディジタルに署名（暗号化）する。ハイパーバイザは、認可されたユーザのパブリックキーを使用して、署名されたファームウェア更新を解読することによってディジタル署名を検証する。
【００１２】
更に別の妥当性検証実施形態ではハイパーバイザは、受信されたファームウェア更新に対してハッシュアルゴリズムを実行し、ハッシュ値という結果をもたらす。このハッシュ値は、予期されるハッシュ値と比較される。この実施形態ではファームウェア更新は、予期されたハッシュ値と一致しないハッシュ値に応じて拒否され、またこのファームウェア更新は、予期されたハッシュ値と一致するハッシュ値に応じて受け入れられる。例えばシステム管理者は、ファームウェア更新に関して予期されるハッシュ値を供給できる。それからコンピュータシステムは、インターネットからアクセス可能なウェブサイトといった公のソースからファームウェア更新をダウンロードできる。ハイパーバイザは、ダウンロードされたファームウェア更新に対してハッシュアルゴリズムを実行することによってこのファームウェア更新が有効であることを検証する。もしハッシュ値が、おそらく悪意のコードを含んだ偽のファームウェア更新を示して、予期されるハッシュ値と一致しなければ、ハイパーバイザはこのファームウェア更新を拒否する。
【００１３】
一実施形態では更新されつつある装置の使用を禁止するために、ハイパーバイザはゲストオペレーティングシステムの各々から装置を取り外す。それからハイパーバイザはゲストオペレーティングシステムの各々を中断する。装置のファームウェアがアップグレードされた後にハイパーバイザは、ゲストオペレーティングシステムの各々を再開し、ゲストオペレーティングシステムが再開された後にゲストオペレーティングシステムの各々に装置を取り付けることによって装置の使用を許可する。
【００１４】
一実施形態では更新されつつある装置の使用を禁止するために、ハイパーバイザはゲストオペレーティングシステムから受信された要求をバッファ内にバッファ記憶する。装置のファームウェアがアップグレードされた後に、ハイパーバイザはバッファ記憶された要求を装置に送ることによって装置の使用を許可する。
【００１５】
上述した内容は概要であるので、必然的に、単純化、一般化、詳細の省略を含んでいる。よって、当業者であれば、その概要が一例に過ぎず、いかなる意味でも限定を意図するものではないことが理解できよう。請求項によってのみ定義される、本発明の他の態様、発明的特徴、利点は、以下に説明される非限定的な詳細な説明において明らかになる。
【００１６】
添付の図面を参照することにより、本発明はより理解され、その数多くの目的、特徴、利点は当業者にとって明白になろう。
【発明を実施するための最良の形態】
【００１７】
以下の説明は、本発明の例の詳細の提示を目的としており、本発明そのものを限定するものではない。むしろ、あらゆる変形を、本説明に続く請求項において定義される本発明の範囲に含まることができる。
【００１８】
図１は、ハイパーバイザを使用して装置ファームウェアを更新する際に使用される選択されたコンピュータコンポーネントを示すハイレベルの図である。選択されたコンピュータシステムコンポーネント１００は、一つ以上のゲストオペレーティングシステムが動作するハイパーバイザ１１０を含む。図示の実施形態では二つのゲストオペレーティングシステムがハイパーバイザ１１０の制御下で動作している。ゲストオペレーティングシステムの例は、リナックス（Ｌｉｎｕｘ（登録商標））オペレーティングシステム１２０とマイクロソフトウィンドウズ（Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標））オペレーティングシステム１３０（Ｗｉｎｄｏｗｓ  ＸＰ（登録商標）、Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）などといった）とを含む。
【００１９】
ファームウェア更新ソース１４０は、コンピュータシステムにアクセス可能な装置のファームウェアをアップグレードするために使用されているファームウェア更新の任意の利用可能なソースを含む。ファームウェア更新ソースの例は、ディスケット、ＣＤ−ＲＯＭ、およびインターネットまたはローカルエリアネットワーク（ＬＡＮ）といったコンピュータネットワーク１５０からアクセス可能なファイルを含む。ネットワークアクセス可能なファイルは、インターネット上のウェブサイトからアクセス可能なファームウェア更新または従業員のために組織によって与えられたＬＡＮといったＬＡＮからアクセス可能な共有ネットワークドライブからアクセス可能なファイルを含む。ファームウェア更新はしばしば、製造業者の装置の機能を改善または提供するために製造業者のウェブサイトから利用可能である。ここに示された処理は、コンピュータネットワーク１５０上で見出されるファームウェア更新が合法的（すなわち承認された）更新であることを検証するために使用され、またコンピュータシステムの動作を損傷または混乱させるように設計された悪意のコードを含む可能性のある偽のファームウェア更新のインストールを防止するために使用され得る。
【００２０】
図示の例では選択されたコンピュータシステム１００は、各々が装置の動作を制御するアップグレード可能なファームウェアを有するコンピュータシステムからアクセス可能である二つの装置（１８０および１９０）を含む。このような装置の例は、ドライブコントローラとビデオアダプタとを含む。これらの装置の製造業者はしばしば、装置のファームウェアにインストールされるファームウェア更新を供給する。ファームウェア更新は、装置の動作を制御するために使用されるソフトウェアを含む。ある幾つかの場合に装置は、装置のファームウェアにインストールされるソフトウェアなしで出荷される。これらの場合には、ファームウェア更新は、装置の機能を与えるために装置のファームウェアにロードされる初期ファームウェア（ソフトウェア）を含む。ある幾つかのファームウェア更新は特定の装置に固有のものであるが、他のファームウェア更新は「一般的」であって幅広い種々の装置に適用可能である。例えば一般的なビデオアダプタファームウェアは、ビデオアダプタの基本的機能を与えるために幅広い種々のビデオアダプタに適用可能である。一般的または基本的なファームウェア更新はしばしば、オペレーティングシステムに含まれており、オペレーティングシステムを最初に構成するときに装置を初期化するために使用される。
【００２１】
図２は、ハイパーバイザを使用して装置ファームウェアを更新するために取られるステップを示すハイレベルの流れ図である。処理は２００で始まり、ステップ２１０でコンピュータシステムのユーザは、ユーザのコンピュータシステムにアクセス可能である装置内にインストールするファームウェア更新を選択する。コンピュータシステム上のファームウェアが保護されているかどうかに関する決定が行われる（決定２２０）。もしコンピュータシステム上のファームウェアが保護されていれば、決定２２０は「はい」の分岐２２５に分岐し、予め定義されたプロセス２３０でファームウェア更新の完全性が種々の異なる妥当性検証技法の一つ以上を使用して検証される（処理の詳細については図３と対応するテキストとを参照すること）。妥当性検証が実行された後に、このファームウェア更新が有効であるかどうかに関する決定が行われる（決定２４０）。もしこのファームウェア更新が有効でなければ、決定２４０は「いいえ」の分岐２４８に分岐して、処理は装置のファームウェアを更新せずに２９５で終了する。他方、もし更新が有効であれば、決定２４０は「はい」の分岐２４４に分岐して、ファームウェア更新処理を続行する。決定２２０に戻って、もしファームウェアが保護されていなければ、決定２２０は「いいえ」の分岐２４６に分岐して、妥当性検証ステップ２３０および２４０をバイパスする。
【００２２】
ファームウェア更新処理は、ファームウェア更新のためにコンピュータシステムに準備させることによって続行する（予め定義された処理２５０、処理の詳細については図４と対応するテキストとを参照すること）。ファームウェア更新のためにコンピュータシステムに準備させることは、更新が完了するまで更新されている装置の使用をゲストオペレーティングシステムに禁止することを含む。コンピュータシステムがファームウェア更新を受け入れる準備を完了した後に、ステップ２６０で装置のファームウェアはファームウェア更新コードを使用してアップグレードされる。装置のファームウェアがアップグレードされた後に、予め定義された処理２７０で更新は、コンピュータシステム上で初期化される（処理の詳細については図５と対応するテキストとを参照すること）。更新の初期化は、ゲストオペレーティングシステムに装置の使用を許可することを含む。それから装置のファームウェアのハイパーバイザ更新は２９５で終了する。
【００２３】
図３は、ファームウェア更新ソフトウェアの完全性を検証するために取られるステップを示す流れ図である。このルーチンは、図２に示す予め定義された処理２３０から呼び出される。図３でファームウェア更新の妥当性検証は、３００で始まり、そこでコンピュータシステムからアクセス可能な装置のファームウェアの更新を制御するためにパスワードが使用されるかどうかに関する決定が行われる（決定３０５）。例えば、ある組織においてシステム管理者は、装置ファームウェアを更新する責任を持ち得る。このような組織ではユーザは、装置のファームウェアを更新するためにパスワードを供給する必要があるであろう。もし装置のファームウェアを更新するために必要とされるパスワードが供給されなければ、ハイパーバイザはユーザがファームウェアを更新することを許可しない。もし装置ファームウェアの更新を制御するためにパスワードが使用されていれば、決定３０５は「はい」の分岐３０８に分岐して、ステップ３１０でユーザは装置ファームウェアを更新するために使用される（認可された）パスワードを催促される。ステップ３１５でハイパーバイザは、ユーザによって供給されたパスワードを、記憶されている認可されたパスワードと比較する。ユーザによって供給されたパスワードがファームウェアの更新を制御するために使用されるパスワードと一致するかどうかに関する決定が行われる（決定３２０）。もしユーザによって供給されたパスワードがファームウェアの更新を制御するために使用される認可されたパスワードと一致しなければ、決定３２０は「いいえ」の分岐３２２に分岐して、処理は更新が無効であることを示すリターンコードをもって３２５で呼び出しルーチンに戻る（リターンコードの受信時に呼び出しルーチンによって実行される処理については図２の決定２４０を参照すること）。他方、もしユーザによって供給されたパスワードが装置ファームウェアの更新を制御するために使用されるパスワードと一致すれば、決定３２０は「はい」の分岐３２６に分岐して、ファームウェア更新の完全性の検証を続行する。決定３０５に戻って、もしパスワードが装置ファームウェアを更新するために必要とされなければ、決定３０５は「いいえ」の分岐３２８に分岐して、ステップ３１０〜３２５をバイパスする。
【００２４】
ファームウェア更新を検証するためにディジタル署名が使用されるかどうかに関する決定が行われる（決定３３０）。もしディジタル署名が使用されていれば、承認されたファームウェア更新は管理者といった認可されたユーザによってディジタルに署名される。ファームウェア更新にディジタルに署名する一つの方法は、認可されたユーザがファームウェア更新を暗号化するための秘密キーを使用してファームウェア更新にディジタルに署名する場合に非対称キーを使用することによることである。ディジタルに署名された（暗号化された）ファームウェア更新は、認可されたユーザのパブリックキーを使用して解読され得る。もしディジタル署名が使用されていれば、決定３３０は「はい」の分岐３３２に分岐して、ステップ３３５でハイパーバイザは、認可されたユーザ（例えばシステム管理者）に対応するパブリックキーを使用してファームウェア更新を解読しようと試みる。認可されたユーザの秘密キーを使用して暗号化されたファームウェア更新をパブリックキーが解読できたかどうかに基づいて、ディジタル署名が有効であるかどうかに関する決定が行われる（決定３４０）。もしディジタル署名が検証されなければ、決定３４０は「いいえ」の分岐３４２に分岐して、処理は更新が無効であることを示すリターンコードをもって３４５で呼び出しルーチンに戻る（リターンコードの受信時に呼び出しルーチンによって実行される処理については図２の決定２４０を参照すること）。他方、もしディジタル署名が検証されれば、決定３４０は「はい」の分岐３４６に分岐して、ファームウェア更新の完全性の検証を続行する。決定３３０に戻って、もしディジタル署名がファームウェア更新を検証するために使用されていなければ、決定３３０は「いいえ」の分岐３４８に分岐して、ステップ３３５〜３４５をバイパスする。
【００２５】
ファームウェア更新がハッシュテーブルを使用して制御されるかどうかに関する決定が行われる（決定３５０）。ハッシュテーブルを使用することは、システム管理者が種々のファームウェア更新に対応する予期されるハッシュ値のリストを与えることを可能にする。このように実際のファームウェア更新は、ウェブサイトのセキュリティが未知であるインターネットからアクセス可能な公のウェブサイトから検索可能である。もしファームウェア更新がハッシュテーブルを使用して制御されていれば、決定３５０は「はい」の分岐３５５に分岐して、ステップ３６０でハイパーバイザは、ユーザによってダウンロードされたファームウェア更新に対してハッシュアルゴリズムを実行する。ハッシュアルゴリズムの実行は、ハッシュ値という結果をもたらす。ステップ３６５でハイパーバイザは、種々の承認されたファームウェア更新に対応する予期されるハッシュ値のリストを含む比較テーブル３７０から予期されるハッシュ値を検索することによって、ハッシュアルゴリズムの結果から得られたハッシュ値と予期されるハッシュ値とを比較する。比較テーブル３７０は、ハッシュアルゴリズムが所定のファームウェア更新ファイルに対して実行されるときに予期されるハッシュ値と共にファームウェア更新のファイル名といったファームウェア更新に関する情報を識別することを含む。もしファームウェア更新ファイルが偽造されたり、変更されたり、さもなければ損傷されたりしたならば、ハッシュ値は予期されるハッシュ値と一致しないであろう。ハッシュアルゴリズムの結果から得られたハッシュ値が予期されるハッシュ値と一致するかどうかに関する決定が行われる（決定３７５）。もしハッシュアルゴリズムの結果から得られたハッシュ値が予期されるハッシュ値と一致しなければ、決定３７５は「いいえ」の分岐３７８に分岐して、処理は更新が無効であることを示すリターンコードをもって３８０で呼び出しルーチンに戻る。他方、もしハッシュアルゴリズムの結果から得られたハッシュ値が予期されるハッシュ値と一致すれば、決定３７５は「はい」の分岐３８５に分岐して、リターンコードはファームウェア更新が検証されたことを示す呼び出しルーチンに戻される。決定３５０に戻って、もしファームウェア更新がハッシュテーブルを使用して制御されなければ、決定３５０は「いいえ」の分岐３９０に分岐して、リターンコードはファームウェア更新が検証されたことを示す呼び出しルーチンに戻される。リターンコードの受信時に呼び出しルーチンによって実行される処理については図２の決定２４０を参照すること。
【００２６】
図４は、コンピュータシステムにファームウェア更新の準備させるためにハイパーバイザによって取られるステップを示す流れ図である。処理は、４００で始まり、ステップ４１０でハイパーバイザの下で動作している第１のゲストオペレーティングシステムは、ハイパーバイザの下で動作しているゲストオペレーティングシステムのハイパーバイザのリスト４２０から検索される。ステップ４２５でハイパーバイザは、選択されたオペレーティングシステムから装置を取り外す。ゲストオペレーティングシステムが中断されているかどうか、あるいはゲストオペレーティングシステムによって装置に向けられた要求がハイパーバイザによってバッファ記憶されているかどうかに関する決定が行われる（決定４３０）。一実施形態では、ゲストオペレーティングシステムの各々は同じように取り扱われる（いずれも中断されるか、要求がバッファ記憶される）が、別の実施形態では各オペレーティングシステムは特定のゲストオペレーティングシステムと更新されつつある装置との特性に基づいて異なるように取り扱われる可能性がある（すなわち、ある幾つかのゲストオペレーティングシステムは他のものよりよく中断されるように扱われるが、ある幾つかの装置は装置への種々の要求のバッファ記憶をより困難にするように極めて頻繁に使用される）。ハイパーバイザは、ゲストオペレーティングシステムを中断すべきか、装置に対するゲストオペレーティングシステムの要求をバッファ記憶すべきかどうかを決定する。もしゲストオペレーティングシステムが中断されていれば、決定４３０は「はい」の分岐４４５に分岐して、ステップ４５０で選択されたゲストオペレーティングシステムは中断される。他方、もし選択されたゲストオペレーティングシステムから装置への要求がバッファ記憶されていれば、決定４３０は「いいえ」の分岐４５５に分岐して、ステップ４６０で選択されたゲストオペレーティングシステムから更新されつつある装置への要求はハイパーバイザによってバッファ記憶される。
【００２７】
ハイパーバイザの下で動作している、より多くのゲストオペレーティングシステムが存在するかどうかに関する決定が行われる（決定４７０）。もしハイパーバイザの下で動作している、より多くのゲストオペレーティングシステムが存在すれば、決定４７０は「はい」の分岐４７５に分岐して、ステップ４８０で次のゲストオペレーティングシステムがリスト４２０から選択され、処理は新しく選択されたゲストオペレーティングシステムが装置を使用するのを禁止するためにループバックする（ゲストオペレーティングシステムを中断するか、ゲストオペレーティングシステムによる装置への要求をバッファ記憶するか、いずれかによって）。このルーピングは、ハイパーバイザの下で動作しているすべてのゲストオペレーティングシステムが処理されるまで続き、この時点で決定４７０は「いいえ」の分岐４８５に分岐する。
【００２８】
ステップ４９０でハイパーバイザは、このハイパーバイザがファームウェア更新を受信しようとしている装置を使用していないことを保証する。４９５で処理は適用されているファームウェア更新を使用して装置のファームウェアをアップグレードするために呼び出しルーチン（図２を参照のこと）に戻る。
【００２９】
図５は、ファームウェア更新を初期化してそれをゲストオペレーティングシステムに利用可能にするためにハイパーバイザによって取られる更なるステップを示す流れ図である。処理は５００で始まり、ステップ５１０で、新しいファームウェアコードで更新された装置はリセットされる。ステップ５２０でハイパーバイザは、ハイパーバイザの下で動作しているゲストオペレーティングシステムのハイパーバイザのリスト４２０から第１のゲストオペレーティングシステムを選択する。
【００３０】
選択されたゲストオペレーティングシステムが中断されたかどうかに関する決定が行われる（決定５３０）。もし選択されたゲストオペレーティングシステムが中断されたのであれば、決定５３０は「はい」の分岐５３５に分岐して、ステップ５４０で、選択されたゲストオペレーティングシステムは再開され、ステップ５４５で装置は選択されたゲストオペレーティングシステムに再接続される（例えば「搭載される」）。他方、もし選択されたゲストオペレーティングシステムが中断されなかったとすれば、決定５３０は「いいえ」の分岐５５０に分岐して、ステップ５５５で装置は選択されたゲストオペレーティングシステムに再接続され、ステップ５６０で、選択されたゲストオペレーティングシステムによって装置に送られてハイパーバイザによってバッファ記憶された要求は処理される（すなわちバッファ記憶された要求は装置がリセットされた後に装置に送られる）。
【００３１】
ハイパーバイザの下で動作している、より多くのゲストオペレーティングシステムが存在するかどうかに関する決定が行われる（決定５７０）。もしハイパーバイザの下で動作している、より多くのゲストオペレーティングシステムが存在すれば、決定５７０は「はい」の分岐５７５に分岐して、ステップ５８０で次のゲストオペレーティングシステムがリスト４２０から選択され、処理は新しく選択されたゲストオペレーティングシステムによる装置の使用を許可するようにループバックする（ゲストオペレーティングシステムを再開するか、バッファ記憶された要求を処理するか、いずれかによって）。このルーピングは、ハイパーバイザの下で動作しているすべてのゲストオペレーティングシステムが処理されるまで続き、この時点で決定５７０は「いいえ」の分岐４８５に分岐して、処理は４９５で呼び出しルーチンに戻る（図２を参照すること）。
【００３２】
図６は、本明細書に記載の計算動作を実行できるコンピュータシステムの単純化された例である情報処理システム６００を示す。情報処理システム６００は、プロセッサインタフェースバス６１２に接続された一つ以上のプロセッサ６１０を含む。プロセッサインタフェースバス６１２は、メモリコントローラバス（ＭＣＢ）としても知られるノースブリッジ６１５にプロセッサ６１０を接続する。ノースブリッジ６１５は、システムメモリ６２０に接続され、プロセッサ６１０がシステムメモリにアクセスするための手段を備える。グラフィックスコントローラ６２５もまたノースブリッジ６１５に接続される。一実施形態では、ノースブリッジ６１５をグラフィックスコントローラ６２５に接続するためにＰＣＩエクスプレスバス６１８が使用される。グラフィックスコントローラ６２５は、コンピュータモニターといった表示装置６３０に接続される。
【００３３】
ノースブリッジ６１５とサウスブリッジ６３５は、バス６１９を使用して互いに接続される。一実施形態ではこのバスは、ノースブリッジ６１５とサウスブリッジ６３５との間で各方向に高速度でデータを転送するダイレクトメディアインタフェース（ＤＭＩ）バスである。別の実施形態では、ノースブリッジとサウスブリッジとを接続するために周辺コンポーネント相互接続（ＰＣＩ）バスが使用される。Ｉ／Ｏコントローラハブ（ＩＣＨ）としても知られるサウスブリッジ６３５は、一般にノースブリッジによって与えられる能力より低速度で動作する能力を実現するチップである。サウスブリッジ６３５は典型的には、種々のコンポーネントを接続するために使用される種々のバスを備える。これらのバスは、ＰＣＩおよびＰＣＩエクスプレスバスと、ＩＳＡバスと、システム管理バス（ＳＭＢｕｓまたはＳＭＢ）とローピンカウント（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ：ＬＰＣ）バスと、を含み得る。ＬＰＣバスはしばしば、ブートＲＯＭおよび「レガシー」Ｉ／Ｏ装置（「スーパーＩ／Ｏ」チップを使用する）といった低帯域幅装置を接続するために使用される。この「レガシー」Ｉ／Ｏ装置（６９８）は、シリアルポートおよびパラレルポートと、キーボードと、マウスと、フロッピーディスクコントローラと、を含み得る。ＬＰＣバスはまた、サウスブリッジ６３５を信頼されたプラットフォームモジュール（ＴＰＣ）６９５に接続するためにも使用される。サウスブリッジ６３５にしばしば含まれる他のコンポーネントは、ダイレクトメモリアクセス（ＤＭＡ）コントローラと、プログラマブルインタラプトコントローラ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ：ＰＩＣ）と、バス６８４を使用してハードディスクドライブといった不揮発性記憶装置６８５にサウスブリッジ６３５を接続する記憶装置コントローラと、を含み得る。
【００３４】
エクスプレスカード６５５は、ホットプラグ可能な装置を情報処理システムにするために使用されるスロットである。エクスプレスカード６５５は、ユニバーサルシリアルバス（ＵＳＢ）とＰＣＩエクスプレスバスの両者を使用してサウスブリッジ６３５に接続されるので、ＰＣＩエクスプレスとＵＳＢ両者の接続性をサポートする。サウスブリッジ６３５は、ＵＳＢに接続する装置にＵＳＢ接続性を与えるＵＳＢコントローラ６４０を含む。これらの装置は、ウェブカム（カメラ）６５０と、赤外線（ＩＲ）受信機６４８と、無線パーソナルエリアネットワーク（ＰＡＮ）に備えるブルートゥース（Ｂｌｕｅｔｏｏｔｈ）装置６４６と、キーボードおよびトラックパッド６４４と、マウス、携帯型記憶装置、モデム、ネットワークカード、ＩＳＤＮコネクタ、ファックス、プリンタ、ＵＳＢハブ、および多数の他のタイプのＵＳＢ接続装置といったその他種々雑多のＵＳＢ接続装置６４２と、を含む。
【００３５】
無線ローカルエリアネットワーク（ＬＡＮ）装置６７５は、ＰＣＩまたはＰＣＩエクスプレスバス６７２を介してサウスブリッジ６３５に接続される。ＬＡＮ装置６７５は典型的には、情報処理システム６００と他のコンピュータシステムまたは装置との間で無線通信するためにすべてが同じプロトコルを使用する無線変調技法のＩＥＥＥ８０２．１１規格の一つを実現する。
【００３６】
光記憶装置６９０は、シリアルＡＴＡ（ＳＡＴＡ）バス６８８を使用してサウスブリッジ６３５に接続される。シリアルＡＴＡアダプタと装置は、高速度シリアルリンク６５８上で通信する。シリアルＡＴＡバスはまた、ハードディスクドライブといった他の形式の記憶装置にサウスブリッジ６３５を接続するためにも使用される。
【００３７】
サウンドカードといったオーディオ回路６６０は、バス６５８を介してサウスブリッジ６３５に接続される。オーディオ回路６６０は、オーディオラインインおよびポート内の光ディジタルオーディオ６６２、光ディジタル出力およびヘッドフォンジャック６６４、内蔵スピーカ６６６、および内蔵マイクロフォン６６８といった機能を与えるために使用される。
【００３８】
イーサーネットコントローラ６７０は、ＰＣＩまたはＰＣＩエクスプレスバス６７２といったバスを使用してサウスブリッジ６３５に接続される。イーサーネットコントローラ６７０は、ローカルエリアネットワーク（ＬＡＮ）、インターネット、および他の公衆および私設コンピュータネットワークといったコンピュータネットワークに情報処理システム６００を接続するために使用される。
【００３９】
図６は、一つの情報処理システムを示しているが、情報処理システムは多くの形式を取り得る。例えば情報処理システムは、デスクトップ、サーバ、ポータブル、ラップトップ、ノートブック、または他の形式ファクタのコンピュータまたはデータ処理システムの形を取り得る。更に情報処理システムは、パーソナルディジタルアシスタント（ＰＤＡ）、ゲーム機、ＡＴＭ装置、携帯電話、通信装置、またはプロセッサとメモリとを含む他の装置といった他の形式ファクタを取り得る。
【００４０】
本発明の好適な実現形態の一つは、クライアントアプリケーション、すなわち、例えばコンピュータのランダムアクセスメモリ内に常駐し得るコードモジュール内の１セットの命令（プログラムコード）または他の機能記述資料である。コンピュータによって必要とされるまで、この１セットの命令は、他のコンピュータメモリ内に、例えばハードディスクドライブ内に、または光ディスク（ＣＤ−ＲＯＭでの最終的使用のための）またはフロッピー（登録商標）ディスク（フロッピーディスクドライブでの最終的使用のための）といった交換可能メモリ内に記憶され得るか、あるいはインターネットまたはその他のコンピュータネットワークを介してダウンロードされ得る。したがって本発明は、コンピュータに使用されるコンピュータプログラム製品として実現され得る。更に、説明された種々の方法は好都合にもソフトウェアによって選択的に活性化または再構成される汎用コンピュータに実現されるが、当業者は、このような方法がハードウェアに、またはファームウェアに、または必要な方法ステップを実行するように構成された、より特殊な装置において実施され得ることも認めるであろう。機能記述資料は、マシンに機能を与える情報である。機能記述資料は、コンピュータプログラム、命令、ルール、事実、計算可能な関数の定義、オブジェクト、およびデータ構造を含むが、これらに限定されない。
【００４１】
本発明の特定の実施形態が示され、説明されたが、当業者であれば、この教示に基づいて、変更および改良が本発明およびその広い態様から逸脱することなくなされるであろうことは明白であろう。したがって、添付の請求項は、本発明の真の精神および範囲内にあると同じく、その範囲内に、これらの変更および改良の全てを包含するものである。
【図面の簡単な説明】
【００４２】
【図１】ハイパーバイザを使用して装置ファームウェアを更新する際に使用される選択されたコンピュータコンポーネントを示すハイレベルの図である。
【図２】ハイパーバイザを使用して装置ファームウェアを更新するために取られるステップを示すハイレベルの流れ図である。
【図３】ファームウェア更新ソフトウェアを検証するために取られるステップを示す流れ図である。
【図４】コンピュータシステムにファームウェア更新の準備をさせるためにハイパーバイザによって取られるステップを示す流れ図である。
【図５】ファームウェア更新を初期化してそれをゲストオペレーティングシステムに利用可能にするためにハイパーバイザによって取られる更なるステップを示す流れ図である。
【図６】本明細書に記載の方法が実現され得るデータ処理システムのブロック図である。
【符号の説明】
【００４３】
１００    選択されたコンピュータシステムコンポーネント
１１０    ハイパーバイザ
１２０    ゲストオペレーティングシステム（例えばリナックス）
１３０    ゲストオペレーティングシステム（例えばウィンドウズ）
１４０    ファームウェア更新ソース
１５０    コンピュータネットワーク（例えばＬＡＮ、インターネットなど）
１８０    装置ファームウェア（例えばドライブコントローラ）
１９０    装置ファームウェア（例えばビデオアダプタ）
６００    情報処理システム
６１０    プロセッサ
６１２    プロセッサインタフェースバス
６１５    ノースブリッジメモリコントローラ
６１８    ＰＣＩエクスプレス
６１９    ＤＭＩバス
６２０    システムメモリ
６２５    グラフィックスコントローラ
６３０    表示装置
６３５    サウスブリッジＩ／Ｏ装置・ディスクコントローラ
６４０    ＵＳＢコントローラ
６４２    種々雑多なＵＳＢ装置
６４４    キーボードとトラックパッド
６４６    ブルートゥース
６４８    ＩＲ受信機
６５０    カメラ
６５５    エクスプレスカード
６５８    ＨＤインタフェース
６６０    オーディオ回路
６６２    オーディオラインインとポート内の光ディジタルオーディオ
６６４    光ディジタル出力とヘッドフォンジャック
６６６    内蔵スピーカ
６６８    内蔵マイクロフォン
６７０    イーサーネットコントローラ
６７２    ＰＣＩエクスプレス１レーン
６７５    ８０２．１１無線
６７８    ＳＰＩバス
６８０    ＥＦＩブートマネージャ
６８４    ＡＴＡまたはＵＡＴＡバス
６８５    内蔵ハードドライブ
６８８    シリアルＡＴＡバス
６９０    光ドライブ
６９５    ＴＰＭ
６９６    ブートＲＯＭ
６９８    「レガシー」Ｉ／Ｏ装置
【図１】
2008243183.tif 000003
【図２】
2008243183.tif 000004
【図３】
2008243183.tif 000005
【図４】
2008243183.tif 000006
【図５】
2008243183.tif 000007
【図６】
2008243183.tif 000008