(57)【要約】　　　（修正有）【課題】ファイルの改ざんまたは削除が行われないように配慮した、システムファームウェア（ＢＩＯＳ）の更新／復旧システムの提供。【解決手段】ＢＩＯＳのコピーおよびシステムＥＥＰＲＯＭまたはフラッシュＲＯＭに書き込むためのファームウェア更新ユーティリティが含まれるファイルを大容量記憶デバイスに転送する。これらのファイルが転送された後、大容量記憶デバイス上の領域は、例えば、Host Protected Area内で保護される。この領域を保護またはロックした後、システム・ファームウェアまたはブート・ユーティリティが、標準のオペレーティング・システムを起動するか、またはファームウェアが破損している場合にはHost Protected Areaからファームウェア更新ユーティリティを実行する。ファームウェア更新ユーティリティはコンピュータ・システムの標準オペレーティング環境の外部にある独立した環境内で実行することができる。【選択図】図１
2004145886.tif 000002
【特許請求の範囲】
【請求項１】
　組み込みコントローラ・ファームウェア更新機能を備えるシステムであって、
　（１）中央演算処理装置（ＣＰＵ）と、
　（２）ＣＰＵに結合されているシステム・メモリと、
　（３）ＣＰＵとシステム・メモリとを初期化する動作をする基本入出力システム（ＢＩＯＳ）およびコンピュータ・システムを完全に初期化するために実行するタスクのリストを含むディスパッチ・マネージャを含む初期化コードを格納するＣＰＵに結合されたクリティカルな不揮発性記憶デバイスであって、そのディスパッチ・マネージャがコンピュータの初期化に関係する多数のタスクを選択的にロードし繰り返し実行するように動作するクリティカルな不揮発性記憶デバイスと、
　（４）停電発生時にデータを保存するＣＰＵに結合されている補助不揮発性記憶デバイスと、
　（５）組み込みコントローラ・ファームウェア更新機能を備えるクリティカルな不揮発性記憶デバイス上に配置されたソフトウェアであって、
　組み込みコントローラ・ファームウェアを含むコード・セクションと、
　フラッシュ・ユーティリティを含むＢＩＯＳの一部であるコード・セクションと、
　コンピュータを起動するコード・セクションと、
　コンピュータの起動時にフラッシュ・ユーティリティを実行して新しいファームウェア・イメージおよび組み込みコントローラ・更新アルゴリズムまたはプロシージャをコンピュータのシステムＢＩＯＳ記憶領域に書き込むコード・セクションと、
　コンピュータを再起動するコード・セクションと、
　コンピュータの再起動時に更新アルゴリズムまたはプロシージャをシステムＢＩＯＳに実行させ、更新アルゴリズムまたはプロシージャが新しいファームウェア・イメージをコンピュータの組み込みコントローラ・ファームウェア記憶領域に書き込むコード・セクションを含むソフトウェアと
を備えるシステム。
【請求項２】
　フラッシュ・ユーティリティはＷｉｎｄｏｗｓ（登録商標）オペレーティング・システムの下で実行されるフラッシュ・ユーティリティを含む請求項１に記載のシステム。
【請求項３】
　組み込みコントローラ・ファームウェア更新機能を含む、基本入出力システム（ＢＩＯＳ）およびオペレーティング・システムを備えるコンピュータ・システムとともに使用する方法であって、
　組み込みコントローラ・ファームウェアをＢＩＯＳの一部として備えるステップと、
　フラッシュ・ユーティリティをＢＩＯＳの一部として備えるステップと、
　パーソナル・コンピュータ・システムを起動するステップと、
　起動時にフラッシュ・ユーティリティに、新しいファームウェア・イメージおよび組み込みコントローラ更新アルゴリズムをパーソナル・コンピュータ・システムのシステムＢＩＯＳ記憶領域に書き込ませるステップと、
　パーソナル・コンピュータ・システムを再起動するステップと、
　再起動時に、システムＢＩＯＳに更新アルゴリズムを実行させるステップと、
　更新アルゴリズムで、新しいファームウェア・イメージをパーソナル・コンピュータ・システムの組み込みコントローラ・ファームウェア記憶領域に書き込ませるステップを含む方法。
【請求項４】
　オペレーティング・システムはＷｉｎｄｏｗｓオペレーティング・システムであり、フラッシュ・ユーティリティはＷｉｎｄｏｗｓオペレーティング・システムの下で実行されるフラッシュ・ユーティリティである請求項２に記載の方法。
【請求項５】
　基本入出力システム（ＢＩＯＳ）と組み込みコントローラ・ファームウェア更新機能を含むオペレーティング・システムとを備えるコンピュータ・システムとともに使用するソフトウェアであって、
　組み込みコントローラ・ファームウェアを含むコード・セクションと、
　フラッシュ・ユーティリティを含むＢＩＯＳの一部であるコード・セクションと、
　コンピュータを起動するコード・セクションと、
　コンピュータの起動時にフラッシュ・ユーティリティを実行して新しいファームウェア・イメージおよび組み込みコントローラ・更新アルゴリズムまたはプロシージャをコンピュータのシステムＢＩＯＳ記憶領域に書き込むコード・セクションと、
　コンピュータを再起動するコード・セクションと、
　コンピュータの再起動時に更新アルゴリズムまたはプロシージャをシステムＢＩＯＳに実行させ、更新アルゴリズムまたはプロシージャが新しいファームウェア・イメージをコンピュータの組み込みコントローラ・ファームウェア記憶領域に書き込むコード・セクションと
を含むソフトウェア。
【請求項６】
　オペレーティング・システムはＷｉｎｄｏｗｓオペレーティング・システムであり、フラッシュ・ユーティリティはＷｉｎｄｏｗｓオペレーティング・システムの下で実行されるフラッシュ・ユーティリティである請求項５に記載のソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、一般に、コンピュータ・システムおよび関連する方法に関するものであり、より具体的には、大容量記憶デバイスからのシステム・ファームウェアの信頼性が高く、またセキュリティ性の高い更新および復旧を行うシステム、方法、およびソフトウェアに関するものである。
【背景技術】
【０００２】
　システムのメイン・オペレーティング・システムの環境で動作しているディスクの非保護領域からパーソナル・コンピュータのシステム・ファームウェアを更新するユーティリティが多数ある。このユーティリティは、ＤＯＳが収められているフロッピー（登録商標）・ディスクから実行することも可能である。しかし、これには、エンド・ユーザがブータブル・フロッピー・ディスクを作成できる必要がある。
【０００３】
　「ブート・ブロック」は、決して更新されることのないメイン・システム・ファームウェア（ＢＩＯＳ）の一部である。ブート・ブロックの目的は、システムのファームウェア（ＢＩＯＳ）の他の部分が破損しているかどうかを判別することである。システム・ファームウェアに異常がないとわかった後、ブート・ブロックは、ＰＯＳＴ（Ｐｏｗｅｒ−Ｏｎ　Ｓｅｌｆ−Ｔｅｓｔ）初期化の残りについて制御権をメイン・システム・ファームウェアに渡す。他方、システムのファームウェアが破損している場合のため、ブート・ブロックは必要なユーティリティおよびファイルを何らかの形態の記憶媒体またはフロッピー・ディスクからロードすることにより、システム・ファームウェアを復旧するためのメカニズムを働いていると知られているバージョンに与える。
【０００４】
　Ｐｒｏｔｅｃｔｅｄ　Ａｒｅａ　Ｒｕｎ　Ｔｉｍｅ　Ｅｘｔｅｎｓｉｏｎ　Ｓｅｒｖｉｃｅｓ　Ｓｔｕｎｄａｒｄ（ＡＮＳＩ　ＢＳＲ　ＮＣＩＴＳ３４６）では、ハード・ディスク・ドライブ上のサービス領域と呼ばれるプライベート領域内に格納するメカニズムを備える。この規格は、さらに、サービス領域からのオペレーティング・システムの起動の方法も規定する。
【０００５】
　知られている従来技術には多数の欠点が見られる。例えば、システム・ファームウェアをＥＥＰＲＯＭまたはフラッシュＲＯＭにプログラミングするプロセスが中断したり未完了のまま終了した場合、システムは使用不可能な状態に残されることがある。これらの２つのイベントのうちの１つを引き起こす可能性は多数ある。
【０００６】
　現在のユーティリティは、ユーティリティがタスクの切り替えの防止の制御を十分にできない主要オペレーティング・システムの環境で実行しなければならない。これは、ＲＯＭまたはフラッシュＲＯＭデバイスをプログラミングする必要な速さを重視するイベントに支障を来すおそれがある。考えられる他の問題としては、オペレーティング・システムがシステムの電力を制御するという点があげられる。オペレーティング・システムのパワー・マネジメント機能がシステムをスリープ状態にする、またはオフにすると判断した場合、永久的に電力を遮断し、プログラミング・プロセスを終了させる可能性がある。
【０００７】
　ほとんどの障害復旧シナリオでは、ユーザ側で、あらかじめ、必要な復旧ファイルおよびユーティリティを格納したフロッピー・ディスクを作成しておく必要がある。フロッピー・デバイスは比較的少ない容量の空間を持ち、ファームウェア・イメージだけがフロッピー・ディスクのサイズに近づいて来ている。このため将来の拡張用の余地がほとんど残されていない。
【０００８】
　メイン・オペレーティング・システムのファイル・システムはシステムの製造時には不明である可能性があるか、あるいはシステムの出荷後に変更されている可能性があるため、障害復旧ファイルがハード・ディスク・ドライブ上に置かれていると想定することはできない。ファイル・システムが知られている場合であっても、複雑であるため、ＥＥＰＲＯＭまたはフラッシュＲＯＭのブート・ブロック領域により多くのコードを詰め込む必要があるかもしれない。
【０００９】
　さらに、他のオペレーティング・システムのファイル・システムは、そのシステムにアクセスするためのコードがブート・ブロックに収められている場合にはライセンスされなければならない知的所有権を含んでいる可能性もある。さらに、障害復旧ファイルをメイン・オペレーティング・システムのファイル・システム内に収める場合、ファイルを改変したり削除したりするおそれのある悪意のあるソフトウェア（ウイルスなど）にさらされる可能性もある。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
　したがって、本発明の目的は、大容量記憶デバイスからシステム・ファームウェアの信頼性、セキュリティ性が高い更新および復旧を行うシステム、方法、およびソフトウェアを提示することである。
【課題を解決するための手段】
【００１１】
　上記の目的および他の目的を達成するために、本発明では、例えば、ハード・ディスク・ドライブなどの大容量記憶デバイスまたは不揮発性記憶デバイスの保護領域から実行するユーティリティを使用して、パーソナル・コンピュータなどのコンピュータ・システムのシステム・ファームウェア（ＢＩＯＳ）の更新または復旧を行うためのシステム、方法、およびソフトウェアを開示する。これにより、標準的なオペレーティング・システム環境を回避し、必須ファイルの改ざんまたは削除が行われないようにすることができる。ファームウェアが破損した場合、コンピュータ・システムは復旧モードに入り、ユーティリティが保護領域から実行され、知られている作業バージョンのシステム・ファームウェアの復元が行われる。
【００１２】
　本発明は次のように実装することができる。コンピュータ・システムの製造時に、システム・ファームウェア（ＢＩＯＳ）のコピーおよびシステムＥＥＰＲＯＭまたはフラッシュＲＯＭに書き込むためのファームウェア更新ユーティリティが格納されているファイルが大容量記憶デバイスまたはハード・ディスク・ドライブに転送される。ファイルが転送された後、それらのファイルが格納されているハード・ディスク・ドライブ上の領域を、ＡＴＡ仕様の「Ｈｏｓｔ　Ｐｒｏｔｅｃｔｅｄ　Ａｒｅａ」機能セットまたはその他の利用可能なメカニズムを使用するなどして保護することができる。
【００１３】
　ハード・ディスク・ドライブのこの領域を保護するかまたはロックした後、システム・ファームウェアまたはブート・ユーティリティが、標準のオペレーティング・システムを起動するか、または「Ｈｏｓｔ　Ｐｒｏｔｅｃｔｅｄ　Ａｒｅａ」からファームウェア更新ユーティリティを実行する。これにより、ファームウェア更新ユーティリティは、コンピュータ・システムの標準オペレーティング・システムの外部にある、独立した環境内で実行することができる。
【００１４】
　エンド・ユーザがシステム・ファームウェアを更新する必要がある場合、新しいファームウェア・イメージをファームウェア更新ユーティリティに供給するアプリケーションを使用する。その後、このアプリケーションは、次回起動時にシステムが更新ユーティリティを起動するように要求する。
【発明を実施するための最良の形態】
【００１５】
　本発明のさまざまな特徴をおよび利点は、詳細な説明と付属の図面を参照することでさらによく理解することができ、また類似の番号は類似の構造上の要素を指す。
【００１６】
　図を参照すると、図１は、補助不揮発性記憶デバイス２０を含む大容量記憶デバイス２０からシステム・ファームウェアの信頼性およびセキュリティ性の高い更新および復旧を行う方法３０を実現する、パーソナル・コンピュータ・システム１０などのコンピュータ・システム１０の例を示すブロック図である。コンピュータ・システム１０は、クリティカルな不揮発性記憶デバイス１２に結合されている中央演算処理装置（ＣＰＵ）１１を備える。クリティカルな不揮発性記憶デバイス１２としては、フラッシュ・メモリ、読み取り専用メモリ（ＲＯＭ）、プログラム可能読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、または初期命令セットを実行するためにＣＰＵ１１側で使用することができるその他のデバイスまたは技術がある。
【００１７】
　ＣＰＵ１１はさらに、ランダム・アクセス・メモリ１３などのシステム・メモリ１３に結合されている。ＣＰＵ１１は、例えば、Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）ｂｕｓ　１４などのシステム・バス１４を使用して補助揮発性記憶デバイス２０に結合されている。補助不揮発性記憶デバイス２０には、ハード・ディスク・ドライブ、コンパクト・ディスク（ＣＤ）ドライブ、デジタル・ビデオ・ディスク（ＤＶＤ）ドライブ、フロッピー・ディスク・ドライブ、Ｚｉｐドライブ、ＳｕｐｅｒＤｉｓｋドライブ、光磁気ディスク・ドライブ、Ｊａｚｚドライブ、高密度フロッピー・ディスク（ＨｉＦＤ）ドライブ、フラッシュ・メモリ、読み取り専用メモリ（ＲＯＭ）、プログラム可能読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、または停電時にデータを保存することが可能なその他のデバイスまたは技術がある。
【００１８】
　クリティカルな不揮発性記憶デバイス１２の第１の部分はＣＰＵ１１やシステム・メモリ１３を初期化する動作をする初期化コードを格納する。クリティカルな不揮発性記憶デバイス１２の第２の部分は、コンピュータ・システム１０を完全に初期化するために実行しなければならないタスクのリストを含むディスパッチ・マネージャを格納する。ディスパッチ・マネージャは、コンピュータの完全な初期化に関係する多数のタスクを選択的にロードし、繰り返し実行する動作をする。
【００１９】
　動作時、コンピュータ・システム１０がオンになると、初期化コードが実行され、ＣＰＵ１１およびシステム・メモリ１３が初期化される。その後、ディスパッチ・マネージャがシステム・メモリ１３にロードされる。ディスパッチ・マネージャはそこに含まれるタスクのリストを実行し、必要なすべてのファームウェア（ＢＩＯＳモジュール）をシステム・メモリ１３にロードして、実行する。
【００２０】
　ディスパッチ・マネージャは、システム・メモリ１３内の必要なそれぞれのＢＩＯＳモジュールがあるかどうかを判別し、もしあれば、それぞれの必要なＢＩＯＳモジュールを見つけてロードし、実行する。ＢＩＯＳモジュールは、上記で示したあらゆるクリティカルなまたは補助不揮発性記憶デバイス２０を含む、クリティカルな不揮発性記憶デバイス１２（フラッシュ・メモリ）または補助不揮発性記憶デバイス２０内に配置することができる。
【００２１】
　図２を参照すると、これは、本発明の原理による方法３０およびソフトウェア・コードの例を示す詳細な流れ図である。方法３０の例は、以下のステップを含む。
【００２２】
　コンピュータ・システム１０が起動され、ブート・ブロックがＣＰＵ１１の制御権３１をとる。ファームウェアが破損しているかどうかを判別する３２。ファームウェアが破損していなければ（Ｎｏ）、通常のＰＯＳＴ（Ｐｏｗｅｒ−Ｏｎ−Ｓｅｌｆ−Ｔｅｓｔ）手順が実行される３３。次に、ファームウェア更新ユーティリティを起動する３４要求が出される。ファームウェア更新ユーティリティ３４が実行されない場合（Ｎｏ）、オペレーティング・システムが起動され３５、新しいファームウェア・イメージが更新ユーティリティに対して用意される３６。システムが、コンピュータ・システム１０の次回起動時にファームウェア更新ユーティリティを起動するよう要求する３７。コンピュータ・システムがリセットされる３８。
【００２３】
　ファームウェアが破損している（Ｙｅｓ）と判断された場合３２、ファームウェア障害復旧モードに入る４１。ファームウェア更新ユーティリティが保護領域から起動される４２。ファームウェアは、知られていた以前に作動していたイメージとともに復元される４３。コンピュータ・システムがリセットされる３８。
【００２４】
　ファームウェア更新ユーティリティ３４は、実行されると（Ｙｅｓ）、保護領域から起動される４５。ファームウェアは、新しいファームウェア・イメージで更新される４６。コンピュータ・システムがリセットされる３８。
【００２５】
　したがって、コンピュータ・システム１０の製造時に、システム・ファームウェア（ＢＩＯＳ）およびシステムのＥＥＰＲＯＭまたはフラッシュＲＯＭに書き込むためのファームウェア更新ユーティリティのコピーを格納したファイルがハード・ディスク・ドライブ２０に転送される。ファイルが転送された後、それらのファイルが格納されているハード・ディスク・ドライブ２０上の領域を、ＡＴＡ仕様の「Ｈｏｓｔ　Ｐｒｏｔｅｃｔｅｄ　Ａｒｅａ」機能セットまたはその他のメカニズムを使用するなどして保護する。ハード・ディスク・ドライブ２０のこの領域を保護するかまたはロックした後、システム・ファームウェアまたはブート・ユーティリティが、標準のオペレーティング・システムを起動するか、または「Ｈｏｓｔ　Ｐｒｏｔｅｃｔｅｄ　Ａｒｅａ」からファームウェア更新ユーティリティを実行する。これにより、パーソナル・コンピュータ１０の標準オペレーティング環境の外部の環境で独立にユーティリティを実行できる。
【００２６】
　エンド・ユーザがシステム・ファームウェアを更新する必要がある場合、新しいファームウェア・イメージをファームウェア更新ユーティリティに供給するアプリケーションを使用する。その後、このアプリケーションは、次回起動時にシステムが更新ユーティリティを起動するように要求する。本発明でこれを実装する。
【００２７】
　ハード・ディスク・ドライブ２０の保護領域からシステムのファームウェアを更新したり復元したりする操作にはいくつかの利点がある。
【００２８】
　ハード・ディスク・ドライブ２０の保護領域から実行することができるファームウェア更新ユーティリティでは、更新前に新しいシステム・ファイルの破損また改ざんを防止することができる。また、障害復旧フロッピーは、あらかじめ、作成して保持しておく必要はない。このため、復旧プロセスの信頼性が高まり、エンド・ユーザにとっても扱いやすいものとなる。
【００２９】
　システム・ファームウェアを更新する本発明の方法によるオペレーティング環境では、更新が失敗し、システムが不安定になる原因となりうる、通常のオペレーティング・システム・タスクのスワッピングおよび／またはパワー・マネジメントの中断がない。この制御された環境においては、ＥＥＰＲＯＭまたはフラッシュＲＯＭプログラミング・プロセスのクリティカル・タイミングを広範囲にわたって制御することができる。
【００３０】
　ハード・ディスクの保護領域は一般に、エンド・ユーザおよびメイン・オペレーティング・システムからはアクセスできないため、削除や改ざんを恐れることなく必要に応じてファイルをレイアウトすることができ、したがって、あらかじめハード・ディスク上の必要なファイルが置かれている場所を正確に知ることができるのでファームウェア更新ユーティリティの複雑さを軽減することができる。これは、ブート・ブロック用に用意されているＥＥＰＲＯＭまたはフラッシュＲＯＭ空間のサイズを比較的小さくでき機能を縮小できるため有用である。
【００３１】
　本発明のいくつかの特徴は、まったく新しいものである。例えば、本発明では、ファームウェア更新プロセスがオペレーティング・システムによって中断されないように、また必要なファイルがエンド・ユーザまたは悪意のあるソフトウェアにより削除または改善されないように保護している。本発明ではさらに、障害復旧フロッピー・ディスクを作成して保持しておく必要がないため、エンド・ユーザにとって扱いが単純なものとなったファームウェア復旧のメカニズムを備えている。
【００３２】
　本発明では、さらに、メイン・オペレーティング・システムのファイル・システム内に配置するよりもブート・ブロックでアクセスする方が簡単なようにハード・ディスク・ドライブ２０上にファームウェアおよびユーティリティ・ファイルをレイアウトすることができる。したがって、復旧コードを簡素化することができる。現在、破損したＲＯＭからの復旧は、Ｍｉｃｒｏｓｏｆｔが開発したＷｉｎｄｏｗｓ　ＮＴオペレーティング・システム用のファイル・システムであるＮＴファイル・システム（ＮＴＦＳ）などの専用ファイル・システムからであっても不可能である。
【００３３】
　組み込みコントローラ・ファームウェア更新を実装するシステム、方法、およびソフトウェアを開示した。上記の実施形態は、本発明の原理の応用を表す多くの特定の実施形態のうちの一部を示すにすぎないことは理解されるであろう。明らかに、数多くのまたはその他の配置も、当業者であれば、本発明の範囲から逸脱することなく容易に考案できるであろう。
【図面の簡単な説明】
【００３４】
【図１】大容量記憶デバイスからシステム・ファームウェアの信頼性およびセキュリティ性の高い更新および復旧を行う本発明の原理による方法を実現するパーソナル・コンピュータ・システム例を示すブロック図である。
【図２】本発明の原理による方法およびソフトウェア・コードの例を示す流れ図である。
【符号の説明】
【００３５】
　１０　コンピュータ・システム、　１１　ＣＰＵ、　１２　クリティカルな不揮発性記憶デバイス、　１３　ランダム・アクセス・メモリ、　１４　パーソナル・コンピュータ・システム、　２０　補助不揮発性記憶デバイス、　２０　大容量記憶デバイス
【図１】
2004145886.tif 000003
【図２】
2004145886.tif 000004