(57)【要約】【課題】誤ってプログラムされた埋め込み装置をリカバリする方法、コンピュータ・プログラム製品、およびシステムを提供する。【解決手段】一実施態様に従って、破損したネットワーク・ハードウェア装置は自動的に検査され修復されることができる。デフォルト・ブート・シーケンスは中断させられることができ、外部リカバリ装置は、なるべく多くのユーザ・セッティングを維持するために最小限に侵入的な仕方でファイルおよびコンフィギュレーション・セッティングを選択的に修復することによって、破損したコードを検査し修復することができる。ネットワーク・ハードウェア装置は、その後、修復されたファームウェアからリブートされることができる。【選択図】図１
2010113706.tif 000002
【特許請求の範囲】
【請求項１】
誤ってプログラムされた埋め込み装置をリカバリする方法であって、
ハードウェア装置を動作させるために使われるファームウェアと前記ハードウェア装置を動作させるために前記ファームウェアにより使われるコンフィギュレーション・セッティングとの一方または両方を電子的に検査することと、
前記ハードウェア装置の誤った動作を引き起こす前記ファームウェアまたは前記コンフィギュレーション・セッティングのエラーを特定することと、
前記ファームウェアの全体あるいは前記コンフィギュレーション・セッティングの全体をオーバーライトせずに特定されたエラーを訂正するために前記ファームウェアおよび前記コンフィギュレーション・セッティングの一方または両方に対して選択的変更を自動的に行うことと、
を含む方法。
【請求項２】
前記ハードウェア装置を動作可能にするために欠くことのできない変更だけを前記ファームウェアまたは前記コンフィギュレーション・セッティングに対して行うことをさらに含む、請求項１に記載の方法。
【請求項３】
前記ファームウェアまたは前記コンフィギュレーション・セッティングのエラーを特定する前記ステップは、前記ハードウェア装置上の前記ファームウェアのバージョンの中で誤った動作を引き起こすかもしれない矛盾するセッティングを特定することを含む、請求項１に記載の方法。
【請求項４】
前記ファームウェアおよび前記コンフィギュレーション・セッティングのエラーを電子的に検査し特定する前に前記ハードウェア装置のデフォルト・ブート・シーケンスを開始させることと、
特定されたエラーを訂正するために前記ファームウェアおよび前記コンフィギュレーション・セッティングの一方または両方に選択的変更を行った後に前記ハードウェア装置をリブートすることと、
をさらに含む、請求項１に記載の方法。
【請求項５】
特定されたエラーを訂正するために選択的変更を行った後に前記ハードウェア装置をリセットすることと、
前記リセット後前記ハードウェア装置を用いて前記ハードウェア装置を完全にリブートすることと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記ハードウェア装置をリセットするステップは、前記ハードウェア装置をパワーサイクリングすることおよびホットプラギングすることの一方または両方を含む、請求項５に記載の方法。
【請求項７】
前記ファームウェアまたは前記コンフィギュレーション・セッティングのエラーを特定するステップは、前のブート失敗の記録を読み出すことを含む、請求項１に記載の方法。
【請求項８】
前記ファームウェアまたは前記コンフィギュレーション・セッティングのエラーを特定するステップは、
前記ハードウェア装置の選択されたコンポーネントとの通信を試験することと、
選択されたセッティングを改変することと、
前記改変されたセッティングを用いて前記選択されたコンポーネントとの回復された通信を確認するために前記選択されたセッティングを用いて通信を再試験することと、
を含む、請求項１に記載の方法。
【請求項９】
誤ってプログラムされたハードウェア装置をリカバリするためのコンピュータ・プログラムあって、
ハードウェア装置を動作させるために使われるファームウェアと前記ハードウェア装置を動作させるために前記ファームウェアにより使われるコンフィギュレーション・セッティングとの一方または両方を電子的に検査することと、
前記ハードウェア装置の誤った動作を引き起こす前記ファームウェアまたは前記コンフィギュレーション・セッティングのエラーを特定することと、
前記ファームウェアの全体あるいは前記コンフィギュレーション・セッティングの全体をオーバーライトせずに特定されたエラーを訂正するために前記ファームウェアおよび前記コンフィギュレーション・セッティングの一方または両方に対して選択的に変更を行うことと、
をコンピュータに実行させるコンピュータ・プログラム。
【請求項１０】
ハードウェア装置であって、電子的にアップデート可能なファームウェア、および前記ハードウェア装置を動作させるために前記ファームウェアによりアクセスされ得るコンフィギュレーション・セッティングを有する内部記憶装置と、前記内部記憶装置とインターフェースするための内部データ通信ポートと、外部データ通信ポートとを含むハードウェア装置と、
前記ハードウェア装置上の前記外部データ通信ポートと選択的に接続するように構成された外部リカバリ装置であって、前記ファームウェアおよび前記コンフィギュレーション・セッティングを検査し選択的に修復するように構成された機能訂正コードを有するフラッシュ・メモリを含む外部リカバリ装置と、
を含むシステム。
【請求項１１】
前記外部リカバリ装置は、前記ファームウェアおよび前記コンフィギュレーション・セッティングを検査し修復する前に前記ハードウェア装置のデフォルト・ブート・シーケンスをインタラプトし、前記修復されたファームウェアおよび前記コンフィギュレーション・セッティングから前記外部リカバリ装置をリブートするように構成されている、請求項１０に記載のシステム。
【請求項１２】
前記ハードウェア装置はサーバ・シャーシの管理モジュールを含む、請求項１０に記載のシステム。
【請求項１３】
前記外部リカバリ装置は、前記ハードウェア装置に取り外し可能に接続するように構成されたフラッシュ装置を含む、請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置における破損したファームウェアの検出およびリカバリに関する。
【背景技術】
【０００２】
多くの電子装置は、電子的にアップデート可能なファームウェアにより制御される。そのような装置には、破損したフラッシュ・イメージに起因する潜在的ディスラプションに陥る危険がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
破損したフラッシュ・イメージは、例えば、ファームウェアの誤ったフラッシュ・アップデートの結果としてもたらされる可能性がある。ネットワーク化された装置は、特に、それらがネットワーク上に分散して存在することに起因して、破損したフラッシュ・イメージを持つ傾向がある。例えば、ブレード・サーバ・シャーシのための管理モジュールのファームウェアは、管理モジュール上の或るファイルが無効なコンフィギュレーションで満たされた時に破損する可能性がある。その結果として、管理モジュールは、ユーザが該モジュールへのアクセスを得ることを許さないリブートあるいはソフトウェア・ループに捉えられる可能性がある。この状態では、管理モジュールは使用不能になる可能性があり、ユーザは、埋め込みソフトウェアの既知の良好なイメージで管理モジュールをリロードすることはできない。
【課題を解決するための手段】
【０００４】
本発明の一実施態様は、誤ってプログラムされた埋め込み装置をリカバリする方法を提供する。ハードウェア装置を動作させるために使われるファームウェアと、ハードウェア装置を動作させるためにファームウェアにより使われるコンフィギュレーション・セッティングとの一方または両方が電子的に検査される。ハードウェアの装置の誤った動作を引き起こすファームウェアまたはコンフィギュレーション・セッティングのエラーが特定される。ファームウェアの全体あるいはコンフィギュレーション・セッティングの全体をオーバーライトせずに特定されたエラーを訂正するために、ファームウェアおよびコンフィギュレーション・セッティングの一方または両方に対して、選択された変更が自動的に行われる。この方法は、例えば、誤ってプログラムされているハードウェア装置をリカバリするためにコンピュータで使用可能なプログラム・コードを実行するコンピュータにより実行されることができ、そのコンピュータで使用可能なプログラム・コードはコンピュータで使用可能な媒体において具体化される。
【０００５】
他の１つの実施態様は、ハードウェア装置と外部リカバリ装置とを含むシステムを提供する。そのハードウェア装置は、電子的にアップデート可能なファームウェア、およびそのハードウェア装置を動作させるために該ファームウェアによりアクセスされ得るコンフィギュレーション・セッティングを有する内部記憶装置と、該内部記憶装置とインターフェースするための内部データ通信ポートと、外部データ通信ポートとを含む。該外部リカバリ装置は、該ハードウェア装置上の該外部データ通信ポートと選択的に接続するように構成される。該外部リカバリ装置は該ファームウェアおよびコンフィギュレーション・セッティングを検査し選択的に修復するように構成された機能訂正コードを有するフラッシュ・メモリを含む。
【図面の簡単な説明】
【０００６】
【図１】ネットワーク・ハードウェア装置と、本発明の実施態様に従ってネットワーク・ハードウェア装置を破損した状態からリカバリするための取り外し可能な外部リカバリ装置とのブロック図である。
【図２】本発明の実施態様に従って潜在的に破損しているハードウェア装置を自動的に検出し修復する方法を概説したフローチャートである。
【発明を実施するための形態】
【０００７】
本発明は、マルチ・サーバ・シャーシにおける管理モジュールなどのネットワーク・ハードウェア装置上のファームウェアを自動的にリカバリするためのシステム、方法、およびソフトウェアとして具体化され得る。一実施態様では、ネットワーク・ハードウェア装置上の破損したファームウェアを検査し修復するために外部リカバリ装置あるいは“修復キー”がネットワーク・ハードウェア装置にプラグで接続される。修復キーから離れて動作するプログラム・コードを含む修復プログラムは、該ファームウェアが格納されている内部記憶装置をマウントする。該修復プログラムは、該内部記憶装置上の選択されたファイルの構造および内容を確かめるために該内部記憶装置上の選択されたファイルを充分に調べる。該修復プログラムは、ファイル内のキーおよびデータを分析し、該ハードウェア装置にロードされている現在のレベルのファームウェアで誤った動作を引き起こすかもしれない矛盾するセッティングがあるか否か判定する。該修復プログラムは、また、該ハードウェア装置が修復後に適切に機能するために必要とされる最少量の変更を行うために該ファームウェアの内容を外科的に分析し検査する。このアプローチは、なるべく多くのユーザのセッティングを維持し、修復動作の知覚される品質を改善し、システムを完全に操作可能な状態に戻すために必要な時間を短縮する。
【０００８】
図１は、ネットワーク１５と選択的にインターフェースするネットワーク・ハードウェア装置１０と、本発明の実施態様に従ってネットワーク・ハードウェア装置１０上の破損したプログラム・コードをリカバリするための取り外し可能な外部リカバリ装置６０とのブロック図である。ネットワーク・ハードウェア装置１０は、ネットワーク１５上で一意ＩＰアドレスにより識別可能でアクセス可能なノードとしてネットワーク１５とインターフェースする。ネットワーク・ハードウェア装置１０は、ネットワーク１５とインターフェースするために接合コネクタ１４に取り外し可能に接続する電源およびＩ／Ｏ(入出力)コネクタ１２を含む。コネクタ１２および接合コネクタ１４は、いろいろな標準化されたあるいは特許のコネクタ・タイプのうちのいずれであっても良い。例えば、ネットワーク・ハードウェア装置１０は電子カードとして具体化されることができ、その場合にはコネクタ１２は複数のＩ／Ｏピンを有するカード・エッジであることができ、接合コネクタ１４は、対応する複数のＩ／Ｏピンを有するソケット（雌型)であることができる。接合コネクタ１４は、例えば、マルチ・サーバ・シャーシの中央平面に配置され得る。ネットワーク・ハードウェア装置１０は、ネットワーク１５を介して他のネットワーク化された装置１６と通信する。ネットワーク・ハードウェア装置１０は、ネットワーク・ハードウェア装置のコネクタ１２が接合コネクタ１４に接続され、また任意選択でオプションの電源スイッチ１７でパワー・オンされた時に、電力とネットワーク接続性とを受け取る。
【０００９】
ネットワーク・ハードウェア装置１０は、内部記憶装置２０の不揮発性メモリに与えられたファームウェア２２などの電子的にアップデート可能なプログラム・コードにより制御されるいろいろな電子コンピュータ・ハードウェアのうちのいずれとしても具体化され得る。ファームウェア２２は、カーネル・モジュール２３、システム・スクリプト２４、実行可能ユーザ・コード２５、およびコンフィギュレーション・ファイル２６などの(これらに限定されない)ソフトウェア・エレメントを含む。汎用コンピュータ上で動作させられ得るソフトウェアとは対照的に、ファームウェア２２は、通例、ネットワーク・ハードウェア装置１０の意図された機能に特別に適合させられる。従って、或る具体例では、ネットワーク・ハードウェア装置１０は、ファームウェア２２により決定される所定の機能を有する“埋め込み装置”として分類され得る。ネットワーク・ハードウェア装置１０の１つの可能な具体例は、例えば、マルチ・サーバ・シャーシにおけるブレード・サーバおよびサポート・モジュールなどの他のネットワーク化された装置１６を管理するためのホット・スワップ可能な管理モジュールである。その文脈においては、ファームウェア２２は、その機能が該ブレード・サーバおよびサポート・モジュールを管理することに特別に適合させられているソフトウェア・エレメントを含み得る。この管理機能は、性能および動作を監視し、ブレード・サーバの電力セッティングを制御してブレード・サーバ・シャーシへの給電を一般的に管理し、種々のブレード・サーバおよびサポート・モジュールから警報を受け取って処理するためにブレード・サーバとインターフェースすることを含み得る。
【００１０】
内部記憶装置２０はフラッシュ・メモリを含むことができ、それは、その有益な有効寿命のうちに多数のサイクル(例えば、数千サイクル)の間、電気的に消去され再プログラムされることができる。内部記憶装置２０は、例えば、内部“フラッシュ・ドライブ”として、あるいは１つの具体例では“マイクロ・ディスク・オン・チップ（ｍｉｃｒｏ  ｄｉｓｋ  ｏｎ  ｃｈｉｐ）”として具体化されることができるが、それは、有益な有効寿命を延ばす(すなわち、読み書きサイクルの数を増やす)ためのオプションの損耗レベリング技術を含む頑丈なドライブである。フラッシュ・メモリは不揮発性であるので、それに格納されている情報を維持するために電力は不要である。さらに、フラッシュ・メモリは、高速アクセス(読み出しまたは書き込み)時間を提供し、また一般的に、回転する磁気プラッタに記憶を蓄積する“ハード・ディスク”より耐久性があってショックに耐える。
【００１１】
ネットワーク・ハードウェア装置１０は、ＥＥＰＲＯＭ(電気的に消去可能でプログラマブルな読み出し専用メモリ)３４、ＮＯＲフラッシュ３６、およびＲＡＭ４０も含む。ＥＥＰＲＯＭは、電力が除去されている時に保存されなければならない少量のデータを記憶するためにコンピュータおよび他の電子装置で使用される不揮発性メモリである。ここでは、ＥＥＰＲＯＭ３４はバイタル製品データ(Ｖｉｔａｌ  Ｐｒｏｄｕｃｔ  Ｄａｔａ）３５を格納するために使用され、それはハードウェアあるいはソフトウェアの特定のセットに関連付けられたコンフィギュレーションおよび情報データの集合である。例えば、バイタル製品データは、ネットワーク・ハードウェア装置１０に関しての部品番号、シリアル・ナンバ、および設計変更レベルを含むことができる。ＮＯＲフラッシュ３６は、埋め込み装置において割合に少量の実行可能コードを格納するために伝統的に使用されている当該技術分野で知られている１つのタイプのフラッシュ・メモリである。ここで、ＮＯＲフラッシュ３６は、ブート・ローダ３７およびＬｉｎｕｘ（登録商標)カーネル３８(全体として“ブリングアップ・コード（ｂｒｉｎｇ  ｕｐ  ｃｏｄｅ)”と称される)を格納するために使用される。ＲＡＭ(ランダム・アクセス・メモリ）４０は、ネットワーク・ハードウェア装置１０の仕事の実行に使用されるコードのための一時的記憶域として使用される揮発性メモリである。特に、ＲＡＭ４０は、ネットワーク・ハードウェア装置のオペレーティング・システム（ＯＳ）４２のエレメントを格納するために使用される。ネットワーク・ハードウェア装置１０は、少なくとも１つの内部データ通信ポート(この例では、内部ＵＳＢポート３１)および少なくとも１つの外部データ通信ポート(この例では、外部ＵＳＢポート３２)を含む、多数の接続ポートを含むこともできる。ネットワーク・ハードウェア装置１０の種々のコンポーネントはバス（図示されていない）を介して互いに通信することができる。
【００１２】
初期化されるとき、ネットワーク・ハードウェア装置１０は、ＮＯＲフラッシュ３６上の不揮発性メモリに格納されているブート・ローダ３７およびＬｉｎｕｘカーネル３８を含むブリングアップ・コードからブートし始める。Ｌｉｎｕｘカーネル３８は、オペレーティング・システム４０の中心的コンポーネントであり、その責務は、通例、ハードウェアとソフトウェア・コンポーネントとの間の通信を含む、システム・リソースを管理することを含む。ブート・ローダ３７が実行されると一連のイベントが開始され、それは、デフォルト・ブート・シーケンスにおいては、オペレーティング・システム４２をＲＡＭ４０にロードするために内部記憶装置２０がマウントされるという結果をもたらす。通例、内部記憶装置２０を“マウントすること”がＮＯＲフラッシュ３６から内部記憶装置２０に電子的にスイッチングすることを伴い得るように、ネットワーク・ハードウェア装置１０が初期化される時には内部記憶装置２０は既に物理的に内部ＵＳＢポート３１に接続されているであろう。内部ＵＳＢポート３１をマウントすると直ぐに、ネットワーク・ハードウェア装置１０は、オペレーティング・システム４２を完全にロードするためにカーネル・モジュール２３をロードすると共にシステム・スクリプト２４および実行可能ユーザ・コード２５を内部記憶装置２０から動作させ続ける。
【００１３】
外部リカバリ装置６０は、代わりに“修復キー”と称されても良いのであるが、外部ＵＳＢポート３２に取り外し可能に接続するように構成されたＵＳＢフラッシュ・メモリ装置として具体化され得る。外部ＵＳＢポート３２に接続された時、外部リカバリ装置６０は、内部記憶装置２０をマウントする前にデフォルト・スタートアップ・シーケンスをインタラプトする。内部記憶装置２０をマウントする代わりに、ネットワーク・ハードウェア装置１０は外部リカバリ装置６０をマウントし、これはネットワーク・ハードウェア装置１０上のエラーを調べ訂正する。外部リカバリ装置６０を“マウントすること”は、ユーザが外部リカバリ装置６０を外部ＵＳＢポート３２に物理的に結合させることを含み得るが、外部リカバリ装置６０に電子的にスイッチングすることも含み得る。外部リカバリ装置６０上のファイルシステム６１および初期化スクリプト６２は、内部記憶装置２０、ＥＥＰＲＯＭ３４、ＮＯＲフラッシュ３６のうちの少なくとも１つと通信できるようにデバイス・ドライバ６３をロードする。外部リカバリ装置６０上の初期化スクリプト６２は自動的に動作する。機能訂正コード６４は、内部記憶装置２０、ＥＥＰＲＯＭ３４、あるいはＮＯＲフラッシュ３６上のデータおよびプログラム・コードに問題があるかどうか確認する。機能訂正コード６４は、ファームウェア２２、カーネル・モジュール２３、システム・スクリプト２４、および実行可能ユーザ・コード２５などのネットワーク・ハードウェア装置１０上のプログラム・コードを調べる。
【００１４】
もし外部リカバリ装置６０が、ファームウェア２２などのネットワーク・ハードウェア装置１０上のプログラム・コードに、あるいはＥＥＰＲＯＭ３４またはＮＯＲフラッシュ３６に格納されているコードおよびセッティングに異常を検出したならば、あるいは前のブート失敗が失敗レジスタ２７に記録されているならば、一連の検査および修復動作が外部リカバリ装置６０によって実行され得る。検査および修復動作の一例は、内部記憶装置２０上の一定の重要なファイルを分析し、これらの重要なファイルを必要に応じてアップデートすることである。分析されるべき重要なファイルは、例えば、コンフィギュレーション・セレクションのデータストアに関係するファイルなどの“コンフィギュレーション”ファイルであり得る。検査および修復動作の他の１つの例は、ＮＯＲフラッシュ３６を調べ、ＮＯＲフラッシュ３６の内容をその次のブートのために改変することである。検査および修復動作の他の１つの例は、内部記憶装置２０の一定のディレクトリに新しいファイルをインストールすることである。例えば、新しいファイルは、新しいあるいは現在のプロセスにより使用されるようにライブラリ・ディレクトリにまたはシステム・パス（ｓｙｓｔｅｍ  ｐａｔｈ)に含まれるシステム・コンフィギュレーション・ディレクトリにインストールされることができる。
【００１５】
機能訂正コード６４は、ファームウェア２２内のコンフィギュレーション・ファイル２６の内容を調べ、矛盾するセッティング、あるいは前のレベルまたはバージョンのファームウェア２０に関して問題を引き起こすかもしれないセッティングを探すことができる。そのような矛盾は、前のファームウェア挙動から学習されたルールと、コンフィギュレーション・ファイル２６から読み出されたセッティングとを用いて特定され得る。例えば、実行可能訂正コードから小さな機能テストが実行され得る。特定のコンポーネントとの直接通信を試験するためにセッティングが試されることができる。選択されたセッティングが改変され、矛盾が解決されたことを確かめるために再び試験されることができる。１つのインプリメンテーションは、ビルトイン・セルフ・テスト(Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ（ＢＩＳＴ））または進行中の診断を実行することを含むことができる。該診断は、例えば、チェックサムを計算し、装置をポーリングし、ファイル内容を検査するなどのためのアルゴリズムを含むことができる。
【００１６】
ファームウェア２２のファイル構造に存在する重要なファイルを調べて該ファイル内のデータを選択的に修復するために本発明の１つの実施態様に従って専門化したプログラムに従う方法が使用され得る。単純にファームウェア２２またはコンフィギュレーション・ファイル２６の内容全体に上書きするのではなくて、外部リカバリ装置６０上の機能訂正コード６４は、ファームウェア２２内のファイルの内容をインテリジェントに検査し、ファームウェア２２またはセッティングあるいはその両方の適切な構造および内容と共に該セッティングがファームウェア２２とどのように相互作用するかを特定する。ファイルは、異常な動作を引き起こす可能性のある誤ったあるいは矛盾するセッティングがあるかどうか調べるために“構文解析（ｐａｒｓｅ)”され得る。このように外部リカバリ装置６０上の機能訂正コード６４は、ネットワーク・ハードウェア装置１０が次のブートで適切に機能することを可能にするデータをファームウェア２２内のファイルが含むことを確認するために、独特の仕方で実行する。
【００１７】
或る場合には内部記憶装置２０上のプログラム・コードにファイル・システム・エラーが無いけれども、外部ネットワーク１５あるいは他の手段を通してネットワーク・ハードウェア装置１０にアクセスすることを不可能にする可能性のある不良なあるいは誤ったセッティングを該ファイル内のデータ自体が持っているかもしれない。この訂正プロセスは、なるべく多くのユーザ・セッティングを維持し、修復動作の知覚される品質を改善し、システムを再び完全に操作可能にするために必要な時間を短縮しながら、なるべく多くのセッティングを保ち、問題になるセッティング及びファイルを探し出し、それらを選択的に外科的に訂正するように作用する。
【００１８】
具体的に説明するために、１つの仮想的シナリオにおいて、ネットワーク・ハードウェア装置１０がネットワークに接続することに失敗したということは、破損したファームウェアの可能性を示し得る。その失敗は失敗レジスタ２７に記録されることができる。ネットワーク・ハードウェア装置１０のＩＰアドレス・セッティングを調べるために機能訂正コード６４が使用されることができる。機能訂正コード６４は、ブロックされるポートおよびＩＰアドレスを含むファイアウォール・セッティングも調べることができる。例えばファイアウォールがネットワーク・ハードウェア装置のＩＰアドレスを外部ポートからブロックしていると機能訂正コード６４が判定したならば、機能訂正コードは、ネットワーク・ハードウェア装置６４の機能を回復させるために、ファイアウォールにおいてそのＩＰアドレスおよびポートを開くことができる。これは、コンフィギュレーション・セッティングの全てを盲目的に回復させることあるいはファームウェア全体を既知の良好なイメージと置き換えることに代わる有効な代替案であり、コンフィギュレーション・セッティングの変更が最少であるという結果をもたらす。
【００１９】
外部リカバリ装置６０によってインテリジェントなファイル検査および修復が実行されてファームウェア２２がリカバリされた後、ＬＥＤまたは他の照明装置４６を明るくすることなどにより、視覚表示がユーザに提供され得る。その視覚表示に応答して、ユーザは外部リカバリ装置６０を外部ＵＳＢポート３２から取り外すことができる。その後、ネットワーク・ハードウェア装置１０は、リカバリされたファームウェア２２からリブートされ得るように、リセットされ得る。ネットワーク・ハードウェア装置１０をリセットする１つの方法は、ネットワーク・ハードウェア装置１０をパワーサイクリング（ｐｏｗｅｒ−ｃｙｃｌｉｎｇ（電源ｏｎ／ｏｆｆ制御）)することである。ハードウェア装置のパワーサイクリングは、ネットワーク・ハードウェア装置１０をネットワーク１５から瞬間的に取り外してネットワーク・ハードウェア装置１０をネットワーク１５とホットプラギング（ｈｏｔ−ｐｌｕｇｇｉｎｇ）することを伴い得る。ユーザは、コネクタ１２と、接合するコネクタ１４とを物理的に切り離して再接続することによってハードウェア装置をパワーサイクリングすることができる。例えば、ユーザは、レバー（図示されていない）を取り外し引いてネットワーク・ハードウェア装置１０(これは管理モジュールであり得る)をシャーシから解放し、その管理モジュールをシャーシから少しの間切り離しておき、その後に該管理モジュールを元のシャーシ／中央平面にプラグで接続することができる。ユーザは外部リカバリ装置６０をネットワーク・ハードウェア装置１０から取り外すためにシャーシのところに既に物理的に存在しているかもしれないので、ネットワーク・ハードウェア装置１０を手操作でホットプラギングするというこのアプローチはネットワーク・ハードウェア装置１０をリセットする便利な方法である。
【００２０】
図２は、本発明の実施態様に従って潜在的に破損しているハードウェア装置を自動的に検出し修復する方法を概説したフローチャートである。破損したハードウェア装置は、用途特化ファームウェアにより操作される管理モジュールなどのネットワーク接続された装置であり得る。例えば、該方法は、図１のネットワーク・ハードウェア装置１０上で外部リカバリ装置６０により実行されるアルゴリズムにより実行され得る。従って、図２のフローチャートについての次の記述は、図１と図１についての記述とを参照することにより、さらに明瞭になるであろう。
【００２１】
デフォルト・ブート・シーケンスがステップ１００で初期化される。初期化されたとき、ハードウェア装置は、ハードウェア装置上の不揮発性メモリに格納されているブート・ローダおよびカーネルなどのブリングアップ・コードからブートし始める。ブート・ローダの実行は、デフォルト・ブート・シーケンスではオペレーティング・システムをロードするという結果をもたらすイベントのシリーズを開始させる。条件付きステップ１０２は、外部リカバリ装置が接続されているか否かを判定することを含む。もし接続されているならば、外部リカバリ装置はステップ１０４でマウントされ、デフォルト・ブート・シーケンスは一時的に中断される。外部リカバリ装置は、ステップ１０６でコードを検査するために内部記憶装置と通信できるようにカーネルをデバイス・ドライバと共にロードすることができる。検査されるべきコードは、ハードウェア装置を操作するために使用されるファームウェアを含むことができる。該ファームウェアは、ハードウェア装置の内部記憶装置上のカーネル・モジュール、システム・スクリプト、実行可能ユーザ・コード、およびコンフィギュレーション・ファイルを含むことができる。損傷したファイルあるいは不良コンフィギュレーション・セッティングを含むコード・エラーは条件付きステップ１０８で特定される。どんなコード・エラーも、期待されるファイル構造、内容、あるいはコンフィギュレーション・セッティングからの逸脱を特定することによって判定されることができる。外部リカバリ装置は、コンフィギュレーション・セッティングと、それらがハードウェア装置上のファームウェアに含まれる他のコードとどのように相互作用するかとを評価することができる。コードは、異常な操作を引き起こす可能性のある誤ったあるいは矛盾するセッティングがあるかどうか調べるために“構文解析”されることができる。このプロセスは、ネットワーク・ハードウェア装置が次のブートで適切に機能することを可能にするデータを該ファームウェア内のファイルが含むことを実証する。もしエラーが検出されなければ、内部記憶装置がステップ１１０でマウントされることができ、ハードウェア装置は内部記憶装置に格納されているカーネル・モジュール、システム・スクリプト、実行可能ユーザ・コード、およびコンフィギュレーションからステップ１１２でブートし続けることができる。
【００２２】
あるいは、もし条件付きステップ１０８でエラーが検出されたならば、コードはステップ１１４で選択的に修復されることができる。リカバリ・アルゴリズムは、例えば、ｅ２ｆｓｃｋを用いる基本的ファイル・システムのチェックから始まることができる。その後、コンフィギュレーション・ファイルおよびソフトウェアがコンパチビリティーまたは妥当性あるいはその両方についてチェックされ、必要に応じて訂正されることができる。不良なコンフィギュレーションの１つの例は、前のロードでは容認できたけれどもファームウェア・アップデートでシステムを不安定化させるコンフィギュレーション・ファイル内のコンフィギュレーション・パラメータである。次に、コンフィギュレーション・パラメータが、もし可能ならば、修理されることができる。あるいは、もしファイルのうちのいずれかが修復できる範囲を超えているかあるいは訂正不能であるならば、それらのファイルは、デフォルトの、あるいはインストールされた外部リカバリ装置からの既知の実際に役立つコンフィギュレーション・ファイルと置換されることができる。ステップ１１４における選択的コード修復の後に、修復されたハードウェア装置はステップ１１６でリセットされ、外部リカバリ装置はステップ１１８でディスマウントされることができる。その後、修復されたハードウェア装置は、ステップ１００から始まる既知の良好なロードにリブートされることができる。
【００２３】
当業者に理解されるであろうように、本発明はシステム、方法またはコンピュータ・プログラム製品として具体化され得る。従って、本発明は、完全にハードウェアの実施態様、完全にソフトウェアの実施態様(ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む)、あるいはソフトウェアと、本書で全て一般的に“回路”、“モジュール”または“システム”と称され得るハードウェア側面とを組み合わせた実施態様の形をとることができる。さらに、本発明は、当該媒体において具体化されるコンピュータで使用可能なプログラム・コードを有する有形の表現媒体において具体化されるコンピュータ・プログラム製品の形をとることができる。
【００２４】
１つまたはそれ以上の、コンピュータで使用可能なあるいはコンピュータ可読の媒体の任意の組み合わせが利用され得る。そのコンピュータで使用可能なあるいはコンピュータ可読の媒体は、例えば、それらに限定はされないが、電子、磁気、光、電磁、赤外線あるいは半導体のシステム、装置、デバイス、あるいは伝播媒体であることができる。コンピュータ可読の媒体のより具体的な例(網羅的でないリスト)は、次のもの、すなわち、１つまたはそれ以上のワイヤを有する電気結線、携帯可能なコンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(ＲＡＭ)、読み出し専用メモリ（ＲＯＭ)、消去可能でプログラマブルな読み出し専用メモリ(ＥＰＲＯＭまたはフラッシュ・メモリ)、携帯可能なコンパクト・ディスク読み出し専用メモリ(ＣＤ−ＲＯＭ）、光記憶装置、あるいは磁気記憶装置を含む。コンピュータで使用可能なあるいはコンピュータ可読の媒体は、プログラムが印刷された紙または他の適切な媒体でさえあり得る。それは、プログラムが、例えばその紙または他の媒体の光学的スキャンニングを介して電子的に捕捉され、その後に、必要ならばコンパイルされ、解釈され、あるいは適切な仕方で別様に処理され、その後にコンピュータ・メモリに格納されることができるからである。この文書の文脈においては、コンピュータで使用可能なあるいはコンピュータ可読の媒体は、命令実行システム、装置、またはデバイスによりあるいはそれらと関連して使用されるプログラムを内蔵し、記憶し、伝達し、伝播し、あるいはトランスポートすることのできる任意の媒体であり得る。コンピュータで使用可能な媒体は、ベースバンドのあるいは搬送波の一部として、それで具体化されるコンピュータで使用可能なプログラム・コードと共に伝播されるデータ信号により伝達され得る。コンピュータで使用可能なプログラム・コードは、無線、ワイヤライン、光ファイバ・ケーブル、ＲＦなどを含むがこれらに限定はされない任意の適切な媒体を用いて伝送され得る。
【００２５】
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語と、“Ｃ”プログラミング言語または類似のプログラミング言語などの在来の手続き型プログラミング言語とを含む、１つまたはそれ以上のプログラミング言語の任意の組み合わせで書かれることができる。プログラム・コードは、完全にユーザのコンピュータで、部分的にユーザのコンピュータで、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータでかつ部分的にリモート・コンピュータで、あるいは完全にリモート・コンピュータまたはサーバで、実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ)またはワイド・エリア・ネットワーク（ＷＡＮ)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されることができ、あるいは(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータへの接続が行われることができる。
【００２６】
本発明は以下で、本発明の実施態様に従う方法、装置(システム)およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方と関連して記述される。該フローチャートまたはブロック図あるいはその両方の各ブロックと、該フローチャートまたはブロック図あるいはその両方の中のブロックの組み合わせとがコンピュータ・プログラム命令により実行され得るということが理解されるであろう。コンピュータまたは他のプログラマブルなデータ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで明示される機能／動作を実行するための手段を作るようにマシンを作るためにこれらのコンピュータ・プログラム命令は汎用コンピュータ、専用コンピュータ、あるいは他のプログラマブルなデータ処理装置のプロセッサに提供されることができる。
【００２７】
コンピュータ可読媒体に格納された命令が、該フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで明示される機能／動作を実行する命令手段を含む製造物品を作るように、これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブルなデータ処理装置に特定の仕方で機能するように命令することのできるコンピュータ可読媒体に格納されることもできる。
【００２８】
コンピュータまたは他のプログラマブルな装置で実行する命令が、該フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで明示される機能／動作を実行するためのプロセスを提供するように、コンピュータ・プログラム命令は、コンピュータで実行されるプロセスを作るために一連の操作ステップをコンピュータまたは他のプログラマブルな装置で実行させるようにコンピュータまたは他のプログラマブルなデータ処理装置にロードされることもできる。
【００２９】
図面のフローチャートおよびブロック図は、本発明の種々の実施態様に従うシステム、方法およびコンピュータ・プログラム製品の可能なインプリメンテーションのアーキテクチャ、機能、および動作を説明する。これに関して、該フローチャートまたはブロック図の各ブロックは、明示された１つまたは複数の論理機能を実行するための１つまたはそれ以上の実行可能な命令を含むコードのモジュール、セグメント、または部分を表すことができる。或る代わりのインプリメンテーションでは、ブロックに記された機能が、図に記されている順序から外れて生じ得るということにも留意するべきである。例えば、連続して示されている２つのブロックは、実際に、実質的に同時に実行されることができ、あるいは該ブロックは、関係する機能に応じて時には逆の順序で実行され得る。該ブロック図またはフローチャートあるいはその両方の各ブロックと、該ブロック図またはフローチャートあるいはその両方の中のブロックの組み合わせとが、明示された機能または動作を実行する専用ハードウェア・ベースのシステムにより、あるいは専用ハードウェアとコンピュータ命令との組み合わせにより、実行され得るということも留意されるであろう。
【００３０】
本書で使用された用語は、特定の実施態様を記述することを目的としているに過ぎなくて、発明を限定するように意図されてはいない。“含む”という用語は、この明細書で使用されるときには、述べられた特徴、インテジャー（ｉｎｔｅｇｅｒ）、ステップ、操作、エレメント、コンポーネント、およびグループのうちの少なくとも１つの存在を明示するけれども、１つまたはそれ以上の他の特徴、インテジャー、ステップ、操作、エレメント、コンポーネントおよびそのグループのうちの少なくとも１つの存在あるいは付加を排除しないということがさらに理解されるであろう。“好ましい”、“任意選択”、“できる”という用語および類似の用語は、言及されたアイテム、状態またはステップが発明の任意の(必要ではない)特徴であることを示すために使用されている。
【００３１】
以下の請求項の全ての手段またはステップと機能エレメントとの対応する構造、材料、動作、および同等物は、請求項で明示された他のエレメントと結合して該機能を実行するための任意の構造、材料、あるいは動作を含むように意図されている。本発明についての記述は例証および記述を目的として提示されているが、網羅的であることや開示された形の発明に限定されることは意図されていない。発明の範囲および真意から逸脱せずに多くの改変および変化形が当業者には明らかであろう。実施態様は、発明の原理および実際的応用を最善に説明し、他の当業者が、意図された特定の用途に適するような種々の改変を伴う種々の実施態様を目的として本発明を理解することを可能にするために選択され記述された。
【符号の説明】
【００３２】
１０  ネットワーク・ハードウェア装置
１２  コネクタ
１４  接合コネクタ
１５  ネットワーク
１６  装置
１７  電源スイッチ
２０  内部記憶装置(不揮発性)
２２  ファームウェア(破損している)
２３  カーネル・モジュール
２４  システム・スクリプト
２５  実行可能ユーザ・コード
２６  コンフィギュレーション・ファイル
２７  失敗レジスタ
３１  ＵＳＢポート(内部)
３２  ＵＳＢポート(外部)
３４  ＥＥＰＲＯＭＳ
３５  バイタル製品データ
３６  ＮＯＲフラッシュ
３７  ブート・ローダ
３８  Ｌｉｎｕｘカーネル
４０  ＲＡＭ(揮発性)
４２  オペレーティング・システム
４６  照明装置
６０  外部リカバリ装置
６１  ファイルシステム
６２  初期化スクリプト
６３  デバイス・ドライバ
６４  機能訂正コード
【図１】
2010113706.tif 000003
【図２】
2010113706.tif 000004