以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施の形態)
まず、本発明の第1の実施の形態としてのファームウェア実行装置100について説明する。ファームウェア実行装置100は、コンピュータ装置に実装されたファームウェアを実行する装置である。ファームウェア実行装置100の機能ブロック構成を図1に示す。図1において、ファームウェア実行装置100は、組合せ情報記憶部101と、ドライババージョン記憶部102と、ファームウェア記憶部103と、依存関係判断部104と、ファームウェア更新部105と、機能モジュール選択部106とを備える。
ここで、ファームウェア実行装置100のハードウェア構成の一例を図2に示す。ファームウェア実行装置100は、CPU(Central Processing Unit)1001と、メモリ1002と、ネットワークインタフェース1003と、管理プロセッサ1004と、管理ネットワークインタフェース1005とを含むコンピュータ装置によって構成される。また、ファームウェア実行装置100を構成するコンピュータ装置は、出力装置1006および入力装置1007を含む。また、ファームウェア実行装置100を構成するコンピュータ装置は、ハードウェアデバイス1008を含む。あるいは、ハードウェアデバイス1008は、ファームウェア実行装置100を構成するコンピュータ装置の外部に接続されていてもよい。
メモリ1002は、RAM(Random Access Memory)やROM(Read Only Memory)、補助記憶装置(ハードディスク等)等によって構成される。また、メモリ1002は、コンピュータ装置をファームウェア実行装置100として動作させるファームウェアを記憶している。その他、メモリ1002は、オペレーティングシステムやデバイスドライバ等のプログラムを記憶する。
CPU1001は、メモリ1002に記憶されたプログラムを読み込んで実行し、他の各部を制御する。
ネットワークインタフェース1003は、ネットワークに接続するインタフェースである。
管理ネットワークインタフェース1005は、アウトオブバンド管理用のネットワークに接続するインタフェースである。
管理プロセッサ1004は、管理ネットワークインタフェース1005を介して外部の管理サーバ等と通信を行うとともに、他の各部を制御する。
この場合、組合せ情報記憶部101、ドライババージョン記憶部102およびファームウェア記憶部103は、メモリ1002によって構成される。また、依存関係判断部104および機能モジュール選択部106は、メモリ1002に記憶されたプログラムを読み込んで実行するCPU1001によって構成される。また、ファームウェア更新部105は、メモリ1002に記憶されたプログラムを実行するCPU1001と、管理プロセッサ1004と、管理ネットワークインタフェース1005とによって構成される。
なお、ファームウェア実行装置100およびその機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ファームウェア実行装置100の各機能ブロックの詳細について説明する。
組合せ情報記憶部101は、組合せ情報を記憶する。組合せ情報は、依存関係情報を含む。
依存関係情報は、ファームウェアの各バージョンに含まれる機能モジュールのバージョンと、ドライバのバージョンとの組合せにおいて、バージョン間の依存関係を表す情報である。なお、ここでいうファームウェアとは、コンピュータ装置に実装されるファームウェアであり、BIOS(Basic Input Output System)とも呼ばれる。また、ここでいうドライバとは、コンピュータ装置のオペレーティングシステム上で動作し、コンピュータ装置の内部または外部に接続されるハードウェアデバイス1008を制御するソフトウェアである。具体的には、依存関係情報は、ファームウェアの各バージョンに含まれる機能モジュールのバージョンに対して、そのバージョンの機能モジュールを利用可能なドライバのバージョンを表す。
ドライババージョン記憶部102は、コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶する。
ファームウェア記憶部103は、コンピュータ装置に現在実装されている現行のファームウェアに本来含まれるバージョンの機能モジュールを記憶する。加えて、ファームウェア記憶部103は、ドライバのバージョンとの依存関係を有する機能モジュールについては、ドライバの各バージョンによって利用可能な機能モジュールを記憶する。つまり、ファームウェア記憶部103には、現行のファームウェアに本来含まれるバージョンの機能モジュールに加えて、当該バージョンの機能モジュールを利用可能なドライバよりも古い各バージョンのドライバによって利用可能な機能モジュールが記憶される。
例えば、ファームウェア記憶部103に記憶される情報の一例を図3に示す。図3の例では、ファームウェアには、機能モジュールA、BおよびCが含まれるものとする。また、機能モジュールAおよびBは、ドライバのバージョンとの間に依存関係が有るものとする。また、機能モジュールCは、ドライバのバージョンとの間に依存関係が無いものとする。また、機能モジュール「X」の各バージョンを、機能モジュールXn(nは数値を表す文字列)と表すものとする。また、機能モジュールXnは、nが大きいほど、バージョンが新しいことを表すものとする。
この場合、図3において、ファームウェア記憶部103には、現行のバージョンのファームウェアに本来含まれる機能モジュールとして、機能モジュールA3、B2およびC1が記憶されている。また、機能モジュールAについては、機能モジュールA3を利用可能なドライバよりも古い各バージョンのドライバによって利用可能な機能モジュールA2および機能モジュールA1が記憶されている。同様に、機能モジュールBについても、機能モジュールB2を利用可能なドライバよりも古い各バージョンのドライバによって利用可能な機能モジュールB1が記憶されている。
依存関係判断部104は、コンピュータ装置の起動時に、現行のファームウェアのバージョンと、現行のドライバのバージョンとの間に依存関係の不整合があるか否かを、組合せ情報を参照することにより判断する。また、依存関係判断部104は、現行のファームウェアのバージョンと、現行のドライバのバージョンとの間に依存関係の不整合がある場合、ファームウェアの更新によって不整合が解消されるか否かを、組合せ情報記憶部101を参照することにより判断する。
具体的には、組合せ情報において、現行のファームウェアに本来含まれる機能モジュールのバージョンを利用可能なドライバのバージョンと、現行のドライバのバージョンとが合致しないとする。この場合、現行のファームウェアのバージョンと、現行のドライバのバージョンとの間に依存関係の不整合があることになる。
この場合、さらに、現行のドライバのバージョンによって利用可能な機能モジュールのバージョンが、現行のファームウェアに本来含まれる機能モジュールのバージョンより新しいとする。つまり、ファームウェアより先にドライバが更新された状況である。この場合、ファームウェアの更新により、依存関係の不整合が解消される。
一方、現行のドライバのバージョンによって利用可能なファームウェアのバージョンよりも、現行のファームウェアに本来含まれる機能モジュールのバージョンが新しいとする。つまり、ドライバより先にファームウェアが更新された状況である。この場合、ファームウェアを更新しても、依存関係の不整合は解消されない。
ファームウェア更新部105は、依存関係判断部104によって、ファームウェアの更新により不整合が解消されると判断された場合に、不整合を解消するバージョンのファームウェアを取得する。例えば、ファームウェア更新部105は、管理ネットワークを介して接続される管理サーバから、不整合を解消するバージョンのファームウェアを取得してもよい。あるいは、ファームウェア更新部105は、入力装置1007を介して、不整合を解消するバージョンのファームウェアの格納位置を取得し、格納位置が示す場所から該当するファームウェアを取得してもよい。
ここで、ファームウェア更新部105によって取得されるファームウェアは、該当するファームウェアのバージョンに本来含まれる機能モジュールに加えて、上述したようなドライバの各バージョンによって利用可能なバージョンの機能モジュールを含むものとする。
すなわち、取得されるファームウェアは、ドライバのバージョンとの間にバージョン間の依存関係を有する機能モジュールについて、複数のバージョンの機能モジュールを含んでいることになる。
また、ファームウェア更新部105は、このような不整合を解消するバージョンのファームウェアに含まれる機能モジュールを、ファームウェア記憶部103に書き込むことにより、現行のファームウェアを更新する。
また、ファームウェア更新部105は、ファームウェア記憶部103の更新後、コンピュータ装置を再起動する。
機能モジュール選択部106は、依存関係判断部104によって、依存関係の不整合がないと判断された場合に、ファームウェア記憶部103から、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行する。また、機能モジュール選択部106は、ファームウェアの更新により依存関係の不整合が解消されないと判断された場合に、ファームウェア記憶部103から、現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する。
以上のように構成されたファームウェア実行装置100の動作について、図4を参照して説明する。なお、以下の動作は、コンピュータ装置の起動時に開始される。
まず、依存関係判断部104は、組合せ情報記憶部101から、組合せ情報を読み込む(ステップS101)。
次に、依存関係判断部104は、ドライババージョン記憶部102から、現行のドライバのバージョンを表す情報を読み込む(ステップS102)。
次に、依存関係判断部104は、ファームウェア記憶部103に記憶された現行のファームウェアに基づいて、そのバージョンを表す情報を取得する(ステップS103)。
次に、依存関係判断部104は、現行のファームウェアのバージョンと、現行のデバイスドライバのバージョンとの間に依存関係の不整合があるか否かを、組合せ情報を参照することにより判断する(ステップS104)。
ここで、不整合が無いと判断された場合(ステップS104でNo)、機能モジュール選択部106は、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する(ステップS105)。
一方、不整合が有ると判断された場合(ステップS104でYes)、依存関係判断部104は、ファームウェアの更新により不整合が解消されるか否かを判断する(ステップS106)。
ここで、ファームウェアの更新により不整合が解消されると判断された場合(ステップS106でYes)、ファームウェア更新部105は、不整合を解消するバージョンのファームウェアを取得する(ステップS107)。
前述したように、取得されるファームウェアには、そのバージョンのファームウェアに本来含まれるバージョンの機能モジュールに加えて、より古い各バージョンのドライバによって利用可能なバージョンの機能モジュールが含まれる。
次に、ファームウェア更新部105は、取得したファームウェアに含まれる機能モジュールをファームウェア記憶部103に書き込むことにより、ファームウェアを更新する(ステップS108)。
そして、ファームウェア更新部105は、コンピュータ装置を再起動する(ステップS109)。これにより、ファームウェア実行装置100の動作は、再起動後にステップS101から繰り返される。そして、ファームウェアが更新されて依存関係の不整合が解消されているので、ステップS104でNoとなる。その後、ステップS105が実行され、現行のファームウェアに本来含まれるバージョンの機能モジュールが選択される。
一方、ファームウェアの更新により不整合が解消されないと判断された場合(ステップS106でNo)、機能モジュール選択部106は、現行のドライバのバージョンにより利用可能なバージョンの機能モジュールを選択する(ステップS110)。
以降、ファームウェア実行装置100は、ステップS105またはステップS110で選択された機能モジュールを実行する。
次に、本発明の第1の実施の形態の効果について述べる。
本発明の第1の実施の形態としてのファームウェア実行装置は、必要なリソース量の増大を抑制しながら、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
その理由について説明する。本実施の形態では、組合せ情報記憶部が、依存関係情報を含む組合せ情報を記憶している。依存関係情報は、ファームウェアの各バージョンに含まれる機能モジュールのバージョンと、ドライバのバージョンとの組合せについて、バージョン間の依存関係を表す情報である。また、ドライババージョン記憶部が、現行のドライバのバージョンを表す情報を記憶している。また、ファームウェア記憶部が、現行のファームウェアに本来含まれるバージョンの機能モジュールに加えて、ドライバのバージョンとの依存関係を有する機能モジュールについて、ドライバの各バージョンによって利用可能な機能モジュールを記憶している。
そして、コンピュータ装置の起動時に、依存関係判断部が、現行のファームウェアのバージョンおよび現行のドライバのバージョン間に依存関係の不整合があるか否か、また、不整合がある場合にファームウェアの更新により不整合が解消されるか否かを判断する。そして、ファームウェアの更新により不整合が解消される場合には、ファームウェア更新部が、現行のファームウェアを更新してコンピュータ装置を再起動する。また、バージョン間に依存関係の不整合が無い場合には、機能モジュール選択部が、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行する。また、ファームウェアの更新により不整合が解消されない場合に、機能モジュール選択部が、現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行するからである。
つまり、本実施の形態は、ファームウェアの更新によりバージョン間の依存関係の不整合が解消される場合には、ファームウェアを更新して再起動することにより不整合を解消する。また、本実施の形態は、ファームウェアの更新によりバージョン間の依存関係の不整合が解消されない場合でも、ファームウェア全体をダウングレードすることなく、一部の機能モジュールだけをダウングレードすることにより、不整合を解消する。
このように、本実施の形態は、ファームウェアおよびドライバのどちらが先に更新されても、自装置自身がファームウェアを更新したり、一部の機能モジュールだけをダウングレードしたりして、不整合を解消する。その結果、本実施の形態は、ファームウェアまたはドライバの更新に際して、不具合が発生する状態でオペレーティングシステムを稼働させることがない。
さらには、背景技術で述べた特許文献1に記載された関連技術は、ドライバのバージョンとの間の依存関係の不整合を解消するためにファームウェア全体をダウングレードしていた。このため、特許文献1に記載された関連技術は、旧バージョンのファームウェア全体を保存するのに充分なだけのリソースを必要としていた。これに対して、本実施の形態は、必要となる全ての旧バージョンのファームウェア全体を保存しておく必要がなく、必要となる機能モジュール単位で旧バージョンを保存しておけばよいので、ファームウェア記憶部として必要な容量の増大を抑制することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態としてのファームウェア装置について図面を参照して詳細に説明する。本実施の形態では、本発明の第1の実施の形態と同様に、ファームウェアおよびドライバのバージョン間の不整合を解消した上で、さらに、ファームウェアまたはドライバの更新に伴う設定変更に起因する不具合を解消するファームウェア装置について説明する。
ここで、ファームウェアまたはドライバの更新に伴う設定変更に起因する不具合について説明する。ファームウェアまたはそのドライバが更新される際には、不具合の解消や性能向上を目的として、ファームウェアのパラメータが利用者により変更されることがある。この場合、バージョンの組合せや更新順序を考慮してファームウェアおよびドライバを更新しても、ユーザ環境で変更されたファームウェアのパラメータに起因して、新たな不具合が起きることがある。
例えば、コンピュータ装置にPCI(Peripheral Component Interconnect)接続されたDAC(Disk Array Controller)が、ドライバの不具合に起因して、PCIリンク速度をファームウェア側で制限しないと正常に動作しない場合を想定する。この場合、DACのドライバを、ファームウェアのバージョンに適合する不具合のないバージョンに更新すると同時に、ファームウェア側でPCIリンク速度の設定について性能を最大化する値に変更する必要がある。このとき、ファームウェアおよびドライバのバージョンの組合せや更新順序を考慮して更新を行っても、PCIリンク速度の設定に起因して新たな不具合が起きる可能性もある。
本実施の形態では、ファームウェアまたはドライバの更新に伴う設定変更による不具合を解消するために追加される機能について説明する。
まず、本発明の第2の実施の形態としてのファームウェア実行装置120の機能ブロック構成を図5に示す。図5において、ファームウェア実行装置120は、本発明の第1の実施の形態としてのファームウェア実行装置100に対して、組合せ情報記憶部101に替えて組合せ情報記憶部121を備える点が異なる。また、ファームウェア記憶部103に替えてファームウェア記憶部123を備える点が異なる。さらに、パラメータ設定部127を備える点が異なる。
ここで、ファームウェア実行装置120およびその各機能ブロックは、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。この場合、パラメータ設定部127は、メモリ1002に記憶されたプログラムを読み込んで実行するCPU1001によって構成される。ただし、ファームウェア実行装置120およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ファームウェア実行装置120の機能ブロックのうち、本発明の第1の実施の形態と異なる各機能ブロックについて詳細を説明する。
組合せ情報記憶部121は、機能モジュールのバージョンとドライバのバージョンとの組合せについて、本発明の第1の実施の形態と同様の依存関係情報に加えて、設定値情報、エラー情報および優先度情報を含めた組合せ情報を記憶する。
設定値情報は、その組合せにおいて、ファームウェアの1つ以上のパラメータに設定され得る各設定値の組を表す。
エラー情報は、その組合せにおいてその設定値情報が適用された場合の、コンピュータ装置における動作エラーの有無を表す。
優先度情報は、その組合せにおけるその設定値情報の優先度を表す。
なお、このような組合せ情報は、例えば、あらかじめドライバまたはファームウェアのベンダによって提供されることが考えられる。具体的には、あるドライバのバージョンと機能モジュールのバージョンとの組合せにおいて不具合が起きることが想定され、そのような不具合を回避可能なパラメータの設定値がベンダによって予め提供されることがある。例えば、ソフトウェアRAID(Redundant Arrays of Inexpensive Disks)の機能についてファームウェアに含まれる機能モジュールのバージョンとドライバのバージョンとの間に依存関係があるとする。このとき、制御対象となるストレージを接続するPCIのリンク速度の変更や、ハードウェア割り込みの間隔の変更、または、ストレージの省電力制御機能の無効化等により、不具合を回避できることがある。このような場合、不具合が生じる可能性がある機能モジュールのバージョンとドライバのバージョンとの組合せについて、PCIのリンク速度、ハードウェア割り込みの間隔、ストレージの省電力制御機能等の各設定値の組が、ベンダから提供されていてもよい。また、同一の組合せについて1組以上の設定値情報が提供される場合には、さらに、それぞれの設定値の優先度を表す優先度情報が提供されていてもよい。さらに、それぞれの設定値情報に対して動作エラーの有無が検証済みである場合には、エラー情報が提供されていてもよい。
ファームウェア記憶部123は、本発明の第1の実施の形態におけるファームウェア記憶部103と同様の情報に加えて、ファームウェアのパラメータの設定値を記憶する。
パラメータ設定部127は、組合せ情報に基づいて、機能モジュール選択部106によって選択された機能モジュールのバージョンおよび現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値を、ファームウェアのパラメータとして設定する。すなわち、パラメータ設定部127は、そのような設定値を用いて、ファームウェア記憶部123に記憶された設定値を更新する。もし、該当する組合せにおいて、動作エラーの無い設定値を示す1組以上の設定値情報がある場合、パラメータ設定部127は、優先度に基づき選択した設定値を、ファームウェアのパラメータとして設定する。
なお、動作エラーが無い(または有る)設定値とは、ある組合せに関する組合せ情報において、動作エラーが無い(または有る)ことを示すエラー情報に関連付けられた設定値情報が示す設定値を指すものとする。また、優先度に基づき選択した設定値とは、例えば、ある組合せに関する組合せ情報において、優先度が最も高いことを表す優先度情報に関連付けられた設定値情報が示す設定値であってもよい。
なお、該当する組合せに関する組合せ情報に、設定値情報が含まれていないケースも考えられる。この場合、パラメータ設定部127は、設定値を設定する処理を省略してもよい。あるいは、この場合、パラメータ設定部127は、任意の設定値をパラメータに設定してもよい。例えば、そのような任意の設定値は、入力装置1007を介して入力された値であってもよい。
また、該当する組合せに関する組合せ情報に、設定値情報が含まれているが、エラー情報が関連付けられていないケースも考えられる。この場合、パラメータ設定部127は、エラー情報が関連付けられていない設定値情報については、動作エラーが無いものとみなして選択の候補としてもよい。
また、該当する組合せに関する組合せ情報に、動作エラーが有ることを表すエラー情報が登録されているが、動作エラーが無いことを表すエラー情報が登録されていないケースも考える。この場合、パラメータ設定部127は、動作エラーが有る設定値以外の任意の設定値をパラメータに設定してもよい。例えば、そのような任意の設定値は、出力装置1006に対して動作エラーが有る設定値を示すことにより、入力装置1007を介して入力される他の設定値であってもよい。
また、該当する組合せに関する組合せ情報に、動作エラーが無い1組以上の設定値情報が登録されているが、優先度情報が登録されていないケースも考えられる。この場合、パラメータ設定部127は、そのような設定値情報から任意の1つを選択して、パラメータとして設定してもよい。
以上のように構成されたファームウェア実行装置120の動作について、図6を参照して説明する。
図6において、ファームウェア実行装置120は、ステップS101〜S110まで、本発明の第1の実施の形態と同様に動作する。これにより、ファームウェア実行装置120は、現行のファームウェアおよび現行のドライバのバージョン間に依存関係の不整合が無い場合には、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する。また、ファームウェア実行装置120は、現行のファームウェアおよび現行のドライバのバージョン間に依存関係の不整合があり、ファームウェアの更新により不整合が解消される場合には、ファームウェアを更新してコンピュータ装置を再起動する。再起動後に、ファームウェア実行装置120は、更新された現行のファームウェアおよび現行のドライバのバージョン間に依存関係の不整合が無いと判断することになる。したがって、ファームウェア実行装置120は、更新された現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する。また、ファームウェア実行装置120は、ファームウェアの更新により不整合が解消されない場合には、現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択する。
次に、パラメータ設定部127は、選択された機能モジュールのバージョンおよび現行のドライバのバージョンの組合せについて、動作エラーが有ることを表すエラー情報が登録されているか否かを判断する(ステップS121)。
ここで、動作エラーが有ることを表すエラー情報が登録されていない場合(ステップS121でNo)について説明する。この場合、パラメータ設定部127は、優先度に基づき選択した設定値を、パラメータとして設定する(ステップS122)。
一方、動作エラーが有ることを表すエラー情報が登録されている場合(ステップS121でYes)について説明する。この場合、パラメータ設定部127は、動作エラーが無い設定値の中から優先度に基づき選択した設定値を、パラメータとして設定する(ステップS123)。
なお、前述のように、パラメータ設定部127は、エラー情報が関連付けられていない設定値情報については、動作エラーがない設定値を示すとみなすものとする。また、動作エラーが無い設定値がない場合、パラメータ設定部127は、入力装置1007から入力される設定値等を適用してもよい。
以降、ファームウェア実行装置120は、ステップS105またはステップS110で選択された機能モジュールを実行し、ステップS122またはS123で設定されたパラメータを用いて動作する。
次に、ファームウェア実行装置120の動作を3つの具体例を用いて説明する。なお、これらの具体例では、ファームウェアのバージョンはaまたはbで表され、aよりbが新しいものとする。また、ファームウェアには、ドライバのバージョンとの間に依存関係を有する機能モジュールAが含まれるものとする。また、機能モジュールAのバージョンは、A1よりA2が新しいものとする。また、ドライバのバージョンは、1.0または2.0で表され、1.0より2.0が新しいものとする。また、優先度は、1、2といった整数で表され、小さい値ほど優先度が高いことを表すものとする。
<具体例1>
ここでは、ファームウェアのバージョンおよびドライバのバージョン間にいずれの組合せでも依存関係がない場合の具体例について説明する。
まず、現行のファームウェアは、バージョンaであるとする。
また、ドライババージョン記憶部102は、現行のドライバのバージョンとして「2.0」を記憶しているとする。つまり、現行のドライバは、バージョン2.0である。
また、組合せ情報記憶部121は、図7に示すような組合せ情報を記憶しているとする。図7では、説明のため、項目「No」の列に数字を記載している。以降、数字「x」が記載されている行の組合せ情報を、「No.xの組合せ情報」とも記載する。図7に示すNo.1〜No.2の組合せ情報は、ファームウェアのバージョンに含まれる機能モジュールのいずれのバージョンと、ドライバのいずれのバージョンとの組合せにおいても、バージョン間の依存関係が無いことを表している。
また、No.1の組合せ情報は、パラメータXとして「Disabled」およびパラメータYとして「Enabled」が設定され得ることを表している。また、No.1の組合せ情報は、これらの設定値に対して優先度1が設定されていることを表している。また、No.1の組合せ情報は、これらの設定値に対してエラー情報が登録されていないことを表している。
No.2の組合せ情報は、パラメータXとして「Disabled」およびパラメータYとして「Disabled」が設定され得ることを表している。また、No.2の組合せ情報は、これらの設定値に対して優先度2が設定されていることを表している。また、No.2の組合せ情報は、これらの設定値に対して動作エラーの有無を表すエラー情報が登録されていないことを表している。
この場合、まず、ファームウェア実行装置120において、起動時に、依存関係判断部104は、組合せ情報記憶部121から、図7の組合せ情報を読み込む(ステップS101)。
次に、依存関係判断部104は、現行のファームウェアのバージョンaと、現行のドライバのバージョン2.0との間に、依存関係の不整合が無いと判断する(ステップS102〜S103、S104でNo)。
そこで、機能モジュール選択部106は、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する(ステップS105)。
次に、パラメータ設定部127は、選択された機能モジュールのバージョンと、現行のドライバのバージョンとの組合せについて、エラーが有ることを示すエラー情報が登録されていないと判断する(ステップS121でNo)。
そこで、パラメータ設定部127は、優先度が最も高い「1」が設定されたNo.1の組合せ情報に基づいて、パラメータXとして「Disabled」およびパラメータYとして「Enabled」を設定する(ステップS122)。
そして、ファームウェア実行装置120は、選択された機能モジュールを実行し、設定されたパラメータで動作する。
<具体例2>
ここでは、ファームウェアより先にドライバが更新された状況でコンピュータ装置が起動された具体例について説明する。
まず、現行のファームウェアは、バージョンaであるとする。
また、ドライババージョン記憶部102は、現行のドライバのバージョンとして「2.0」を記憶しているとする。つまり、現行のドライバは、バージョン2.0である。
また、組合せ情報記憶部121は、図8に示すような組合せ情報を記憶しているとする。
例えば、図8のNo.1の組合せ情報に含まれる依存関係情報は、ファームウェアのバージョンaに含まれる機能モジュールA1に対して、バージョン1.xのドライバが必要であることを表している。ここで、xは任意の数値である。また、この依存関係情報は、ファームウェアのバージョンaに対して、本来含まれる機能モジュールA1に基づき、バージョン1.xのドライバが必要であることも表している。また、No.1の組合せ情報に含まれる設定値情報は、機能モジュールA1およびドライバのバージョン1.xの組合せにおいて、パラメータXとして「Disabled」およびパラメータYとして「Enabled」が設定され得ることを表している。また、No.1の組合せ情報に含まれるエラー情報は、該当する設定値に対して動作エラーが無いことを表している。また、No.1の組合せ情報に含まれる優先度情報は、該当する設定値には、優先度1が設定されていることを表している。
また、図8のNo.2〜No.5の組合せ情報は、ファームウェアのバージョンbには、機能モジュールAについて、バージョンA1およびA2が含まれることを表している。なお、ファームウェアのバージョンbに本来含まれる機能モジュールAのバージョンは、A2であるとする。なお、No.2〜No.5の各組合せ情報に含まれる依存関係情報、設定値情報、エラー情報および優先度情報については、図示した通りであり、詳細な説明を省略する。
この場合、まず、ファームウェア実行装置120において、起動時に、依存関係判断部104は、組合せ情報記憶部121から図8の組合せ情報を読み込む(ステップS101)。
ここで、No.1の組合せ情報を参照すると、現行のファームウェアのバージョンaを利用可能なドライバのバージョンは、本来含まれる機能モジュールA1を利用可能なドライバのバージョン1.xである。しかしながら、現行のドライバはバージョン2.0である。
そこで、依存関係判断部104は、現行のファームウェアのバージョンaと、現行のドライバのバージョン2.0との間に、依存関係の不整合が有ると判断する(ステップS102〜S103、S104でYes)。
さらに、No.4〜No.5の組合せ情報を参照すると、現行のドライバのバージョン2.0との間に依存関係の不整合がない機能モジュールA2を本来含むファームウェアは、バージョンbである。ファームウェアのバージョンbは、現行のバージョンaより新しい。
したがって、依存関係判断部104は、ファームウェアの更新により不整合が解消されると判断する(ステップS106でYes)。
そこで、ファームウェア更新部105は、不整合を解消するバージョンbのファームウェアを取得して(ステップS107)、ファームウェアを更新する(ステップS108)。すなわち、ファームウェア更新部105は、取得したファームウェアに含まれる機能モジュールA1およびA2を、ファームウェア記憶部123に書き込む。そして、ファームウェア更新部105は、コンピュータ装置を再起動する(ステップS109)。
再起動されたコンピュータ装置において、依存関係判断部104は、組合せ情報に基づいて、現行のファームウェアのバージョンbと現行のドライバのバージョン2.0との間に、依存関係の不整合が無いと判断する(ステップS101〜S103、S104でNo)。
そこで、機能モジュール選択部106は、現行のファームウェアのバージョンbに本来含まれる機能モジュールA2を選択する(ステップS105)。
次に、パラメータ設定部127は、選択された機能モジュールA2と、現行のドライバのバージョン2.0との組合せについて、エラーが有ることを示すエラー情報が登録されていないと判断する(ステップS121でNo)。
そこで、パラメータ設定部127は、優先度が最も高い「1」が設定されたNo.4の組合せ情報に基づいて、パラメータXとして「Enabled」およびパラメータYとして「Enabled」を設定する。
そして、ファームウェア実行装置120は、選択された機能モジュールA2を実行し、設定されたパラメータで動作する。
<具体例3>
ここでは、ファームウェアがドライバより先に更新された状況でコンピュータ装置が起動された具体例について説明する。
まず、現行のファームウェアはバージョンbであるとする。
また、ドライババージョン記憶部102は、現行のドライバのバージョンとして「1.0」を記憶しているとする。つまり、現行のドライバはバージョン1.0である。
また、組合せ情報記憶部121は、具体例2と同様に、図8に示した組合せ情報を記憶しているとする。
この場合、まず、ファームウェア実行装置120において、起動時に、依存関係判断部104は、組合せ情報記憶部121から図8の組合せ情報を読み込む(ステップS101)。
ここで、No.4〜No.5の組合せ情報を参照すると、現行のファームウェアのバージョンbを利用可能なドライバのバージョンは、本来含まれる機能モジュールA2を利用可能なドライバのバージョン2.xである。しかしながら、現行のドライバはバージョン1.0である。
そこで、依存関係判断部104は、現行のファームウェアのバージョンbと、現行のドライバのバージョン1.0との間に、依存関係の不整合が有ると判断する(ステップS104でYes)。
また、No.1の組合せ情報を参照すると、現行のドライバのバージョン1.0との間に依存関係の不整合がないバージョンの機能モジュールを本来含むファームウェアは、バージョンaである。ファームウェアのバージョンaは、現行のバージョンbより古い。
したがって、依存関係判断部104は、ファームウェアを更新しても不整合が解消されないと判断する(ステップS106でNo)。
そこで、機能モジュール選択部106は、現行のファームウェアのバージョンbに含まれる複数のバージョンの機能モジュールAのうち、現行のドライバのバージョン1.0によって利用可能な機能モジュールA1を選択する(ステップS110)。
次に、パラメータ設定部127は、選択された機能モジュールA1と、現行のドライバのバージョン1.0との組合せについて、動作エラーが有ることを示すエラー情報が登録されていると判断する(ステップS121でYes)。
そこで、パラメータ設定部127は、動作エラーが無い設定値のうち優先度が最も高い「2」が設定されたNo.3の組合せ情報に基づいて、パラメータXとして「Disabled」およびパラメータYとして「Disabled」を設定する(ステップS123)。
そして、ファームウェア実行装置120は、選択された機能モジュールA1を実行し、設定されたパラメータで動作する。
以上で、具体例の説明を終了する。
次に、本発明の第2の実施の形態の効果について述べる。
本発明の第2の実施の形態としてのファームウェア実行装置は、必要なリソース量の増大を抑制しながら、ファームウェアまたはドライバの更新に伴うパラメータの設定変更に起因する不具合を、より確実に回避することができる。
その理由について説明する。本発明の第2の実施の形態は、本発明の第1の実施の形態と同様の構成に加えて、次の構成を備える。すなわち、組合せ情報記憶部が、機能モジュールのバージョンおよびドライバのバージョンの組合せ毎に、依存関係情報、設定値情報、エラー情報および優先度情報を含む組合せ情報を記憶する。そして、パラメータ設定部が、選択された機能モジュールのバージョンと現行のドライバのバージョンとの組合せにおいて、動作エラーが無い設定値のうち優先度に基づき選択した設定値を、パラメータとして設定するからである。
このように、本実施の形態は、依存関係の不整合がないよう選択された機能モジュールのバージョンおよび現行のドライバのバージョンの組合せにおいて、動作エラーが無い設定値を優先度に基づき選択してパラメータとして設定する。したがって、本実施の形態は、ファームウェアまたはドライバの更新の際に、パラメータの設定変更により不具合を生じさせる可能性を大幅に低減するだけでなく、ファームウェアのパラメータとしてより適切な設定値を設定して性能を向上させることができる。
なお、本実施の形態の具体例において、組合せ情報記憶部に記憶される組合せ情報の一例を図7〜図8に示した。ただし、組合せ情報の構造や形式は、これら図示したものに限られない。
(第3の実施の形態)
次に、本発明の第3の実施の形態としてのファームウェア実行装置130について図面を参照して詳細に説明する。
まず、ファームウェア実行装置130の機能ブロック構成を図9に示す。図9において、ファームウェア実行装置130は、本発明の第2の実施の形態としてのファームウェア実行装置120と同様の構成に加えて、組合せ情報取得部138を備える。
次に、ファームウェア実行装置130のハードウェア構成の一例について説明する。ファームウェア実行装置130は、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。この場合、組合せ情報取得部138は、メモリ1002に記憶されたプログラムを実行するCPU1001と、管理プロセッサ1004と、管理ネットワークインタフェース1005とによって構成される。ただし、ファームウェア実行装置130およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ファームウェア実行装置130の機能ブロックのうち本発明の第2の実施の形態と異なる機能ブロックについて詳細を説明する。
組合せ情報取得部138は、コンピュータ装置の起動時に、管理ネットワークを介して組合せ情報を取得し、組合せ情報記憶部121に書き込む。管理ネットワークは、ファームウェア実行装置130を含むコンピュータ装置においてファームウェアの起動中に利用可能である。例えば、組合せ情報取得部138は、管理ネットワーク上で稼働する管理サーバから、組合せ情報を取得してもよい。
以上のように構成されたファームウェア実行装置130の動作を、図10を参照して説明する。
図10では、まず、組合せ情報取得部138は、起動時に、管理ネットワークを介して組合せ情報を取得する(ステップS131)。
次に、組合せ情報取得部138は、取得した組合せ情報を、組合せ情報記憶部121に書き込む(ステップS132)。
このとき、組合せ情報取得部138は、取得した組合せ情報を用いて、組合せ情報記憶部121に記憶された情報を上書きしてもよい。あるいは、組合せ情報取得部138は、は、取得した組合せ情報を追加して書き込んでもよい。
以降、ファームウェア実行装置130は、ステップS101〜S110まで、本発明の第1および第2の実施の形態と同様に動作する。これにより、ファームウェアおよびドライバのバージョン間の依存関係に関する依存関係判断部104の判断結果に応じて、ファームウェアが更新されて再起動されるか、または、機能モジュールが選択される。
そして、ファームウェア実行装置130は、ステップS121〜S123まで、本発明の第2の実施の形態と同様に動作する。これにより、ファームウェアおよびドライバのバージョンの組合せに応じて、エラー情報および優先度情報に基づいてパラメータが設定される。
以上で、ファームウェア実行装置130の動作の説明を終了する。
次に、本発明の第3の実施の形態の効果について述べる。
本発明の第3の実施の形態としてのファームウェア実行装置は、ファームウェアまたはドライバが未知のバージョンに更新されることによる不具合をより確実に回避することができる。
その理由について説明する。本発明の第3の実施の形態では、本発明の第2の実施の形態と同様の構成に加えて、組合せ情報取得部が、コンピュータ装置の起動時に、管理ネットワークを介して組合せ情報を取得し、組合せ情報記憶部に書き込む。したがって、組合せ情報記憶部には、コンピュータ装置が起動する度に、取得可能な最新の組合せ情報が記憶されることになる。つまり、本実施の形態は、最新の組合せ情報に基づいて動作することになり、ファームウェアまたはドライバを未知のバージョンに更新してしまうことがない。その結果、本実施の形態は、未知のバージョン間で依存関係の不整合が発生することを回避できる。
(第4の実施の形態)
次に、本発明の第4の実施の形態としてのファームウェア実行装置140について図面を参照して詳細に説明する。
まず、ファームウェア実行装置140の機能ブロック構成を図11に示す。図11において、ファームウェア実行装置140は、本発明の第3の実施の形態としてのファームウェア実行装置130と同一の構成に加えて、機能モジュール取得部149を備える。
また、本実施の形態では、ファームウェア更新部105によって取得されるファームウェアに含まれる情報が、本発明の第1〜第3の実施の形態と若干異なる。本発明の第1〜第3の実施の形態では、取得されるファームウェアは、該当するファームウェアのバージョンに本来含まれるバージョンの機能モジュールに加えて、ドライバのバージョン別の機能モジュールを含むものとして説明した。本実施の形態では、取得されるファームウェアは、本来含まれるバージョンの機能モジュールを含んでいればよい。
ここで、ファームウェア実行装置140およびその各機能ブロックは、図2を参照して説明した本発明の第1の実施の形態と同様のハードウェア要素によって構成可能である。この場合、機能モジュール取得部149は、メモリ1002に記憶されたプログラムを実行するCPU1001と、管理プロセッサ1004と、管理ネットワークインタフェース1005とによって構成される。ただし、ファームウェア実行装置140およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ファームウェア実行装置140の機能ブロックのうち本発明の第2の実施の形態と異なる機能ブロックについて詳細を説明する。
機能モジュール取得部149は、依存関係判断部104によって、ファームウェアの更新により不整合が解消されないと判断された場合に機能する。すなわち、この場合、機能モジュール取得部149は、現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールをバックアップモジュールとして、管理ネットワークより取得する。
また、機能モジュール取得部149は、取得したバックアップモジュールを、ファームウェア記憶部123に記憶させる。ここで、ファームウェア記憶部123には、ファームウェア更新部105によって現行のファームウェアに本来含まれるバージョンの機能モジュールが記憶されている。本来含まれるバージョンの機能モジュールを、以降、メインモジュールとも記載する。つまり、機能モジュール取得部149が機能することにより、ファームウェア記憶部123は、ドライバのバージョンとの間に依存関係を有する機能モジュールについては、メインモジュールおよびバックアップモジュールを記憶することになる。
本実施の形態においてファームウェア記憶部123に記憶される機能モジュールの一例を図12に示す。図12において、機能モジュールAおよび機能モジュールBは、ドライバのバージョンとの間に依存関係を有するものとする。したがって、これらの機能モジュールについてはメインモジュールおよびバックアップモジュールが記憶される。この例では、機能モジュールAがメインモジュールを表し、機能モジュールA’が機能モジュールAに対するバックアップモジュールを表している。また、機能モジュールBがメインモジュールを表し、機能モジュールB’が機能モジュールBに対するバックアップモジュールを表している。また、この例では、機能モジュールCは、ドライバのバージョンとの間に依存関係が無いとする。したがって、メインモジュールとして機能モジュールCが記憶され、機能モジュールCに対するバックアップモジュールは記憶されない。
以上のように構成されたファームウェア実行装置140の動作を、図13を参照して説明する。
図13において、ファームウェア実行装置140は、図10を参照して説明した本発明の第3の実施の形態とほぼ同様に動作する。ただし、ファームウェアの更新により依存関係の不整合が解消されないと判断された場合(ステップS106でNo)の動作が若干異なる。
この場合、本発明の第3の実施の形態では、機能モジュール選択部106は、ファームウェア記憶部123に記憶された機能モジュールの中から、現行のドライバのバージョンにより利用可能なバージョンの機能モジュールを選択していた(ステップS110)。
これに対して、本実施の形態では、ファームウェア実行装置140は、ステップS110の代わりに、次のステップS141〜S143を実行する点が異なる。
すなわち、この場合、機能モジュール取得部149は、現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールをバックアップモジュールとして、管理ネットワークより取得する(ステップS141)。
次に、機能モジュール取得部149は、取得したバックアップモジュールを、ファームウェア記憶部123に記憶させる(ステップS142)。
その後、機能モジュール選択部106は、バックアップモジュールを選択する(ステップS143)。
以降、ファームウェア実行装置140は、本発明の第3の実施の形態と同様にステップS121〜S123を実行することにより、パラメータを設定する。
以上で、ファームウェア実行装置140の動作の説明を終了する。
次に、本発明の第4の実施の形態の効果について述べる。
本発明の第4の実施の形態としてのファームウェア実行装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避しながら、必要となるリソース量の増大をさらに抑制することができる。
その理由について説明する。本発明の第4の実施の形態では、本発明の第4の実施の形態と同様の構成に加えて、バックアップモジュール取得部が、依存関係判断部によってファームウェアの更新により不整合が解消されないと判断された場合に機能する。すなわち、この場合、バックアップモジュール取得部は、現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールをバックアップモジュールとして、管理ネットワークより取得する。そして、バックアップモジュール取得部は、取得したバックアップモジュールを、ファームウェア記憶部に記憶させる。そして、機能モジュール選択部が、バックアップモジュールを選択するからである。
つまり、本実施の形態は、ドライバのバージョンとの間に依存関係がある機能モジュールであっても、全てのバージョンのドライバによってそれぞれ利用可能な機能モジュールをファームウェア記憶部に記憶させる必要がない。本実施の形態は、そのような機能モジュールについて、現行のファームウェアに本来含まれるバージョンのメインモジュールと、現行のドライバのバージョンによって利用可能なバックアップモジュールとをファームウェア記憶部に記憶すればよい。したがって、本実施の形態は、ファームウェア記憶部として必要なリソース量を削減することができる。
また、本実施の形態では、ファームウェア記憶部によって取得されるファームウェアに、バージョン別の機能モジュールが含まれている必要がない。したがって、本実施の形態は、更新対象のファームウェアとして、一般的なデータ構造のファームウェアを適用することができる。
(第5の実施の形態)
次に、本発明の第5の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するファームウェア管理装置の一実施形態について説明する。
まず、本発明の第5の実施の形態としてのファームウェア管理装置200について説明する。ファームウェア管理装置200は、本発明の第2の実施の形態としてのファームウェア実行装置120が実行するファームウェアを管理する装置である。ファームウェア管理装置200の機能ブロック構成を図14に示す。図14において、ファームウェア管理装置200は、組合せ情報更新部201を備える。
ここで、ファームウェア管理装置200のハードウェア構成の一例について説明する。ファームウェア管理装置200は、図2に示したような、本発明の第2の実施の形態としてのファームウェア実行装置120を構成するコンピュータ装置によって構成される。この場合、組合せ情報更新部201は、メモリ1002に記憶されたプログラムを実行するCPU1001によって構成される。なお、ファームウェア管理装置200およびその機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ファームウェア管理装置200の機能ブロックの詳細について説明する。
組合せ情報更新部201は、ファームウェア実行装置120における組合せ情報記憶部121に記憶された組合せ情報を更新する。
以上のように構成されたファームウェア管理装置200の動作を図15に示す。
図15では、まず、組合せ情報更新部201は、更新対象の組合せ情報を取得し、取得した組合せ情報を、ファームウェア実行装置120の組合せ情報記憶部121に格納するする(ステップS201)。例えば、組合せ情報更新部201は、更新対象の組合せ情報を、入力装置1007によって入力された格納場所や、ネットワーク上の所定の格納場所から取得してもよい。
このとき、組合せ情報更新部201は、取得した組合せ情報を用いて、組合せ情報記憶部121に記憶された情報を上書きしてもよい。あるいは、組合せ情報更新部201は、取得した組合せ情報を追加して書き込んでもよい。
以上で、ファームウェア管理装置200は、動作を終了する。
なお、組合せ情報更新部201は、組合せ情報の更新を、入力装置1007からの指示に応じて実行してもよい。あるいは、ファームウェア管理装置200がファームウェアの更新機能を有する場合、組合せ情報更新部201は、組合せ情報の更新を、ファームウェアの更新の際に実行してもよい。
この場のファームウェア管理装置200の動作を図16に示す。
図16では、まず、ファームウェア管理装置200は、ファームウェアの更新を要求されているか否かを判断する(ステップS211)。更新の要求は、例えば、入力装置1007や管理ネットワークを介して行われる。
ここで、ファームウェアの更新が要求されていなければ、ファームウェア管理装置200は、動作を終了する。
一方、ファームウェアの更新が要求されている場合、ファームウェア管理装置200は、更新用のファームウェアを取得して、ファームウェアを更新する(ステップS212)。
なお、更新用のファームウェアとは、現行のファームウェアから更新するためのより新しいバージョンのファームウェアをいうものとする。
次に、組合せ情報更新部201は、上述のステップS201を実行することにより、組合せ情報を更新する(ステップS201)。
次に、ファームウェア管理装置200は、コンピュータ装置を再起動する(ステップS213)。
以上で、ファームウェアを更新する際に組合せ情報を更新する場合のファームウェア管理装置200の動作の説明を終了する。
次に、ファームウェア管理装置200の動作を具体例で説明する。ここでは、ファームウェアの更新の際に組合せ情報を更新するものとする。
<具体例4>
ここでは、現行のファームウェアは、バージョンaであるとする。
また、ドライババージョン記憶部102は、現行のドライバのバージョンとして「1.0」を記憶しているとする。つまり、現行のドライバはバージョン1.0である。
また、組合せ情報記憶部121は、本発明の第2の実施の形態の具体例2および具体例3と同様に、図8に示した組合せ情報を記憶しているとする。
この場合、まず、ファームウェア管理装置200は、ファームウェアaをファームウェアbに更新する(ステップS211でYes、S212)。例えば、更新用のファームウェアbは、可搬型記憶媒体から取得されていてもよい。あるいは、更新用のファームウェアbは、アウトオブバンド管理用の管理ネットワークを介して受信されてもよい。
次に、組合せ情報更新部201は、更新用の組合せ情報を、組合せ情報記憶部121に書き込む(ステップS201)。例えば、更新用の組合せ情報は、可搬型記憶媒体から取得されていてもよい。あるいは、更新用の組合せ情報は、アウトオブバンド管理用の管理ネットワークを介して受信されてもよい。なお、更新用の組合せ情報とは、現行の組合せ情報を更新するためのより新しい組合せ情報をいうものとする。
次に、組合せ情報更新部201は、コンピュータ装置を再起動する(ステップS213)。これにより、現行のファームウェアは、バージョンbとなる。このとき、ドライババージョン記憶部102は、現行のドライバのバージョンとして「1.0」を記憶している。したがって、その後、ファームウェア実行装置120は、本発明の第2の実施の形態における具体例3と同様に動作する。
以上で、具体例の動作の説明を終了する。
次に、本発明の第5の実施の形態の効果について述べる。
本発明の第5の実施の形態としてのファームウェア管理装置は、ファームウェアまたはドライバの更新による不具合の発生を、さらに確実に回避することができる。
その理由について説明する。本実施の形態では、組合せ情報更新部が、組合せ情報を更新するからである。これにより、本実施の形態は、ファームウェアまたはドライバの更新による不具合の発生を回避するためにファームウェア実行装置によって参照される組合せ情報を、任意のタイミングで最新の情報に更新することができるからである。
(第6の実施の形態)
次に、本発明の第6の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するドライバ実行装置の一実施形態について説明する。
まず、本発明の第6の実施の形態としてのドライバ実行装置300について説明する。ドライバ実行装置300は、本発明の第2の実施の形態としてのファームウェア実行装置120を含むコンピュータ装置に実装されたドライバを実行する装置である。ドライバ実行装置300の機能ブロック構成を図17に示す。図17において、ドライバ実行装置300は、エラー情報登録部301を備える。
ここで、ドライバ実行装置300のハードウェア構成の一例について説明する。ドライバ実行装置300は、図2に示したような、本発明の第2の実施の形態としてのファームウェア実行装置120を構成するコンピュータ装置によって構成される。この場合、エラー情報登録部301は、メモリ1002に記憶されたプログラムを実行するCPU1001によって構成される。なお、ドライバ実行装置300およびその機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ドライバ実行装置300の機能ブロックの詳細について説明する。
エラー情報登録部301は、ハードウェアデバイス1008の制御において動作エラーを検出した場合、ファームウェア実行装置120の組合せ情報記憶部121に、エラー情報を登録する。具体的には、エラー情報登録部301は、組合せ情報記憶部121において、動作エラーに関連するファームウェアの機能モジュールのバージョンと、現行のドライバのバージョンとの組合せについて、パラメータの現行の設定値情報を含むエントリを検索する。そして、エラー情報登録部301は、検索したエントリに、動作エラーが有ることを表すエラー情報を登録すればよい。
以上のように構成されたドライバ実行装置300の動を図18に示す。
図18において、エラー情報登録部301は、ハードウェアデバイス1008の制御において動作エラーを検出したか否かを判断する(ステップS301)。
ここで、動作エラーを検出していない場合(ステップS301でNo)、エラー情報登録部301は、ステップS301の動作を繰り返す。
一方、動作エラーを検出した場合(ステップS301でYes)、エラー情報登録部301は、エラー情報を、ファームウェア実行装置120の組合せ情報記憶部121に登録する(ステップS302)。
そして、エラー情報登録部301は、ステップS301からの動作を繰り返す。
以上で、ドライバ実行装置300の動作の説明を終了する。
次に、本発明の第6の実施の形態の効果について述べる。
本発明の第6の実施の形態としてのドライバ実行装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
その理由について説明する。本実施の形態では、エラー情報登録部が、ハードウェアデバイスの制御において動作エラーを検出した場合、本発明の第2の実施の形態としてのファームウェア実行装置の組合せ情報記憶部に、エラー情報を登録するからである。
ここで、本実施の形態は、そのような動作エラーが、ファームウェアまたはドライバの更新により生じたケースを想定している。本実施の形態は、このようにして登録したエラー情報を、コンピュータ装置が再起動された際に動作する本発明の第2の実施の形態としてのファームウェア実行装置に参照させることになる。したがって、動作エラー発生後のコンピュータ装置の再起動の際に、該当する設定値が、パラメータに設定されることがない。したがって、本実施の形態は、ファームウェアまたはドライバの更新による不具合の回避に貢献することができる。
なお、本実施の形態において、ファームウェア実行装置の組合せ情報記憶部に記憶される当初の組合せ情報がベンダから提供される場合、提供される組合せ情報には、エラー情報が含まれていなくてもよい。その場合であっても、本実施の形態のドライバ実行装置が、動作エラーの検出に応じてエラー情報を登録する。これにより、エラー情報は、動作実績に基づき蓄積されることになる。
(第7の実施の形態)
次に、本発明の第7の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するドライバ管理装置の一実施形態について説明する。
まず、本発明の第7の実施の形態としてのドライバ管理装置400について説明する。ドライバ管理装置400は、本発明の第1の実施の形態としてのファームウェア実行装置100を含むコンピュータ装置に実装されたドライバを管理する装置である。ドライバ管理装置400の機能ブロック構成を図19に示す。図19において、ドライバ管理装置400は、ドライバ更新部401と、情報更新部402とを備える。
ここで、ドライバ管理装置400のハードウェア構成の一例について説明する。ドライバ管理装置400は、図2に示したような、本発明の第1の実施の形態としてのファームウェア実行装置100を構成するコンピュータ装置によって構成される。この場合、ドライバ更新部401および情報更新部402は、メモリ1002に記憶されたプログラムを実行するCPU1001によって構成される。なお、ドライバ管理装置400およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
次に、ドライバ管理装置400の各機能ブロックの詳細について説明する。
ドライバ更新部401は、コンピュータ装置に実装されたドライバを更新する。例えば、ドライバ更新部401は、入力装置1007を介して入力される更新指示を表す情報に基づいて、ドライバを更新してもよい。なお、ドライバ更新部401は、現行のバージョンより新しいバージョンのドライバを、更新指示を表す情報に基づく格納場所から取得すればよい。そのような格納場所としては、例えば、メモリ1002、可搬型記憶媒体、または、ネットワーク上の管理サーバ等があるが、これらに限られない。
情報更新部402は、ファームウェア実行装置100におけるドライババージョン記憶部102に記憶された現行のドライバのバージョンを表す情報を、ドライバ更新部401による更新後のバージョンを表す情報に更新する。
なお、情報更新部402は、さらに、ドライバを更新したタイミングで、ファームウェア実行装置100における組合せ情報記憶部101に記憶された情報を更新可能に構成されていてもよい。この場合、ドライバ更新部401は、更新指示を表す情報に基づいて、更新用のドライバを表す情報に加えて、更新用の組合せ情報を取得すればよい。
次に、ドライバ管理装置400の動作を図20に示す。
図20では、まず、ドライバ更新部401は、更新用のドライバを表す情報を取得し、取得したドライバを表す情報を用いて、現行のドライバを更新する(ステップS401)。
次に、情報更新部402は、ファームウェア実行装置100に記憶された情報を更新する(ステップS402)。
具体的には、情報更新部402は、ドライババージョン記憶部102に記憶された現行のドライバのバージョンを表す情報を、更新後のドライバのバージョンを表す情報に更新する。さらに、前述したように、情報更新部402は、組合せ情報記憶部101に記憶された情報を更新してもよい。その場合、ステップS401において、更新用のドライバを表す情報と共に、更新用の組合せ情報が取得されているものとする。
次に、ドライバ更新部401は、コンピュータ装置を再起動する(ステップS403)。
このときステップS402の更新動作により、ファームウェアより先にドライバが更新された状況を想定する。また、そのために、バージョン間に依存関係の不整合が発生していたとする。その場合であっても、ステップS403での再起動後に、ファームウェア実行装置100の各機能ブロックが、本発明の第1の実施の形態と同様に動作する。このとき、ドライバ管理装置400の情報更新部402によって更新された現行ドライババージョン情報が参照される。これにより、依存関係判断部104は、現行のファームウェアのバージョンおよび更新後のドライバのバージョン間に依存関係の不整合があり、ファームウェアの更新により不整合が解消されると判断することになる。その結果、ファームウェア更新部105が、ファームウェアを更新することになり、不整合が解消される。
次に、本発明の第7の実施の形態の効果について述べる。
本発明の第7の実施の形態としてのドライバ管理装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
その理由について説明する。本実施の形態では、ドライバ更新部が、本発明の第1の実施の形態としてのファームウェア実行装置を含むコンピュータ装置のドライバを更新する。そして、情報更新部が、ファームウェア実行装置のドライババージョン記憶部に記憶された情報を、更新後のドライバのバージョンを表す情報に更新するからである。
これにより、本実施の形態は、更新後のドライバのバージョンを、コンピュータ装置が再起動された際に動作する本発明の第1の実施の形態としてのファームウェア実行装置に参照させることになる。したがって、ファームウェア実行装置において、現行のファームウェアおよび更新後のドライバのバージョン間の依存関係の不整合が、正しく判断されることになる。したがって、本実施の形態は、ファームウェアまたはドライバの更新による不具合の回避に貢献することができる。
また、さらに、本実施の形態において、情報更新部が、ドライバの更新の際に組合せ情報を更新するよう構成される場合、そのような組合せ情報は、更新後のドライバのバージョンに関する情報を確実に含むことが期待される。したがって、再起動後のファームウェア実行装置において、更新後のドライバのバージョンに関する情報を含む組合せ情報が参照されることになる。その結果、本実施の形態は、バージョン間の依存関係の不整合による不具合の発生を、さらに確実に回避することができる。
(第8の実施の形態)
次に、本発明の第8の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するドライバ管理装置の他の一実施形態について説明する。
まず、本発明の第8の実施の形態としてのドライバ管理装置480について説明する。ドライバ管理装置480は、本発明の第1の実施の形態としてのファームウェア実行装置100を含むコンピュータ装置に実装されたドライバを更新する装置である。ドライバ管理装置480の機能ブロック構成を図21に示す。図21において、ドライバ管理装置480は、本発明の第7の実施の形態としてのドライバ管理装置400に対して、ドライバ更新部401に替えてドライバ更新部481を備える点が異なる。
次に、ドライバ管理装置480の各機能ブロックのうち、本発明の第7の実施の形態と異なる機能ブロックの詳細について説明する。
ドライバ更新部481は、ドライバを更新する前に、ファームウェア実行装置100における組合せ情報記憶部101に記憶された組合せ情報を参照する。そして、ドライバ更新部481は、組合せ情報を参照することにより、現行のファームウェアのバージョンと、ドライバを更新した場合の更新後のバージョンとの間に依存関係の不整合があるか否かを判断する。もし、更新後のバージョンとの間に依存関係の不整合があれば、ドライバ更新部481は、現行のドライバを更新しない。更新後のバージョンとの間に依存関係の不整合がなければ、ドライバ更新部481は、現行のドライバを更新する。
次に、ドライバ管理装置480の動作を図22に示す。
図22では、まず、ドライバ更新部481は、更新用のドライバのバージョンを取得する(ステップS421)。
次に、ドライバ更新部481は、現行のファームウェアのバージョンを取得する(ステップS422)。
次に、ドライバ更新部481は、ファームウェア実行装置100の組合せ情報記憶部101から、組合せ情報を読み込む(ステップS423)。
次に、ドライバ更新部481は、更新用のドライバのバージョンおよび現行のファームウェアのバージョンとの間に依存関係の不整合があるか否かを、組合せ情報を参照して判断する(ステップS424)。
ここで、依存関係の不整合があると判断した場合(ステップS424でYes)、ドライバ更新部481は、ドライバを更新せずに動作を終了する。
一方、依存関係の不整合がないと判断した場合(ステップS424でNo)、ドライバ管理装置480は、ステップS401〜S403まで、本発明の第7の実施の形態としてのドライバ管理装置400と同様に動作する。これにより、ドライバが更新され、ファームウェア実行装置100における情報が更新された上で、コンピュータ装置が再起動される。
以上で、ドライバ管理装置480は動作を終了する。
次に、本発明の第8の実施の形態の効果について述べる。
本発明の第8の実施の形態としてのドライバ管理装置は、ファームウェアまたはドライバの更新による不具合をさらに確実に回避することができる。
その理由について説明する。本実施の形態では、ドライバ更新部が、本発明の第1の実施の形態としてのファームウェア実行装置を含むコンピュータ装置のドライバを更新する前に、次のように動作するからである。すなわち、ドライバ更新部が、現行のファームウェアのバージョンおよび更新しようとしている更新用のドライバのバージョンの間に依存関係の不整合があるか否かを、ファームウェア実行装置の組合せ情報記憶部を参照することにより判断する。そして、依存関係の不整合がない場合に、ドライバ更新部が、本発明の第7の実施の形態としてのドライバ更新部と同様に動作してドライバを更新する。そして、情報更新部が、ファームウェア実行装置のドライババージョン記憶部等を更新するからである。
このように、本実施の形態は、ファームウェアより先にドライバが更新されることにより依存関係の不整合が発生することを回避できる。
(第9の実施の形態)
次に、本発明の第9の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置を含むコンピュータ装置の一実施形態について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第1の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
まず、本発明の第9の実施の形態としてのコンピュータ装置1の機能ブロック構成を図23に示す。図23において、コンピュータ装置1は、本発明の第1の実施の形態としてのファームウェア実行装置100を含む。コンピュータ装置1に実装されるファームウェアは、ファームウェア実行装置100によって実行される。ここで、コンピュータ装置1は、図2を参照して説明したハードウェア要素によって構成可能である。ただし、コンピュータ装置1のハードウェア構成は、上述の構成に限定されない。
コンピュータ装置1に含まれるファームウェア実行装置100の機能ブロック構成および動作は、本発明の第1の実施の形態で説明した通りである。
次に、本発明の第9の実施の形態の効果について説明する。
本発明の第9の実施の形態としてのコンピュータ装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
その理由について説明する。
本実施の形態のコンピュータ装置は、本発明の第1の実施の形態としてのファームウェア実行装置を含む。これにより、本実施の形態は、ファームウェアより先にドライバが更新された場合にも、ファームウェアがドライバより先に更新された場合にも、バージョン間の依存関係の不整合を解消するからである。
つまり、本実施の形態のコンピュータ装置は、ファームウェアまたはドライバがバージョン間の依存関係や更新順序を考慮せずに更新された場合にも、依存関係の不整合を解消する。これにより、本実施の形態のコンピュータ装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
なお、本実施の形態において、コンピュータ装置は、本発明の第1の実施の形態としてのファームウェア実行装置の代わりに本発明の第2〜第4のいずれかの実施の形態としてのファームウェア実行装置を含んでいてもよい。
また、本実施の形態において、コンピュータ装置は、ファームウェア実行装置に加えて、本発明の第5の実施の形態としてのファームウェア管理装置を含んでいてもよい。
また、本実施の形態において、コンピュータ装置は、ファームウェア実行装置に加えて、本発明の第6の実施の形態としてのドライバ実行装置を含んでいてもよい。
また、本実施の形態において、コンピュータ装置は、ファームウェア実行装置に加えて、本発明の第7または第8の実施の形態としてのドライバ管理装置を含んでいてもよい。
また、上述した本発明の各実施の形態において、各装置の各機能ブロックが、メモリに記憶されたコンピュータ・プログラムを実行するCPUによって実現される例を中心に説明した。これに限らず、各機能ブロックまたはそれらの任意の組合せが専用のハードウェアにより実現されていてもよい。
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した各装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置(記憶媒体)に格納しておく。そして、係るコンピュータ・プログラムを当該CPUが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
また、上述した各実施の形態は、適宜組合せて実施されることが可能である。
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段と、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断手段と、
前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新手段と、
前記依存関係判断手段によって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択手段と、
を備えたファームウェア実行装置。
(付記2)
前記組合せ情報記憶手段は、前記機能モジュールのバージョンと前記ドライバのバージョンとの組合せについて、前記依存関係情報に加えて、前記ファームウェアのパラメータとして設定され得る設定値を表す設定値情報、および、前記設定値が適用された場合の動作エラーの有無を表すエラー情報をさらに含めて前記組合せ情報を記憶し、
前記組合せ情報を参照することにより、前記機能モジュール選択手段によって選択された機能モジュールおよび前記現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値を、前記パラメータとして設定するパラメータ設定手段をさらに備えたことを特徴とする付記1に記載のファームウェア実行装置。
(付記3)
前記組合せ情報記憶手段は、前記機能モジュールのバージョンと前記ドライバのバージョンとの組合せについて、前記依存関係情報、前記設定値情報および前記エラー情報に加えて、前記設定値の優先度を表す優先度情報をさらに含めて前記組合せ情報を記憶し、
前記パラメータ設定手段は、前記組合せ情報を参照することにより、前記機能モジュール選択手段によって選択された機能モジュールおよび前記現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値のうち前記優先度に基づき選択した設定値を、前記パラメータとして設定することを特徴とする付記2に記載のファームウェア実行装置。
(付記4)
前記コンピュータ装置の起動時に、管理ネットワークを介して前記組合せ情報を取得して、前記組合せ情報記憶手段に記憶させる組合せ情報取得手段をさらに備えたことを特徴とする付記1から付記3のいずれか1つに記載のファームウェア実行装置。
(付記5)
前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールを管理ネットワークより取得して、前記ファームウェア記憶手段に記憶させる機能モジュール取得手段をさらに備えたことを特徴とする付記1から付記4のいずれか1つに記載のファームウェア実行装置。
(付記6)
付記2ならびに付記2に従属する付記3から付記5のいずれか1つに記載のファームウェア実行装置を含むコンピュータ装置において前記ドライバを実行する際に動作エラーを検出した場合、前記ファームウェア実行装置の前記組合せ情報記憶手段に、前記エラー情報を登録するエラー情報登録手段を備えたドライバ実行装置。
(付記7)
付記1から付記5のいずれか1つに記載のファームウェア実行装置を含むコンピュータ装置に実装された前記ドライバを更新するドライバ更新手段と、
前記ファームウェア実行装置における前記ドライババージョン記憶手段に記憶された前記現行のドライバのバージョンを表す情報を、前記ドライバ更新手段による更新後のバージョンを表す情報に更新する情報更新手段と、
を備えたドライバ管理装置。
(付記8)
前記ドライバ更新手段は、前記ファームウェア実行装置における前記組合せ情報記憶手段に記憶された前記組合せ情報を参照することにより、前記現行のファームウェアのバージョンと、前記現行のドライバを更新した場合の更新後のバージョンとの間に依存関係の不整合があれば、前記現行のドライバを更新しないことを特徴とする付記7に記載のドライバ管理装置。
(付記9)
前記情報更新手段は、前記ファームウェア実行装置における前記組合せ情報記憶手段に記憶された組合せ情報をさらに更新することを特徴とする付記7または付記8に記載のドライバ管理装置。
(付記10)
付記1から付記5のいずれか1つに記載のファームウェア実行装置における前記組合せ情報記憶手段に記憶された組合せ情報を更新する組合せ情報更新手段を備えたファームウェア管理装置。
(付記11)
付記1から付記5のいずれか1つに記載のファームウェア実行装置を含み、前記ファームウェア実行装置によって実行される前記ファームウェアが実装されたコンピュータ装置。
(付記12)
前記コンピュータ装置が付記2ならびに付記2に従属する付記3および付記4のいずれか1つに記載のファームウェア実行装置を含む場合、
さらに、
付記6に記載のドライバ実行装置を含むことを特徴とする付記11に記載のコンピュータ装置。
(付記13)
さらに、
付記7から付記9のいずれか1つに記載のドライバ管理装置を含むことを特徴とする付記11または付記12に記載のコンピュータ装置。
(付記14)
さらに、
付記10に記載のファームウェア管理装置を含むことを特徴とする付記11から付記13のいずれか1つに記載のコンピュータ装置。
(付記15)
コンピュータ装置が、
前記コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断し、
前記ファームウェアの更新により前記不整合が解消されると判断した場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動し、
前記不整合がないと判断した場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、
前記ファームウェアの更新により前記不整合が解消されないと判断した場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する方法。
(付記16)
コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断ステップと、
前記依存関係判断ステップによって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新ステップと、
前記依存関係判断ステップによって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択ステップと、
を前記コンピュータ装置に実行させるプログラム。