(57)【要約】【課題】ファームウェアやドライバの更新による不具合を回避する。【解決手段】ファームウェアの機能モジュールおよびドライバのバージョン間での依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶部１０１と、現行のドライバのバージョンを記憶するドライババージョン記憶部１０２と、ドライバのバージョン毎に利用可能な機能モジュールを記憶するファームウェア記憶部１０３と、起動時に現行ファームウェアおよび現行ドライバのバージョン間に依存関係の不整合があるか否かおよびファームウェア更新により不整合が解消されるか否かを判断する依存関係判断部１０４と、判断結果に応じていずれかが機能するファームウェア更新部１０５および機能モジュール選択部１０６とを備える。【選択図】      図１
2018136608.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段と、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断手段と、
前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新手段と、
前記依存関係判断手段によって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択手段と、
を備えたファームウェア実行装置。
【請求項２】
前記組合せ情報記憶手段は、前記機能モジュールのバージョンと前記ドライバのバージョンとの組合せについて、前記依存関係情報に加えて、前記ファームウェアのパラメータとして設定され得る設定値を表す設定値情報、および、前記設定値が適用された場合の動作エラーの有無を表すエラー情報をさらに含めて前記組合せ情報を記憶し、
前記組合せ情報を参照することにより、前記機能モジュール選択手段によって選択された機能モジュールおよび前記現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値を、前記パラメータとして設定するパラメータ設定手段をさらに備えたことを特徴とする請求項１に記載のファームウェア実行装置。
【請求項３】
前記コンピュータ装置の起動時に、管理ネットワークを介して前記組合せ情報を取得して、前記組合せ情報記憶手段に記憶させる組合せ情報取得手段をさらに備えたことを特徴とする請求項１または請求項２に記載のファームウェア実行装置。
【請求項４】
前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールを管理ネットワークより取得して、前記ファームウェア記憶手段に記憶させる機能モジュール取得手段をさらに備えたことを特徴とする請求項１から請求項３のいずれか１項に記載のファームウェア実行装置。
【請求項５】
請求項２ならびに請求項２に従属する請求項３および請求項４のいずれか１項に記載のファームウェア実行装置を含むコンピュータ装置において前記ドライバを実行する際に動作エラーを検出した場合、前記ファームウェア実行装置の前記組合せ情報記憶手段に、前記エラー情報を登録するエラー情報登録手段を備えたドライバ実行装置。
【請求項６】
請求項１から請求項４のいずれか１項に記載のファームウェア実行装置を含むコンピュータ装置に実装された前記ドライバを更新するドライバ更新手段と、
前記ファームウェア実行装置における前記ドライババージョン記憶手段に記憶された前記現行のドライバのバージョンを表す情報を、前記ドライバ更新手段による更新後のバージョンを表す情報に更新する情報更新手段と、
を備えたドライバ管理装置。
【請求項７】
請求項１から請求項４のいずれか１項に記載のファームウェア実行装置における前記組合せ情報記憶手段に記憶された組合せ情報を更新する組合せ情報更新手段を備えたファームウェア管理装置。
【請求項８】
請求項１から請求項４のいずれか１項に記載のファームウェア実行装置を含み、前記ファームウェア実行装置によって実行される前記ファームウェアが実装されたコンピュータ装置。
【請求項９】
コンピュータ装置が、
前記コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断し、
前記ファームウェアの更新により前記不整合が解消されると判断した場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動し、
前記不整合がないと判断した場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、
前記ファームウェアの更新により前記不整合が解消されないと判断した場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する方法。
【請求項１０】
コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断ステップと、
前記依存関係判断ステップによって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新ステップと、
前記依存関係判断ステップによって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択ステップと、
を前記コンピュータ装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアを更新する技術に関する。
【背景技術】
【０００２】
近年、コンピュータ装置のハードウェアを制御するためのファームウェアには、より高い機能や信頼性、完全性が求められている。その理由として、操作性向上や信頼性向上のため、ファームウェアに組み込まれる制御プログラムがより高度で複雑となってきたことが挙げられる。また、他の理由として、ファームウェアレベルでのセキュリティの脆弱性を利用した攻撃が見受けられるようになってきたことが挙げられる。このような状況により、ファームウェアは、機能強化、セキュリティ向上、または、不具合修正等のために、頻繁に更新される。
【０００３】
一般に、ファームウェアは、上位ソフトウェアの更新とは異なり、更新に失敗した場合、コンピュータ装置が起動しなくなる可能性が高い。そのため、ファームウェアを二重化したり、熟練した保守員が操作したり、工場に戻して修理したりするなどの対応がなされてきた。しかしながら、これらの対応にはコストがかかる。また、近年のように、コンピュータシステムのクラウド化が進むに伴い、サーバ装置等はデータセンタに集約されるようになってきている。この場合、データセンタ内のサーバ装置のファームウェア更新に問題があった場合でも、保守する機会を得ることが難しくなっている。このような背景から、安価で安全にファームウェアを更新する技術が求められている。
【０００４】
ここで、ファームウェアのバージョンは、デバイスドライバのバージョンとの間に依存関係を有する場合がある。デバイスドライバは、コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するプログラムである。ファームウェアが、オペレーティングシステムが起動する前の電源投入時に動作する一方で、デバイスドライバは、オペレーティングシステム上で動作する。以降、デバイスドライバを、単にドライバとも記載する。この場合、ファームウェアおよびドライバについて、正しいバージョンの組合せを正しい順序で更新しないと、動作に問題が生じる場合がある。
【０００５】
このような問題に対応するため、オペレーティングシステム上で動作する更新ツールにより、ファームウェアおよびドライバの更新順序を制御することが考えられる。しかし、ファームウェアは、そのような更新ツールを用いなくても、他の方法による更新も可能である。例えば、ファームウェアは、ＰＯＳＴ（Power On Self Test）中に、可搬型記憶媒体やアウトオブバンド管理ネットワーク上から取得されるファームウェアに更新可能である。このように、保守作業等において更新ツール以外の更新方法が選択される可能性も考慮すると、ドライバおよびファームウェアの更新順序を確実に適切に行うことは難しい。
【０００６】
もし、ドライバおよびファームウェアが、適切でないバージョンの組合せや適切でない順序で更新された場合、ユーザ操作による解決またはファームウェアのダウングレード等が必要となる。しかしながら、一度更新してしまったファームウェアをダウングレードすることはセキュリティ上の観点などから難しいことが多く、容易に復旧できないという問題がある。
【０００７】
このような問題に関連する技術が、特許文献１に記載されている。特許文献１に記載された関連技術は、プリンタにおいて、蓄積する印刷データとともに、当該印刷データを作成したプリンタドライバのバージョンを保存しておく。そして、この関連技術は、ファームウェアをバージョンアップする際に、ファームウェアの新バージョンが正しく印刷処理できる印刷データを作成するプリンタドライバのバージョンを取得する。そして、この関連技術は、蓄積された印刷データのうち、作成したプリンタドライバのバージョンがファームウェアの新バージョンで正しく印刷処理できないものがある場合、旧バージョンのファームウェアを当該印刷データと対応させて保存する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１０７２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載された関連技術には、以下の課題がある。この関連技術は、ファームウェアまたはドライバの更新に伴いバージョンの組合せが適切でないことによる不具合を回避するために、古いバージョンのファームウェアを保存しておく必要がある。そのため、必要となる全ての古いバージョンのファームウェアを保存するだけのリソースが必要となってしまう。
【００１０】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、必要なリソース量の増大を抑制しながら、ファームウェアまたはドライバの更新による不具合をより確実に回避する技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のファームウェア実行装置は、コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段と、前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断手段と、前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新手段と、前記依存関係判断手段によって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択手段と、を備える。
【００１２】
また、本発明のドライバ実行装置は、上述のファームウェア実行装置を含むコンピュータ装置において前記ドライバを実行する際に動作エラーを検出した場合、前記ファームウェア実行装置の前記組合せ情報記憶手段にエラー情報を登録するエラー情報登録手段を備える。
【００１３】
また、本発明のドライバ管理装置は、上述のファームウェア実行装置を含むコンピュータ装置に実装された前記ドライバを更新するドライバ更新手段と、
前記ファームウェア実行装置における前記ドライババージョン記憶手段に記憶された前記現行のドライバのバージョンを表す情報を、前記ドライバ更新手段による更新後のバージョンを表す情報に更新する情報更新手段と、を備える。
【００１４】
また、本発明のファームウェア管理装置は、上述のファームウェア実行装置における前記組合せ情報記憶手段に記憶された組合せ情報を更新する組合せ情報更新手段を備える。
【００１５】
また、本発明のコンピュータ装置は、上述のファームウェア実行装置を含み、前記ファームウェア実行装置によって実行される前記ファームウェアが実装される。
【００１６】
また、本発明の方法は、コンピュータ装置が、前記コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断し、前記ファームウェアの更新により前記不整合が解消されると判断した場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動し、前記不整合がないと判断した場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断した場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する。
【００１７】
また、本発明のプログラムは、コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断ステップと、前記依存関係判断ステップによって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新ステップと、前記依存関係判断ステップによって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択ステップと、を前記コンピュータ装置に実行させる。
【発明の効果】
【００１８】
本発明は、必要なリソース量の増大を抑制しながら、ファームウェアまたはドライバの更新による不具合をより確実に回避する技術を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態としてのファームウェア実行装置の機能ブロック構成を示す図である。
【図２】本発明の第１の実施の形態としてのファームウェア実行装置のハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施の形態におけるファームウェア記憶部に記憶される機能モジュールを模式的に示す図である。
【図４】本発明の第１の実施の形態としてのファームウェア実行装置の動作を説明するフローチャートである。
【図５】本発明の第２の実施の形態としてのファームウェア実行装置の機能ブロック構成を示す図である。
【図６】本発明の第２の実施の形態としてのファームウェア実行装置の動作を説明するフローチャートである。
【図７】本発明の第２の実施の形態の具体例における組合せ情報を示す図である。
【図８】本発明の第２の実施の形態の他の具体例における組合せ情報を示す図である。
【図９】本発明の第３の実施の形態としてのファームウェア実行装置の機能ブロック構成を示す図である。
【図１０】本発明の第３の実施の形態としてのファームウェア実行装置の動作を説明するフローチャートである。
【図１１】本発明の第４の実施の形態としてのファームウェア実行装置の機能ブロック構成を示す図である。
【図１２】本発明の第４の実施の形態におけるファームウェア記憶部に記憶される機能モジュールを模式的に示す図である。
【図１３】本発明の第４の実施の形態としてのファームウェア実行装置の動作を説明するフローチャートである。
【図１４】本発明の第５の実施の形態としてのファームウェア管理装置の機能ブロック構成を示す図である。
【図１５】本発明の第５の実施の形態としてのファームウェア管理装置の動作を説明するフローチャートである。
【図１６】本発明の第５の実施の形態としてのファームウェア管理装置の動作の具体例を説明するフローチャートである。
【図１７】本発明の第６の実施の形態としてのドライバ実行装置の機能ブロック構成を示す図である。
【図１８】本発明の第６の実施の形態としてのドライバ実行装置の動作を説明するフローチャートである。
【図１９】本発明の第７の実施の形態としてのドライバ管理装置の機能ブロック構成を示す図である。
【図２０】本発明の第７の実施の形態としてのドライバ管理装置の動作を説明するフローチャートである。
【図２１】本発明の第８の実施の形態としてのドライバ管理装置の機能ブロック構成を示す図である。
【図２２】本発明の第８の実施の形態としてのドライバ管理装置の動作を説明するフローチャートである。
【図２３】本発明の第９の実施の形態としてのコンピュータ装置の機能ブロック構成を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２１】
（第１の実施の形態）
まず、本発明の第１の実施の形態としてのファームウェア実行装置１００について説明する。ファームウェア実行装置１００は、コンピュータ装置に実装されたファームウェアを実行する装置である。ファームウェア実行装置１００の機能ブロック構成を図１に示す。図１において、ファームウェア実行装置１００は、組合せ情報記憶部１０１と、ドライババージョン記憶部１０２と、ファームウェア記憶部１０３と、依存関係判断部１０４と、ファームウェア更新部１０５と、機能モジュール選択部１０６とを備える。
【００２２】
ここで、ファームウェア実行装置１００のハードウェア構成の一例を図２に示す。ファームウェア実行装置１００は、ＣＰＵ（Central Processing Unit）１００１と、メモリ１００２と、ネットワークインタフェース１００３と、管理プロセッサ１００４と、管理ネットワークインタフェース１００５とを含むコンピュータ装置によって構成される。また、ファームウェア実行装置１００を構成するコンピュータ装置は、出力装置１００６および入力装置１００７を含む。また、ファームウェア実行装置１００を構成するコンピュータ装置は、ハードウェアデバイス１００８を含む。あるいは、ハードウェアデバイス１００８は、ファームウェア実行装置１００を構成するコンピュータ装置の外部に接続されていてもよい。
【００２３】
メモリ１００２は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）、補助記憶装置（ハードディスク等）等によって構成される。また、メモリ１００２は、コンピュータ装置をファームウェア実行装置１００として動作させるファームウェアを記憶している。その他、メモリ１００２は、オペレーティングシステムやデバイスドライバ等のプログラムを記憶する。
【００２４】
ＣＰＵ１００１は、メモリ１００２に記憶されたプログラムを読み込んで実行し、他の各部を制御する。
【００２５】
ネットワークインタフェース１００３は、ネットワークに接続するインタフェースである。
【００２６】
管理ネットワークインタフェース１００５は、アウトオブバンド管理用のネットワークに接続するインタフェースである。
【００２７】
管理プロセッサ１００４は、管理ネットワークインタフェース１００５を介して外部の管理サーバ等と通信を行うとともに、他の各部を制御する。
【００２８】
この場合、組合せ情報記憶部１０１、ドライババージョン記憶部１０２およびファームウェア記憶部１０３は、メモリ１００２によって構成される。また、依存関係判断部１０４および機能モジュール選択部１０６は、メモリ１００２に記憶されたプログラムを読み込んで実行するＣＰＵ１００１によって構成される。また、ファームウェア更新部１０５は、メモリ１００２に記憶されたプログラムを実行するＣＰＵ１００１と、管理プロセッサ１００４と、管理ネットワークインタフェース１００５とによって構成される。
【００２９】
なお、ファームウェア実行装置１００およびその機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００３０】
次に、ファームウェア実行装置１００の各機能ブロックの詳細について説明する。
【００３１】
組合せ情報記憶部１０１は、組合せ情報を記憶する。組合せ情報は、依存関係情報を含む。
【００３２】
依存関係情報は、ファームウェアの各バージョンに含まれる機能モジュールのバージョンと、ドライバのバージョンとの組合せにおいて、バージョン間の依存関係を表す情報である。なお、ここでいうファームウェアとは、コンピュータ装置に実装されるファームウェアであり、ＢＩＯＳ（Basic Input Output System）とも呼ばれる。また、ここでいうドライバとは、コンピュータ装置のオペレーティングシステム上で動作し、コンピュータ装置の内部または外部に接続されるハードウェアデバイス１００８を制御するソフトウェアである。具体的には、依存関係情報は、ファームウェアの各バージョンに含まれる機能モジュールのバージョンに対して、そのバージョンの機能モジュールを利用可能なドライバのバージョンを表す。
【００３３】
ドライババージョン記憶部１０２は、コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶する。
【００３４】
ファームウェア記憶部１０３は、コンピュータ装置に現在実装されている現行のファームウェアに本来含まれるバージョンの機能モジュールを記憶する。加えて、ファームウェア記憶部１０３は、ドライバのバージョンとの依存関係を有する機能モジュールについては、ドライバの各バージョンによって利用可能な機能モジュールを記憶する。つまり、ファームウェア記憶部１０３には、現行のファームウェアに本来含まれるバージョンの機能モジュールに加えて、当該バージョンの機能モジュールを利用可能なドライバよりも古い各バージョンのドライバによって利用可能な機能モジュールが記憶される。
【００３５】
例えば、ファームウェア記憶部１０３に記憶される情報の一例を図３に示す。図３の例では、ファームウェアには、機能モジュールＡ、ＢおよびＣが含まれるものとする。また、機能モジュールＡおよびＢは、ドライバのバージョンとの間に依存関係が有るものとする。また、機能モジュールＣは、ドライバのバージョンとの間に依存関係が無いものとする。また、機能モジュール「Ｘ」の各バージョンを、機能モジュールＸｎ（ｎは数値を表す文字列）と表すものとする。また、機能モジュールＸｎは、ｎが大きいほど、バージョンが新しいことを表すものとする。
【００３６】
この場合、図３において、ファームウェア記憶部１０３には、現行のバージョンのファームウェアに本来含まれる機能モジュールとして、機能モジュールＡ３、Ｂ２およびＣ１が記憶されている。また、機能モジュールＡについては、機能モジュールＡ３を利用可能なドライバよりも古い各バージョンのドライバによって利用可能な機能モジュールＡ２および機能モジュールＡ１が記憶されている。同様に、機能モジュールＢについても、機能モジュールＢ２を利用可能なドライバよりも古い各バージョンのドライバによって利用可能な機能モジュールＢ１が記憶されている。
【００３７】
依存関係判断部１０４は、コンピュータ装置の起動時に、現行のファームウェアのバージョンと、現行のドライバのバージョンとの間に依存関係の不整合があるか否かを、組合せ情報を参照することにより判断する。また、依存関係判断部１０４は、現行のファームウェアのバージョンと、現行のドライバのバージョンとの間に依存関係の不整合がある場合、ファームウェアの更新によって不整合が解消されるか否かを、組合せ情報記憶部１０１を参照することにより判断する。
【００３８】
具体的には、組合せ情報において、現行のファームウェアに本来含まれる機能モジュールのバージョンを利用可能なドライバのバージョンと、現行のドライバのバージョンとが合致しないとする。この場合、現行のファームウェアのバージョンと、現行のドライバのバージョンとの間に依存関係の不整合があることになる。
【００３９】
この場合、さらに、現行のドライバのバージョンによって利用可能な機能モジュールのバージョンが、現行のファームウェアに本来含まれる機能モジュールのバージョンより新しいとする。つまり、ファームウェアより先にドライバが更新された状況である。この場合、ファームウェアの更新により、依存関係の不整合が解消される。
【００４０】
一方、現行のドライバのバージョンによって利用可能なファームウェアのバージョンよりも、現行のファームウェアに本来含まれる機能モジュールのバージョンが新しいとする。つまり、ドライバより先にファームウェアが更新された状況である。この場合、ファームウェアを更新しても、依存関係の不整合は解消されない。
【００４１】
ファームウェア更新部１０５は、依存関係判断部１０４によって、ファームウェアの更新により不整合が解消されると判断された場合に、不整合を解消するバージョンのファームウェアを取得する。例えば、ファームウェア更新部１０５は、管理ネットワークを介して接続される管理サーバから、不整合を解消するバージョンのファームウェアを取得してもよい。あるいは、ファームウェア更新部１０５は、入力装置１００７を介して、不整合を解消するバージョンのファームウェアの格納位置を取得し、格納位置が示す場所から該当するファームウェアを取得してもよい。
【００４２】
ここで、ファームウェア更新部１０５によって取得されるファームウェアは、該当するファームウェアのバージョンに本来含まれる機能モジュールに加えて、上述したようなドライバの各バージョンによって利用可能なバージョンの機能モジュールを含むものとする。
【００４３】
すなわち、取得されるファームウェアは、ドライバのバージョンとの間にバージョン間の依存関係を有する機能モジュールについて、複数のバージョンの機能モジュールを含んでいることになる。
【００４４】
また、ファームウェア更新部１０５は、このような不整合を解消するバージョンのファームウェアに含まれる機能モジュールを、ファームウェア記憶部１０３に書き込むことにより、現行のファームウェアを更新する。
【００４５】
また、ファームウェア更新部１０５は、ファームウェア記憶部１０３の更新後、コンピュータ装置を再起動する。
【００４６】
機能モジュール選択部１０６は、依存関係判断部１０４によって、依存関係の不整合がないと判断された場合に、ファームウェア記憶部１０３から、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行する。また、機能モジュール選択部１０６は、ファームウェアの更新により依存関係の不整合が解消されないと判断された場合に、ファームウェア記憶部１０３から、現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する。
【００４７】
以上のように構成されたファームウェア実行装置１００の動作について、図４を参照して説明する。なお、以下の動作は、コンピュータ装置の起動時に開始される。
【００４８】
まず、依存関係判断部１０４は、組合せ情報記憶部１０１から、組合せ情報を読み込む（ステップＳ１０１）。
【００４９】
次に、依存関係判断部１０４は、ドライババージョン記憶部１０２から、現行のドライバのバージョンを表す情報を読み込む（ステップＳ１０２）。
【００５０】
次に、依存関係判断部１０４は、ファームウェア記憶部１０３に記憶された現行のファームウェアに基づいて、そのバージョンを表す情報を取得する（ステップＳ１０３）。
【００５１】
次に、依存関係判断部１０４は、現行のファームウェアのバージョンと、現行のデバイスドライバのバージョンとの間に依存関係の不整合があるか否かを、組合せ情報を参照することにより判断する（ステップＳ１０４）。
【００５２】
ここで、不整合が無いと判断された場合（ステップＳ１０４でＮｏ）、機能モジュール選択部１０６は、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する（ステップＳ１０５）。
【００５３】
一方、不整合が有ると判断された場合（ステップＳ１０４でＹｅｓ）、依存関係判断部１０４は、ファームウェアの更新により不整合が解消されるか否かを判断する（ステップＳ１０６）。
【００５４】
ここで、ファームウェアの更新により不整合が解消されると判断された場合（ステップＳ１０６でＹｅｓ）、ファームウェア更新部１０５は、不整合を解消するバージョンのファームウェアを取得する（ステップＳ１０７）。
【００５５】
前述したように、取得されるファームウェアには、そのバージョンのファームウェアに本来含まれるバージョンの機能モジュールに加えて、より古い各バージョンのドライバによって利用可能なバージョンの機能モジュールが含まれる。
【００５６】
次に、ファームウェア更新部１０５は、取得したファームウェアに含まれる機能モジュールをファームウェア記憶部１０３に書き込むことにより、ファームウェアを更新する（ステップＳ１０８）。
【００５７】
そして、ファームウェア更新部１０５は、コンピュータ装置を再起動する（ステップＳ１０９）。これにより、ファームウェア実行装置１００の動作は、再起動後にステップＳ１０１から繰り返される。そして、ファームウェアが更新されて依存関係の不整合が解消されているので、ステップＳ１０４でＮｏとなる。その後、ステップＳ１０５が実行され、現行のファームウェアに本来含まれるバージョンの機能モジュールが選択される。
【００５８】
一方、ファームウェアの更新により不整合が解消されないと判断された場合（ステップＳ１０６でＮｏ）、機能モジュール選択部１０６は、現行のドライバのバージョンにより利用可能なバージョンの機能モジュールを選択する（ステップＳ１１０）。
【００５９】
以降、ファームウェア実行装置１００は、ステップＳ１０５またはステップＳ１１０で選択された機能モジュールを実行する。
【００６０】
次に、本発明の第１の実施の形態の効果について述べる。
【００６１】
本発明の第１の実施の形態としてのファームウェア実行装置は、必要なリソース量の増大を抑制しながら、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
【００６２】
その理由について説明する。本実施の形態では、組合せ情報記憶部が、依存関係情報を含む組合せ情報を記憶している。依存関係情報は、ファームウェアの各バージョンに含まれる機能モジュールのバージョンと、ドライバのバージョンとの組合せについて、バージョン間の依存関係を表す情報である。また、ドライババージョン記憶部が、現行のドライバのバージョンを表す情報を記憶している。また、ファームウェア記憶部が、現行のファームウェアに本来含まれるバージョンの機能モジュールに加えて、ドライバのバージョンとの依存関係を有する機能モジュールについて、ドライバの各バージョンによって利用可能な機能モジュールを記憶している。
【００６３】
そして、コンピュータ装置の起動時に、依存関係判断部が、現行のファームウェアのバージョンおよび現行のドライバのバージョン間に依存関係の不整合があるか否か、また、不整合がある場合にファームウェアの更新により不整合が解消されるか否かを判断する。そして、ファームウェアの更新により不整合が解消される場合には、ファームウェア更新部が、現行のファームウェアを更新してコンピュータ装置を再起動する。また、バージョン間に依存関係の不整合が無い場合には、機能モジュール選択部が、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行する。また、ファームウェアの更新により不整合が解消されない場合に、機能モジュール選択部が、現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行するからである。
【００６４】
つまり、本実施の形態は、ファームウェアの更新によりバージョン間の依存関係の不整合が解消される場合には、ファームウェアを更新して再起動することにより不整合を解消する。また、本実施の形態は、ファームウェアの更新によりバージョン間の依存関係の不整合が解消されない場合でも、ファームウェア全体をダウングレードすることなく、一部の機能モジュールだけをダウングレードすることにより、不整合を解消する。
【００６５】
このように、本実施の形態は、ファームウェアおよびドライバのどちらが先に更新されても、自装置自身がファームウェアを更新したり、一部の機能モジュールだけをダウングレードしたりして、不整合を解消する。その結果、本実施の形態は、ファームウェアまたはドライバの更新に際して、不具合が発生する状態でオペレーティングシステムを稼働させることがない。
【００６６】
さらには、背景技術で述べた特許文献１に記載された関連技術は、ドライバのバージョンとの間の依存関係の不整合を解消するためにファームウェア全体をダウングレードしていた。このため、特許文献１に記載された関連技術は、旧バージョンのファームウェア全体を保存するのに充分なだけのリソースを必要としていた。これに対して、本実施の形態は、必要となる全ての旧バージョンのファームウェア全体を保存しておく必要がなく、必要となる機能モジュール単位で旧バージョンを保存しておけばよいので、ファームウェア記憶部として必要な容量の増大を抑制することができる。
【００６７】
（第２の実施の形態）
次に、本発明の第２の実施の形態としてのファームウェア装置について図面を参照して詳細に説明する。本実施の形態では、本発明の第１の実施の形態と同様に、ファームウェアおよびドライバのバージョン間の不整合を解消した上で、さらに、ファームウェアまたはドライバの更新に伴う設定変更に起因する不具合を解消するファームウェア装置について説明する。
【００６８】
ここで、ファームウェアまたはドライバの更新に伴う設定変更に起因する不具合について説明する。ファームウェアまたはそのドライバが更新される際には、不具合の解消や性能向上を目的として、ファームウェアのパラメータが利用者により変更されることがある。この場合、バージョンの組合せや更新順序を考慮してファームウェアおよびドライバを更新しても、ユーザ環境で変更されたファームウェアのパラメータに起因して、新たな不具合が起きることがある。
【００６９】
例えば、コンピュータ装置にＰＣＩ（Peripheral Component Interconnect）接続されたＤＡＣ（Disk Array Controller）が、ドライバの不具合に起因して、ＰＣＩリンク速度をファームウェア側で制限しないと正常に動作しない場合を想定する。この場合、ＤＡＣのドライバを、ファームウェアのバージョンに適合する不具合のないバージョンに更新すると同時に、ファームウェア側でＰＣＩリンク速度の設定について性能を最大化する値に変更する必要がある。このとき、ファームウェアおよびドライバのバージョンの組合せや更新順序を考慮して更新を行っても、ＰＣＩリンク速度の設定に起因して新たな不具合が起きる可能性もある。
【００７０】
本実施の形態では、ファームウェアまたはドライバの更新に伴う設定変更による不具合を解消するために追加される機能について説明する。
【００７１】
まず、本発明の第２の実施の形態としてのファームウェア実行装置１２０の機能ブロック構成を図５に示す。図５において、ファームウェア実行装置１２０は、本発明の第１の実施の形態としてのファームウェア実行装置１００に対して、組合せ情報記憶部１０１に替えて組合せ情報記憶部１２１を備える点が異なる。また、ファームウェア記憶部１０３に替えてファームウェア記憶部１２３を備える点が異なる。さらに、パラメータ設定部１２７を備える点が異なる。
【００７２】
ここで、ファームウェア実行装置１２０およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同様のハードウェア要素によって構成可能である。この場合、パラメータ設定部１２７は、メモリ１００２に記憶されたプログラムを読み込んで実行するＣＰＵ１００１によって構成される。ただし、ファームウェア実行装置１２０およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００７３】
次に、ファームウェア実行装置１２０の機能ブロックのうち、本発明の第１の実施の形態と異なる各機能ブロックについて詳細を説明する。
【００７４】
組合せ情報記憶部１２１は、機能モジュールのバージョンとドライバのバージョンとの組合せについて、本発明の第１の実施の形態と同様の依存関係情報に加えて、設定値情報、エラー情報および優先度情報を含めた組合せ情報を記憶する。
【００７５】
設定値情報は、その組合せにおいて、ファームウェアの１つ以上のパラメータに設定され得る各設定値の組を表す。
【００７６】
エラー情報は、その組合せにおいてその設定値情報が適用された場合の、コンピュータ装置における動作エラーの有無を表す。
【００７７】
優先度情報は、その組合せにおけるその設定値情報の優先度を表す。
【００７８】
なお、このような組合せ情報は、例えば、あらかじめドライバまたはファームウェアのベンダによって提供されることが考えられる。具体的には、あるドライバのバージョンと機能モジュールのバージョンとの組合せにおいて不具合が起きることが想定され、そのような不具合を回避可能なパラメータの設定値がベンダによって予め提供されることがある。例えば、ソフトウェアＲＡＩＤ（Redundant Arrays of Inexpensive Disks）の機能についてファームウェアに含まれる機能モジュールのバージョンとドライバのバージョンとの間に依存関係があるとする。このとき、制御対象となるストレージを接続するＰＣＩのリンク速度の変更や、ハードウェア割り込みの間隔の変更、または、ストレージの省電力制御機能の無効化等により、不具合を回避できることがある。このような場合、不具合が生じる可能性がある機能モジュールのバージョンとドライバのバージョンとの組合せについて、ＰＣＩのリンク速度、ハードウェア割り込みの間隔、ストレージの省電力制御機能等の各設定値の組が、ベンダから提供されていてもよい。また、同一の組合せについて１組以上の設定値情報が提供される場合には、さらに、それぞれの設定値の優先度を表す優先度情報が提供されていてもよい。さらに、それぞれの設定値情報に対して動作エラーの有無が検証済みである場合には、エラー情報が提供されていてもよい。
【００７９】
ファームウェア記憶部１２３は、本発明の第１の実施の形態におけるファームウェア記憶部１０３と同様の情報に加えて、ファームウェアのパラメータの設定値を記憶する。
【００８０】
パラメータ設定部１２７は、組合せ情報に基づいて、機能モジュール選択部１０６によって選択された機能モジュールのバージョンおよび現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値を、ファームウェアのパラメータとして設定する。すなわち、パラメータ設定部１２７は、そのような設定値を用いて、ファームウェア記憶部１２３に記憶された設定値を更新する。もし、該当する組合せにおいて、動作エラーの無い設定値を示す１組以上の設定値情報がある場合、パラメータ設定部１２７は、優先度に基づき選択した設定値を、ファームウェアのパラメータとして設定する。
【００８１】
なお、動作エラーが無い（または有る）設定値とは、ある組合せに関する組合せ情報において、動作エラーが無い（または有る）ことを示すエラー情報に関連付けられた設定値情報が示す設定値を指すものとする。また、優先度に基づき選択した設定値とは、例えば、ある組合せに関する組合せ情報において、優先度が最も高いことを表す優先度情報に関連付けられた設定値情報が示す設定値であってもよい。
【００８２】
なお、該当する組合せに関する組合せ情報に、設定値情報が含まれていないケースも考えられる。この場合、パラメータ設定部１２７は、設定値を設定する処理を省略してもよい。あるいは、この場合、パラメータ設定部１２７は、任意の設定値をパラメータに設定してもよい。例えば、そのような任意の設定値は、入力装置１００７を介して入力された値であってもよい。
【００８３】
また、該当する組合せに関する組合せ情報に、設定値情報が含まれているが、エラー情報が関連付けられていないケースも考えられる。この場合、パラメータ設定部１２７は、エラー情報が関連付けられていない設定値情報については、動作エラーが無いものとみなして選択の候補としてもよい。
【００８４】
また、該当する組合せに関する組合せ情報に、動作エラーが有ることを表すエラー情報が登録されているが、動作エラーが無いことを表すエラー情報が登録されていないケースも考える。この場合、パラメータ設定部１２７は、動作エラーが有る設定値以外の任意の設定値をパラメータに設定してもよい。例えば、そのような任意の設定値は、出力装置１００６に対して動作エラーが有る設定値を示すことにより、入力装置１００７を介して入力される他の設定値であってもよい。
【００８５】
また、該当する組合せに関する組合せ情報に、動作エラーが無い１組以上の設定値情報が登録されているが、優先度情報が登録されていないケースも考えられる。この場合、パラメータ設定部１２７は、そのような設定値情報から任意の１つを選択して、パラメータとして設定してもよい。
【００８６】
以上のように構成されたファームウェア実行装置１２０の動作について、図６を参照して説明する。
【００８７】
図６において、ファームウェア実行装置１２０は、ステップＳ１０１〜Ｓ１１０まで、本発明の第１の実施の形態と同様に動作する。これにより、ファームウェア実行装置１２０は、現行のファームウェアおよび現行のドライバのバージョン間に依存関係の不整合が無い場合には、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する。また、ファームウェア実行装置１２０は、現行のファームウェアおよび現行のドライバのバージョン間に依存関係の不整合があり、ファームウェアの更新により不整合が解消される場合には、ファームウェアを更新してコンピュータ装置を再起動する。再起動後に、ファームウェア実行装置１２０は、更新された現行のファームウェアおよび現行のドライバのバージョン間に依存関係の不整合が無いと判断することになる。したがって、ファームウェア実行装置１２０は、更新された現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する。また、ファームウェア実行装置１２０は、ファームウェアの更新により不整合が解消されない場合には、現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択する。
【００８８】
次に、パラメータ設定部１２７は、選択された機能モジュールのバージョンおよび現行のドライバのバージョンの組合せについて、動作エラーが有ることを表すエラー情報が登録されているか否かを判断する（ステップＳ１２１）。
【００８９】
ここで、動作エラーが有ることを表すエラー情報が登録されていない場合（ステップＳ１２１でＮｏ）について説明する。この場合、パラメータ設定部１２７は、優先度に基づき選択した設定値を、パラメータとして設定する（ステップＳ１２２）。
【００９０】
一方、動作エラーが有ることを表すエラー情報が登録されている場合（ステップＳ１２１でＹｅｓ）について説明する。この場合、パラメータ設定部１２７は、動作エラーが無い設定値の中から優先度に基づき選択した設定値を、パラメータとして設定する（ステップＳ１２３）。
【００９１】
なお、前述のように、パラメータ設定部１２７は、エラー情報が関連付けられていない設定値情報については、動作エラーがない設定値を示すとみなすものとする。また、動作エラーが無い設定値がない場合、パラメータ設定部１２７は、入力装置１００７から入力される設定値等を適用してもよい。
【００９２】
以降、ファームウェア実行装置１２０は、ステップＳ１０５またはステップＳ１１０で選択された機能モジュールを実行し、ステップＳ１２２またはＳ１２３で設定されたパラメータを用いて動作する。
【００９３】
次に、ファームウェア実行装置１２０の動作を３つの具体例を用いて説明する。なお、これらの具体例では、ファームウェアのバージョンはａまたはｂで表され、ａよりｂが新しいものとする。また、ファームウェアには、ドライバのバージョンとの間に依存関係を有する機能モジュールＡが含まれるものとする。また、機能モジュールＡのバージョンは、Ａ１よりＡ２が新しいものとする。また、ドライバのバージョンは、１．０または２．０で表され、１．０より２．０が新しいものとする。また、優先度は、１、２といった整数で表され、小さい値ほど優先度が高いことを表すものとする。
【００９４】
＜具体例１＞
ここでは、ファームウェアのバージョンおよびドライバのバージョン間にいずれの組合せでも依存関係がない場合の具体例について説明する。
【００９５】
まず、現行のファームウェアは、バージョンａであるとする。
【００９６】
また、ドライババージョン記憶部１０２は、現行のドライバのバージョンとして「２．０」を記憶しているとする。つまり、現行のドライバは、バージョン２．０である。
【００９７】
また、組合せ情報記憶部１２１は、図７に示すような組合せ情報を記憶しているとする。図７では、説明のため、項目「Ｎｏ」の列に数字を記載している。以降、数字「ｘ」が記載されている行の組合せ情報を、「Ｎｏ．ｘの組合せ情報」とも記載する。図７に示すＮｏ．１〜Ｎｏ．２の組合せ情報は、ファームウェアのバージョンに含まれる機能モジュールのいずれのバージョンと、ドライバのいずれのバージョンとの組合せにおいても、バージョン間の依存関係が無いことを表している。
【００９８】
また、Ｎｏ．１の組合せ情報は、パラメータＸとして「Disabled」およびパラメータＹとして「Enabled」が設定され得ることを表している。また、Ｎｏ．１の組合せ情報は、これらの設定値に対して優先度１が設定されていることを表している。また、Ｎｏ．１の組合せ情報は、これらの設定値に対してエラー情報が登録されていないことを表している。
【００９９】
Ｎｏ．２の組合せ情報は、パラメータＸとして「Disabled」およびパラメータＹとして「Disabled」が設定され得ることを表している。また、Ｎｏ．２の組合せ情報は、これらの設定値に対して優先度２が設定されていることを表している。また、Ｎｏ．２の組合せ情報は、これらの設定値に対して動作エラーの有無を表すエラー情報が登録されていないことを表している。
【０１００】
この場合、まず、ファームウェア実行装置１２０において、起動時に、依存関係判断部１０４は、組合せ情報記憶部１２１から、図７の組合せ情報を読み込む（ステップＳ１０１）。
【０１０１】
次に、依存関係判断部１０４は、現行のファームウェアのバージョンａと、現行のドライバのバージョン２．０との間に、依存関係の不整合が無いと判断する（ステップＳ１０２〜Ｓ１０３、Ｓ１０４でＮｏ）。
【０１０２】
そこで、機能モジュール選択部１０６は、現行のファームウェアに本来含まれるバージョンの機能モジュールを選択する（ステップＳ１０５）。
【０１０３】
次に、パラメータ設定部１２７は、選択された機能モジュールのバージョンと、現行のドライバのバージョンとの組合せについて、エラーが有ることを示すエラー情報が登録されていないと判断する（ステップＳ１２１でＮｏ）。
【０１０４】
そこで、パラメータ設定部１２７は、優先度が最も高い「１」が設定されたＮｏ．１の組合せ情報に基づいて、パラメータＸとして「Disabled」およびパラメータＹとして「Enabled」を設定する（ステップＳ１２２）。
【０１０５】
そして、ファームウェア実行装置１２０は、選択された機能モジュールを実行し、設定されたパラメータで動作する。
【０１０６】
＜具体例２＞
ここでは、ファームウェアより先にドライバが更新された状況でコンピュータ装置が起動された具体例について説明する。
【０１０７】
まず、現行のファームウェアは、バージョンａであるとする。
【０１０８】
また、ドライババージョン記憶部１０２は、現行のドライバのバージョンとして「２．０」を記憶しているとする。つまり、現行のドライバは、バージョン２．０である。
【０１０９】
また、組合せ情報記憶部１２１は、図８に示すような組合せ情報を記憶しているとする。
【０１１０】
例えば、図８のＮｏ．１の組合せ情報に含まれる依存関係情報は、ファームウェアのバージョンａに含まれる機能モジュールＡ１に対して、バージョン１．ｘのドライバが必要であることを表している。ここで、ｘは任意の数値である。また、この依存関係情報は、ファームウェアのバージョンａに対して、本来含まれる機能モジュールＡ１に基づき、バージョン１．ｘのドライバが必要であることも表している。また、Ｎｏ．１の組合せ情報に含まれる設定値情報は、機能モジュールＡ１およびドライバのバージョン１．ｘの組合せにおいて、パラメータＸとして「Disabled」およびパラメータＹとして「Enabled」が設定され得ることを表している。また、Ｎｏ．１の組合せ情報に含まれるエラー情報は、該当する設定値に対して動作エラーが無いことを表している。また、Ｎｏ．１の組合せ情報に含まれる優先度情報は、該当する設定値には、優先度１が設定されていることを表している。
【０１１１】
また、図８のＮｏ．２〜Ｎｏ．５の組合せ情報は、ファームウェアのバージョンｂには、機能モジュールＡについて、バージョンＡ１およびＡ２が含まれることを表している。なお、ファームウェアのバージョンｂに本来含まれる機能モジュールＡのバージョンは、Ａ２であるとする。なお、Ｎｏ．２〜Ｎｏ．５の各組合せ情報に含まれる依存関係情報、設定値情報、エラー情報および優先度情報については、図示した通りであり、詳細な説明を省略する。
【０１１２】
この場合、まず、ファームウェア実行装置１２０において、起動時に、依存関係判断部１０４は、組合せ情報記憶部１２１から図８の組合せ情報を読み込む（ステップＳ１０１）。
【０１１３】
ここで、Ｎｏ．１の組合せ情報を参照すると、現行のファームウェアのバージョンａを利用可能なドライバのバージョンは、本来含まれる機能モジュールＡ１を利用可能なドライバのバージョン１．ｘである。しかしながら、現行のドライバはバージョン２．０である。
【０１１４】
そこで、依存関係判断部１０４は、現行のファームウェアのバージョンａと、現行のドライバのバージョン２．０との間に、依存関係の不整合が有ると判断する（ステップＳ１０２〜Ｓ１０３、Ｓ１０４でＹｅｓ）。
【０１１５】
さらに、Ｎｏ．４〜Ｎｏ．５の組合せ情報を参照すると、現行のドライバのバージョン２．０との間に依存関係の不整合がない機能モジュールＡ２を本来含むファームウェアは、バージョンｂである。ファームウェアのバージョンｂは、現行のバージョンａより新しい。
【０１１６】
したがって、依存関係判断部１０４は、ファームウェアの更新により不整合が解消されると判断する（ステップＳ１０６でＹｅｓ）。
【０１１７】
そこで、ファームウェア更新部１０５は、不整合を解消するバージョンｂのファームウェアを取得して（ステップＳ１０７）、ファームウェアを更新する（ステップＳ１０８）。すなわち、ファームウェア更新部１０５は、取得したファームウェアに含まれる機能モジュールＡ１およびＡ２を、ファームウェア記憶部１２３に書き込む。そして、ファームウェア更新部１０５は、コンピュータ装置を再起動する（ステップＳ１０９）。
【０１１８】
再起動されたコンピュータ装置において、依存関係判断部１０４は、組合せ情報に基づいて、現行のファームウェアのバージョンｂと現行のドライバのバージョン２．０との間に、依存関係の不整合が無いと判断する（ステップＳ１０１〜Ｓ１０３、Ｓ１０４でＮｏ）。
【０１１９】
そこで、機能モジュール選択部１０６は、現行のファームウェアのバージョンｂに本来含まれる機能モジュールＡ２を選択する（ステップＳ１０５）。
【０１２０】
次に、パラメータ設定部１２７は、選択された機能モジュールＡ２と、現行のドライバのバージョン２．０との組合せについて、エラーが有ることを示すエラー情報が登録されていないと判断する（ステップＳ１２１でＮｏ）。
【０１２１】
そこで、パラメータ設定部１２７は、優先度が最も高い「１」が設定されたＮｏ．４の組合せ情報に基づいて、パラメータＸとして「Enabled」およびパラメータＹとして「Enabled」を設定する。
【０１２２】
そして、ファームウェア実行装置１２０は、選択された機能モジュールＡ２を実行し、設定されたパラメータで動作する。
【０１２３】
＜具体例３＞
ここでは、ファームウェアがドライバより先に更新された状況でコンピュータ装置が起動された具体例について説明する。
【０１２４】
まず、現行のファームウェアはバージョンｂであるとする。
【０１２５】
また、ドライババージョン記憶部１０２は、現行のドライバのバージョンとして「１．０」を記憶しているとする。つまり、現行のドライバはバージョン１．０である。
【０１２６】
また、組合せ情報記憶部１２１は、具体例２と同様に、図８に示した組合せ情報を記憶しているとする。
【０１２７】
この場合、まず、ファームウェア実行装置１２０において、起動時に、依存関係判断部１０４は、組合せ情報記憶部１２１から図８の組合せ情報を読み込む（ステップＳ１０１）。
【０１２８】
ここで、Ｎｏ．４〜Ｎｏ．５の組合せ情報を参照すると、現行のファームウェアのバージョンｂを利用可能なドライバのバージョンは、本来含まれる機能モジュールＡ２を利用可能なドライバのバージョン２．ｘである。しかしながら、現行のドライバはバージョン１．０である。
【０１２９】
そこで、依存関係判断部１０４は、現行のファームウェアのバージョンｂと、現行のドライバのバージョン１．０との間に、依存関係の不整合が有ると判断する（ステップＳ１０４でＹｅｓ）。
【０１３０】
また、Ｎｏ．１の組合せ情報を参照すると、現行のドライバのバージョン１．０との間に依存関係の不整合がないバージョンの機能モジュールを本来含むファームウェアは、バージョンａである。ファームウェアのバージョンａは、現行のバージョンｂより古い。
【０１３１】
したがって、依存関係判断部１０４は、ファームウェアを更新しても不整合が解消されないと判断する（ステップＳ１０６でＮｏ）。
【０１３２】
そこで、機能モジュール選択部１０６は、現行のファームウェアのバージョンｂに含まれる複数のバージョンの機能モジュールＡのうち、現行のドライバのバージョン１．０によって利用可能な機能モジュールＡ１を選択する（ステップＳ１１０）。
【０１３３】
次に、パラメータ設定部１２７は、選択された機能モジュールＡ１と、現行のドライバのバージョン１．０との組合せについて、動作エラーが有ることを示すエラー情報が登録されていると判断する（ステップＳ１２１でＹｅｓ）。
【０１３４】
そこで、パラメータ設定部１２７は、動作エラーが無い設定値のうち優先度が最も高い「２」が設定されたＮｏ．３の組合せ情報に基づいて、パラメータＸとして「Disabled」およびパラメータＹとして「Disabled」を設定する（ステップＳ１２３）。
【０１３５】
そして、ファームウェア実行装置１２０は、選択された機能モジュールＡ１を実行し、設定されたパラメータで動作する。
【０１３６】
以上で、具体例の説明を終了する。
【０１３７】
次に、本発明の第２の実施の形態の効果について述べる。
【０１３８】
本発明の第２の実施の形態としてのファームウェア実行装置は、必要なリソース量の増大を抑制しながら、ファームウェアまたはドライバの更新に伴うパラメータの設定変更に起因する不具合を、より確実に回避することができる。
【０１３９】
その理由について説明する。本発明の第２の実施の形態は、本発明の第１の実施の形態と同様の構成に加えて、次の構成を備える。すなわち、組合せ情報記憶部が、機能モジュールのバージョンおよびドライバのバージョンの組合せ毎に、依存関係情報、設定値情報、エラー情報および優先度情報を含む組合せ情報を記憶する。そして、パラメータ設定部が、選択された機能モジュールのバージョンと現行のドライバのバージョンとの組合せにおいて、動作エラーが無い設定値のうち優先度に基づき選択した設定値を、パラメータとして設定するからである。
【０１４０】
このように、本実施の形態は、依存関係の不整合がないよう選択された機能モジュールのバージョンおよび現行のドライバのバージョンの組合せにおいて、動作エラーが無い設定値を優先度に基づき選択してパラメータとして設定する。したがって、本実施の形態は、ファームウェアまたはドライバの更新の際に、パラメータの設定変更により不具合を生じさせる可能性を大幅に低減するだけでなく、ファームウェアのパラメータとしてより適切な設定値を設定して性能を向上させることができる。
【０１４１】
なお、本実施の形態の具体例において、組合せ情報記憶部に記憶される組合せ情報の一例を図７〜図８に示した。ただし、組合せ情報の構造や形式は、これら図示したものに限られない。
【０１４２】
（第３の実施の形態）
次に、本発明の第３の実施の形態としてのファームウェア実行装置１３０について図面を参照して詳細に説明する。
【０１４３】
まず、ファームウェア実行装置１３０の機能ブロック構成を図９に示す。図９において、ファームウェア実行装置１３０は、本発明の第２の実施の形態としてのファームウェア実行装置１２０と同様の構成に加えて、組合せ情報取得部１３８を備える。
【０１４４】
次に、ファームウェア実行装置１３０のハードウェア構成の一例について説明する。ファームウェア実行装置１３０は、図２を参照して説明した本発明の第１の実施の形態と同様のハードウェア要素によって構成可能である。この場合、組合せ情報取得部１３８は、メモリ１００２に記憶されたプログラムを実行するＣＰＵ１００１と、管理プロセッサ１００４と、管理ネットワークインタフェース１００５とによって構成される。ただし、ファームウェア実行装置１３０およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０１４５】
次に、ファームウェア実行装置１３０の機能ブロックのうち本発明の第２の実施の形態と異なる機能ブロックについて詳細を説明する。
【０１４６】
組合せ情報取得部１３８は、コンピュータ装置の起動時に、管理ネットワークを介して組合せ情報を取得し、組合せ情報記憶部１２１に書き込む。管理ネットワークは、ファームウェア実行装置１３０を含むコンピュータ装置においてファームウェアの起動中に利用可能である。例えば、組合せ情報取得部１３８は、管理ネットワーク上で稼働する管理サーバから、組合せ情報を取得してもよい。
【０１４７】
以上のように構成されたファームウェア実行装置１３０の動作を、図１０を参照して説明する。
【０１４８】
図１０では、まず、組合せ情報取得部１３８は、起動時に、管理ネットワークを介して組合せ情報を取得する（ステップＳ１３１）。
【０１４９】
次に、組合せ情報取得部１３８は、取得した組合せ情報を、組合せ情報記憶部１２１に書き込む（ステップＳ１３２）。
【０１５０】
このとき、組合せ情報取得部１３８は、取得した組合せ情報を用いて、組合せ情報記憶部１２１に記憶された情報を上書きしてもよい。あるいは、組合せ情報取得部１３８は、は、取得した組合せ情報を追加して書き込んでもよい。
【０１５１】
以降、ファームウェア実行装置１３０は、ステップＳ１０１〜Ｓ１１０まで、本発明の第１および第２の実施の形態と同様に動作する。これにより、ファームウェアおよびドライバのバージョン間の依存関係に関する依存関係判断部１０４の判断結果に応じて、ファームウェアが更新されて再起動されるか、または、機能モジュールが選択される。
【０１５２】
そして、ファームウェア実行装置１３０は、ステップＳ１２１〜Ｓ１２３まで、本発明の第２の実施の形態と同様に動作する。これにより、ファームウェアおよびドライバのバージョンの組合せに応じて、エラー情報および優先度情報に基づいてパラメータが設定される。
【０１５３】
以上で、ファームウェア実行装置１３０の動作の説明を終了する。
【０１５４】
次に、本発明の第３の実施の形態の効果について述べる。
【０１５５】
本発明の第３の実施の形態としてのファームウェア実行装置は、ファームウェアまたはドライバが未知のバージョンに更新されることによる不具合をより確実に回避することができる。
【０１５６】
その理由について説明する。本発明の第３の実施の形態では、本発明の第２の実施の形態と同様の構成に加えて、組合せ情報取得部が、コンピュータ装置の起動時に、管理ネットワークを介して組合せ情報を取得し、組合せ情報記憶部に書き込む。したがって、組合せ情報記憶部には、コンピュータ装置が起動する度に、取得可能な最新の組合せ情報が記憶されることになる。つまり、本実施の形態は、最新の組合せ情報に基づいて動作することになり、ファームウェアまたはドライバを未知のバージョンに更新してしまうことがない。その結果、本実施の形態は、未知のバージョン間で依存関係の不整合が発生することを回避できる。
【０１５７】
（第４の実施の形態）
次に、本発明の第４の実施の形態としてのファームウェア実行装置１４０について図面を参照して詳細に説明する。
【０１５８】
まず、ファームウェア実行装置１４０の機能ブロック構成を図１１に示す。図１１において、ファームウェア実行装置１４０は、本発明の第３の実施の形態としてのファームウェア実行装置１３０と同一の構成に加えて、機能モジュール取得部１４９を備える。
【０１５９】
また、本実施の形態では、ファームウェア更新部１０５によって取得されるファームウェアに含まれる情報が、本発明の第１〜第３の実施の形態と若干異なる。本発明の第１〜第３の実施の形態では、取得されるファームウェアは、該当するファームウェアのバージョンに本来含まれるバージョンの機能モジュールに加えて、ドライバのバージョン別の機能モジュールを含むものとして説明した。本実施の形態では、取得されるファームウェアは、本来含まれるバージョンの機能モジュールを含んでいればよい。
【０１６０】
ここで、ファームウェア実行装置１４０およびその各機能ブロックは、図２を参照して説明した本発明の第１の実施の形態と同様のハードウェア要素によって構成可能である。この場合、機能モジュール取得部１４９は、メモリ１００２に記憶されたプログラムを実行するＣＰＵ１００１と、管理プロセッサ１００４と、管理ネットワークインタフェース１００５とによって構成される。ただし、ファームウェア実行装置１４０およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０１６１】
次に、ファームウェア実行装置１４０の機能ブロックのうち本発明の第２の実施の形態と異なる機能ブロックについて詳細を説明する。
【０１６２】
機能モジュール取得部１４９は、依存関係判断部１０４によって、ファームウェアの更新により不整合が解消されないと判断された場合に機能する。すなわち、この場合、機能モジュール取得部１４９は、現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールをバックアップモジュールとして、管理ネットワークより取得する。
【０１６３】
また、機能モジュール取得部１４９は、取得したバックアップモジュールを、ファームウェア記憶部１２３に記憶させる。ここで、ファームウェア記憶部１２３には、ファームウェア更新部１０５によって現行のファームウェアに本来含まれるバージョンの機能モジュールが記憶されている。本来含まれるバージョンの機能モジュールを、以降、メインモジュールとも記載する。つまり、機能モジュール取得部１４９が機能することにより、ファームウェア記憶部１２３は、ドライバのバージョンとの間に依存関係を有する機能モジュールについては、メインモジュールおよびバックアップモジュールを記憶することになる。
【０１６４】
本実施の形態においてファームウェア記憶部１２３に記憶される機能モジュールの一例を図１２に示す。図１２において、機能モジュールＡおよび機能モジュールＢは、ドライバのバージョンとの間に依存関係を有するものとする。したがって、これらの機能モジュールについてはメインモジュールおよびバックアップモジュールが記憶される。この例では、機能モジュールＡがメインモジュールを表し、機能モジュールＡ’が機能モジュールＡに対するバックアップモジュールを表している。また、機能モジュールＢがメインモジュールを表し、機能モジュールＢ’が機能モジュールＢに対するバックアップモジュールを表している。また、この例では、機能モジュールＣは、ドライバのバージョンとの間に依存関係が無いとする。したがって、メインモジュールとして機能モジュールＣが記憶され、機能モジュールＣに対するバックアップモジュールは記憶されない。
【０１６５】
以上のように構成されたファームウェア実行装置１４０の動作を、図１３を参照して説明する。
【０１６６】
図１３において、ファームウェア実行装置１４０は、図１０を参照して説明した本発明の第３の実施の形態とほぼ同様に動作する。ただし、ファームウェアの更新により依存関係の不整合が解消されないと判断された場合（ステップＳ１０６でＮｏ）の動作が若干異なる。
【０１６７】
この場合、本発明の第３の実施の形態では、機能モジュール選択部１０６は、ファームウェア記憶部１２３に記憶された機能モジュールの中から、現行のドライバのバージョンにより利用可能なバージョンの機能モジュールを選択していた（ステップＳ１１０）。
【０１６８】
これに対して、本実施の形態では、ファームウェア実行装置１４０は、ステップＳ１１０の代わりに、次のステップＳ１４１〜Ｓ１４３を実行する点が異なる。
【０１６９】
すなわち、この場合、機能モジュール取得部１４９は、現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールをバックアップモジュールとして、管理ネットワークより取得する（ステップＳ１４１）。
【０１７０】
次に、機能モジュール取得部１４９は、取得したバックアップモジュールを、ファームウェア記憶部１２３に記憶させる（ステップＳ１４２）。
【０１７１】
その後、機能モジュール選択部１０６は、バックアップモジュールを選択する（ステップＳ１４３）。
【０１７２】
以降、ファームウェア実行装置１４０は、本発明の第３の実施の形態と同様にステップＳ１２１〜Ｓ１２３を実行することにより、パラメータを設定する。
【０１７３】
以上で、ファームウェア実行装置１４０の動作の説明を終了する。
【０１７４】
次に、本発明の第４の実施の形態の効果について述べる。
【０１７５】
本発明の第４の実施の形態としてのファームウェア実行装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避しながら、必要となるリソース量の増大をさらに抑制することができる。
【０１７６】
その理由について説明する。本発明の第４の実施の形態では、本発明の第４の実施の形態と同様の構成に加えて、バックアップモジュール取得部が、依存関係判断部によってファームウェアの更新により不整合が解消されないと判断された場合に機能する。すなわち、この場合、バックアップモジュール取得部は、現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールをバックアップモジュールとして、管理ネットワークより取得する。そして、バックアップモジュール取得部は、取得したバックアップモジュールを、ファームウェア記憶部に記憶させる。そして、機能モジュール選択部が、バックアップモジュールを選択するからである。
【０１７７】
つまり、本実施の形態は、ドライバのバージョンとの間に依存関係がある機能モジュールであっても、全てのバージョンのドライバによってそれぞれ利用可能な機能モジュールをファームウェア記憶部に記憶させる必要がない。本実施の形態は、そのような機能モジュールについて、現行のファームウェアに本来含まれるバージョンのメインモジュールと、現行のドライバのバージョンによって利用可能なバックアップモジュールとをファームウェア記憶部に記憶すればよい。したがって、本実施の形態は、ファームウェア記憶部として必要なリソース量を削減することができる。
【０１７８】
また、本実施の形態では、ファームウェア記憶部によって取得されるファームウェアに、バージョン別の機能モジュールが含まれている必要がない。したがって、本実施の形態は、更新対象のファームウェアとして、一般的なデータ構造のファームウェアを適用することができる。
【０１７９】
（第５の実施の形態）
次に、本発明の第５の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するファームウェア管理装置の一実施形態について説明する。
【０１８０】
まず、本発明の第５の実施の形態としてのファームウェア管理装置２００について説明する。ファームウェア管理装置２００は、本発明の第２の実施の形態としてのファームウェア実行装置１２０が実行するファームウェアを管理する装置である。ファームウェア管理装置２００の機能ブロック構成を図１４に示す。図１４において、ファームウェア管理装置２００は、組合せ情報更新部２０１を備える。
【０１８１】
ここで、ファームウェア管理装置２００のハードウェア構成の一例について説明する。ファームウェア管理装置２００は、図２に示したような、本発明の第２の実施の形態としてのファームウェア実行装置１２０を構成するコンピュータ装置によって構成される。この場合、組合せ情報更新部２０１は、メモリ１００２に記憶されたプログラムを実行するＣＰＵ１００１によって構成される。なお、ファームウェア管理装置２００およびその機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０１８２】
次に、ファームウェア管理装置２００の機能ブロックの詳細について説明する。
【０１８３】
組合せ情報更新部２０１は、ファームウェア実行装置１２０における組合せ情報記憶部１２１に記憶された組合せ情報を更新する。
【０１８４】
以上のように構成されたファームウェア管理装置２００の動作を図１５に示す。
【０１８５】
図１５では、まず、組合せ情報更新部２０１は、更新対象の組合せ情報を取得し、取得した組合せ情報を、ファームウェア実行装置１２０の組合せ情報記憶部１２１に格納するする（ステップＳ２０１）。例えば、組合せ情報更新部２０１は、更新対象の組合せ情報を、入力装置１００７によって入力された格納場所や、ネットワーク上の所定の格納場所から取得してもよい。
【０１８６】
このとき、組合せ情報更新部２０１は、取得した組合せ情報を用いて、組合せ情報記憶部１２１に記憶された情報を上書きしてもよい。あるいは、組合せ情報更新部２０１は、取得した組合せ情報を追加して書き込んでもよい。
【０１８７】
以上で、ファームウェア管理装置２００は、動作を終了する。
【０１８８】
なお、組合せ情報更新部２０１は、組合せ情報の更新を、入力装置１００７からの指示に応じて実行してもよい。あるいは、ファームウェア管理装置２００がファームウェアの更新機能を有する場合、組合せ情報更新部２０１は、組合せ情報の更新を、ファームウェアの更新の際に実行してもよい。
【０１８９】
この場のファームウェア管理装置２００の動作を図１６に示す。
【０１９０】
図１６では、まず、ファームウェア管理装置２００は、ファームウェアの更新を要求されているか否かを判断する（ステップＳ２１１）。更新の要求は、例えば、入力装置１００７や管理ネットワークを介して行われる。
【０１９１】
ここで、ファームウェアの更新が要求されていなければ、ファームウェア管理装置２００は、動作を終了する。
【０１９２】
一方、ファームウェアの更新が要求されている場合、ファームウェア管理装置２００は、更新用のファームウェアを取得して、ファームウェアを更新する（ステップＳ２１２）。
【０１９３】
なお、更新用のファームウェアとは、現行のファームウェアから更新するためのより新しいバージョンのファームウェアをいうものとする。
【０１９４】
次に、組合せ情報更新部２０１は、上述のステップＳ２０１を実行することにより、組合せ情報を更新する（ステップＳ２０１）。
【０１９５】
次に、ファームウェア管理装置２００は、コンピュータ装置を再起動する（ステップＳ２１３）。
【０１９６】
以上で、ファームウェアを更新する際に組合せ情報を更新する場合のファームウェア管理装置２００の動作の説明を終了する。
【０１９７】
次に、ファームウェア管理装置２００の動作を具体例で説明する。ここでは、ファームウェアの更新の際に組合せ情報を更新するものとする。
【０１９８】
＜具体例４＞
ここでは、現行のファームウェアは、バージョンａであるとする。
【０１９９】
また、ドライババージョン記憶部１０２は、現行のドライバのバージョンとして「１．０」を記憶しているとする。つまり、現行のドライバはバージョン１．０である。
【０２００】
また、組合せ情報記憶部１２１は、本発明の第２の実施の形態の具体例２および具体例３と同様に、図８に示した組合せ情報を記憶しているとする。
【０２０１】
この場合、まず、ファームウェア管理装置２００は、ファームウェアａをファームウェアｂに更新する（ステップＳ２１１でＹｅｓ、Ｓ２１２）。例えば、更新用のファームウェアｂは、可搬型記憶媒体から取得されていてもよい。あるいは、更新用のファームウェアｂは、アウトオブバンド管理用の管理ネットワークを介して受信されてもよい。
【０２０２】
次に、組合せ情報更新部２０１は、更新用の組合せ情報を、組合せ情報記憶部１２１に書き込む（ステップＳ２０１）。例えば、更新用の組合せ情報は、可搬型記憶媒体から取得されていてもよい。あるいは、更新用の組合せ情報は、アウトオブバンド管理用の管理ネットワークを介して受信されてもよい。なお、更新用の組合せ情報とは、現行の組合せ情報を更新するためのより新しい組合せ情報をいうものとする。
【０２０３】
次に、組合せ情報更新部２０１は、コンピュータ装置を再起動する（ステップＳ２１３）。これにより、現行のファームウェアは、バージョンｂとなる。このとき、ドライババージョン記憶部１０２は、現行のドライバのバージョンとして「１．０」を記憶している。したがって、その後、ファームウェア実行装置１２０は、本発明の第２の実施の形態における具体例３と同様に動作する。
【０２０４】
以上で、具体例の動作の説明を終了する。
【０２０５】
次に、本発明の第５の実施の形態の効果について述べる。
【０２０６】
本発明の第５の実施の形態としてのファームウェア管理装置は、ファームウェアまたはドライバの更新による不具合の発生を、さらに確実に回避することができる。
【０２０７】
その理由について説明する。本実施の形態では、組合せ情報更新部が、組合せ情報を更新するからである。これにより、本実施の形態は、ファームウェアまたはドライバの更新による不具合の発生を回避するためにファームウェア実行装置によって参照される組合せ情報を、任意のタイミングで最新の情報に更新することができるからである。
【０２０８】
（第６の実施の形態）
次に、本発明の第６の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するドライバ実行装置の一実施形態について説明する。
【０２０９】
まず、本発明の第６の実施の形態としてのドライバ実行装置３００について説明する。ドライバ実行装置３００は、本発明の第２の実施の形態としてのファームウェア実行装置１２０を含むコンピュータ装置に実装されたドライバを実行する装置である。ドライバ実行装置３００の機能ブロック構成を図１７に示す。図１７において、ドライバ実行装置３００は、エラー情報登録部３０１を備える。
【０２１０】
ここで、ドライバ実行装置３００のハードウェア構成の一例について説明する。ドライバ実行装置３００は、図２に示したような、本発明の第２の実施の形態としてのファームウェア実行装置１２０を構成するコンピュータ装置によって構成される。この場合、エラー情報登録部３０１は、メモリ１００２に記憶されたプログラムを実行するＣＰＵ１００１によって構成される。なお、ドライバ実行装置３００およびその機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０２１１】
次に、ドライバ実行装置３００の機能ブロックの詳細について説明する。
【０２１２】
エラー情報登録部３０１は、ハードウェアデバイス１００８の制御において動作エラーを検出した場合、ファームウェア実行装置１２０の組合せ情報記憶部１２１に、エラー情報を登録する。具体的には、エラー情報登録部３０１は、組合せ情報記憶部１２１において、動作エラーに関連するファームウェアの機能モジュールのバージョンと、現行のドライバのバージョンとの組合せについて、パラメータの現行の設定値情報を含むエントリを検索する。そして、エラー情報登録部３０１は、検索したエントリに、動作エラーが有ることを表すエラー情報を登録すればよい。
【０２１３】
以上のように構成されたドライバ実行装置３００の動を図１８に示す。
【０２１４】
図１８において、エラー情報登録部３０１は、ハードウェアデバイス１００８の制御において動作エラーを検出したか否かを判断する（ステップＳ３０１）。
【０２１５】
ここで、動作エラーを検出していない場合（ステップＳ３０１でＮｏ）、エラー情報登録部３０１は、ステップＳ３０１の動作を繰り返す。
【０２１６】
一方、動作エラーを検出した場合（ステップＳ３０１でＹｅｓ）、エラー情報登録部３０１は、エラー情報を、ファームウェア実行装置１２０の組合せ情報記憶部１２１に登録する（ステップＳ３０２）。
【０２１７】
そして、エラー情報登録部３０１は、ステップＳ３０１からの動作を繰り返す。
【０２１８】
以上で、ドライバ実行装置３００の動作の説明を終了する。
【０２１９】
次に、本発明の第６の実施の形態の効果について述べる。
【０２２０】
本発明の第６の実施の形態としてのドライバ実行装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
【０２２１】
その理由について説明する。本実施の形態では、エラー情報登録部が、ハードウェアデバイスの制御において動作エラーを検出した場合、本発明の第２の実施の形態としてのファームウェア実行装置の組合せ情報記憶部に、エラー情報を登録するからである。
【０２２２】
ここで、本実施の形態は、そのような動作エラーが、ファームウェアまたはドライバの更新により生じたケースを想定している。本実施の形態は、このようにして登録したエラー情報を、コンピュータ装置が再起動された際に動作する本発明の第２の実施の形態としてのファームウェア実行装置に参照させることになる。したがって、動作エラー発生後のコンピュータ装置の再起動の際に、該当する設定値が、パラメータに設定されることがない。したがって、本実施の形態は、ファームウェアまたはドライバの更新による不具合の回避に貢献することができる。
【０２２３】
なお、本実施の形態において、ファームウェア実行装置の組合せ情報記憶部に記憶される当初の組合せ情報がベンダから提供される場合、提供される組合せ情報には、エラー情報が含まれていなくてもよい。その場合であっても、本実施の形態のドライバ実行装置が、動作エラーの検出に応じてエラー情報を登録する。これにより、エラー情報は、動作実績に基づき蓄積されることになる。
【０２２４】
（第７の実施の形態）
次に、本発明の第７の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するドライバ管理装置の一実施形態について説明する。
【０２２５】
まず、本発明の第７の実施の形態としてのドライバ管理装置４００について説明する。ドライバ管理装置４００は、本発明の第１の実施の形態としてのファームウェア実行装置１００を含むコンピュータ装置に実装されたドライバを管理する装置である。ドライバ管理装置４００の機能ブロック構成を図１９に示す。図１９において、ドライバ管理装置４００は、ドライバ更新部４０１と、情報更新部４０２とを備える。
【０２２６】
ここで、ドライバ管理装置４００のハードウェア構成の一例について説明する。ドライバ管理装置４００は、図２に示したような、本発明の第１の実施の形態としてのファームウェア実行装置１００を構成するコンピュータ装置によって構成される。この場合、ドライバ更新部４０１および情報更新部４０２は、メモリ１００２に記憶されたプログラムを実行するＣＰＵ１００１によって構成される。なお、ドライバ管理装置４００およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【０２２７】
次に、ドライバ管理装置４００の各機能ブロックの詳細について説明する。
【０２２８】
ドライバ更新部４０１は、コンピュータ装置に実装されたドライバを更新する。例えば、ドライバ更新部４０１は、入力装置１００７を介して入力される更新指示を表す情報に基づいて、ドライバを更新してもよい。なお、ドライバ更新部４０１は、現行のバージョンより新しいバージョンのドライバを、更新指示を表す情報に基づく格納場所から取得すればよい。そのような格納場所としては、例えば、メモリ１００２、可搬型記憶媒体、または、ネットワーク上の管理サーバ等があるが、これらに限られない。
【０２２９】
情報更新部４０２は、ファームウェア実行装置１００におけるドライババージョン記憶部１０２に記憶された現行のドライバのバージョンを表す情報を、ドライバ更新部４０１による更新後のバージョンを表す情報に更新する。
【０２３０】
なお、情報更新部４０２は、さらに、ドライバを更新したタイミングで、ファームウェア実行装置１００における組合せ情報記憶部１０１に記憶された情報を更新可能に構成されていてもよい。この場合、ドライバ更新部４０１は、更新指示を表す情報に基づいて、更新用のドライバを表す情報に加えて、更新用の組合せ情報を取得すればよい。
【０２３１】
次に、ドライバ管理装置４００の動作を図２０に示す。
【０２３２】
図２０では、まず、ドライバ更新部４０１は、更新用のドライバを表す情報を取得し、取得したドライバを表す情報を用いて、現行のドライバを更新する（ステップＳ４０１）。
【０２３３】
次に、情報更新部４０２は、ファームウェア実行装置１００に記憶された情報を更新する（ステップＳ４０２）。
【０２３４】
具体的には、情報更新部４０２は、ドライババージョン記憶部１０２に記憶された現行のドライバのバージョンを表す情報を、更新後のドライバのバージョンを表す情報に更新する。さらに、前述したように、情報更新部４０２は、組合せ情報記憶部１０１に記憶された情報を更新してもよい。その場合、ステップＳ４０１において、更新用のドライバを表す情報と共に、更新用の組合せ情報が取得されているものとする。
【０２３５】
次に、ドライバ更新部４０１は、コンピュータ装置を再起動する（ステップＳ４０３）。
【０２３６】
このときステップＳ４０２の更新動作により、ファームウェアより先にドライバが更新された状況を想定する。また、そのために、バージョン間に依存関係の不整合が発生していたとする。その場合であっても、ステップＳ４０３での再起動後に、ファームウェア実行装置１００の各機能ブロックが、本発明の第１の実施の形態と同様に動作する。このとき、ドライバ管理装置４００の情報更新部４０２によって更新された現行ドライババージョン情報が参照される。これにより、依存関係判断部１０４は、現行のファームウェアのバージョンおよび更新後のドライバのバージョン間に依存関係の不整合があり、ファームウェアの更新により不整合が解消されると判断することになる。その結果、ファームウェア更新部１０５が、ファームウェアを更新することになり、不整合が解消される。
【０２３７】
次に、本発明の第７の実施の形態の効果について述べる。
【０２３８】
本発明の第７の実施の形態としてのドライバ管理装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
【０２３９】
その理由について説明する。本実施の形態では、ドライバ更新部が、本発明の第１の実施の形態としてのファームウェア実行装置を含むコンピュータ装置のドライバを更新する。そして、情報更新部が、ファームウェア実行装置のドライババージョン記憶部に記憶された情報を、更新後のドライバのバージョンを表す情報に更新するからである。
【０２４０】
これにより、本実施の形態は、更新後のドライバのバージョンを、コンピュータ装置が再起動された際に動作する本発明の第１の実施の形態としてのファームウェア実行装置に参照させることになる。したがって、ファームウェア実行装置において、現行のファームウェアおよび更新後のドライバのバージョン間の依存関係の不整合が、正しく判断されることになる。したがって、本実施の形態は、ファームウェアまたはドライバの更新による不具合の回避に貢献することができる。
【０２４１】
また、さらに、本実施の形態において、情報更新部が、ドライバの更新の際に組合せ情報を更新するよう構成される場合、そのような組合せ情報は、更新後のドライバのバージョンに関する情報を確実に含むことが期待される。したがって、再起動後のファームウェア実行装置において、更新後のドライバのバージョンに関する情報を含む組合せ情報が参照されることになる。その結果、本実施の形態は、バージョン間の依存関係の不整合による不具合の発生を、さらに確実に回避することができる。
【０２４２】
（第８の実施の形態）
次に、本発明の第８の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置に対応するドライバ管理装置の他の一実施形態について説明する。
【０２４３】
まず、本発明の第８の実施の形態としてのドライバ管理装置４８０について説明する。ドライバ管理装置４８０は、本発明の第１の実施の形態としてのファームウェア実行装置１００を含むコンピュータ装置に実装されたドライバを更新する装置である。ドライバ管理装置４８０の機能ブロック構成を図２１に示す。図２１において、ドライバ管理装置４８０は、本発明の第７の実施の形態としてのドライバ管理装置４００に対して、ドライバ更新部４０１に替えてドライバ更新部４８１を備える点が異なる。
【０２４４】
次に、ドライバ管理装置４８０の各機能ブロックのうち、本発明の第７の実施の形態と異なる機能ブロックの詳細について説明する。
【０２４５】
ドライバ更新部４８１は、ドライバを更新する前に、ファームウェア実行装置１００における組合せ情報記憶部１０１に記憶された組合せ情報を参照する。そして、ドライバ更新部４８１は、組合せ情報を参照することにより、現行のファームウェアのバージョンと、ドライバを更新した場合の更新後のバージョンとの間に依存関係の不整合があるか否かを判断する。もし、更新後のバージョンとの間に依存関係の不整合があれば、ドライバ更新部４８１は、現行のドライバを更新しない。更新後のバージョンとの間に依存関係の不整合がなければ、ドライバ更新部４８１は、現行のドライバを更新する。
【０２４６】
次に、ドライバ管理装置４８０の動作を図２２に示す。
【０２４７】
図２２では、まず、ドライバ更新部４８１は、更新用のドライバのバージョンを取得する（ステップＳ４２１）。
【０２４８】
次に、ドライバ更新部４８１は、現行のファームウェアのバージョンを取得する（ステップＳ４２２）。
【０２４９】
次に、ドライバ更新部４８１は、ファームウェア実行装置１００の組合せ情報記憶部１０１から、組合せ情報を読み込む（ステップＳ４２３）。
【０２５０】
次に、ドライバ更新部４８１は、更新用のドライバのバージョンおよび現行のファームウェアのバージョンとの間に依存関係の不整合があるか否かを、組合せ情報を参照して判断する（ステップＳ４２４）。
【０２５１】
ここで、依存関係の不整合があると判断した場合（ステップＳ４２４でＹｅｓ）、ドライバ更新部４８１は、ドライバを更新せずに動作を終了する。
【０２５２】
一方、依存関係の不整合がないと判断した場合（ステップＳ４２４でＮｏ）、ドライバ管理装置４８０は、ステップＳ４０１〜Ｓ４０３まで、本発明の第７の実施の形態としてのドライバ管理装置４００と同様に動作する。これにより、ドライバが更新され、ファームウェア実行装置１００における情報が更新された上で、コンピュータ装置が再起動される。
【０２５３】
以上で、ドライバ管理装置４８０は動作を終了する。
【０２５４】
次に、本発明の第８の実施の形態の効果について述べる。
【０２５５】
本発明の第８の実施の形態としてのドライバ管理装置は、ファームウェアまたはドライバの更新による不具合をさらに確実に回避することができる。
【０２５６】
その理由について説明する。本実施の形態では、ドライバ更新部が、本発明の第１の実施の形態としてのファームウェア実行装置を含むコンピュータ装置のドライバを更新する前に、次のように動作するからである。すなわち、ドライバ更新部が、現行のファームウェアのバージョンおよび更新しようとしている更新用のドライバのバージョンの間に依存関係の不整合があるか否かを、ファームウェア実行装置の組合せ情報記憶部を参照することにより判断する。そして、依存関係の不整合がない場合に、ドライバ更新部が、本発明の第７の実施の形態としてのドライバ更新部と同様に動作してドライバを更新する。そして、情報更新部が、ファームウェア実行装置のドライババージョン記憶部等を更新するからである。
【０２５７】
このように、本実施の形態は、ファームウェアより先にドライバが更新されることにより依存関係の不整合が発生することを回避できる。
【０２５８】
（第９の実施の形態）
次に、本発明の第９の実施の形態について図面を参照して詳細に説明する。本実施の形態は、本発明のファームウェア実行装置を含むコンピュータ装置の一実施形態について説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０２５９】
まず、本発明の第９の実施の形態としてのコンピュータ装置１の機能ブロック構成を図２３に示す。図２３において、コンピュータ装置１は、本発明の第１の実施の形態としてのファームウェア実行装置１００を含む。コンピュータ装置１に実装されるファームウェアは、ファームウェア実行装置１００によって実行される。ここで、コンピュータ装置１は、図２を参照して説明したハードウェア要素によって構成可能である。ただし、コンピュータ装置１のハードウェア構成は、上述の構成に限定されない。
【０２６０】
コンピュータ装置１に含まれるファームウェア実行装置１００の機能ブロック構成および動作は、本発明の第１の実施の形態で説明した通りである。
【０２６１】
次に、本発明の第９の実施の形態の効果について説明する。
【０２６２】
本発明の第９の実施の形態としてのコンピュータ装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
【０２６３】
その理由について説明する。
【０２６４】
本実施の形態のコンピュータ装置は、本発明の第１の実施の形態としてのファームウェア実行装置を含む。これにより、本実施の形態は、ファームウェアより先にドライバが更新された場合にも、ファームウェアがドライバより先に更新された場合にも、バージョン間の依存関係の不整合を解消するからである。
【０２６５】
つまり、本実施の形態のコンピュータ装置は、ファームウェアまたはドライバがバージョン間の依存関係や更新順序を考慮せずに更新された場合にも、依存関係の不整合を解消する。これにより、本実施の形態のコンピュータ装置は、ファームウェアまたはドライバの更新による不具合をより確実に回避することができる。
【０２６６】
なお、本実施の形態において、コンピュータ装置は、本発明の第１の実施の形態としてのファームウェア実行装置の代わりに本発明の第２〜第４のいずれかの実施の形態としてのファームウェア実行装置を含んでいてもよい。
【０２６７】
また、本実施の形態において、コンピュータ装置は、ファームウェア実行装置に加えて、本発明の第５の実施の形態としてのファームウェア管理装置を含んでいてもよい。
【０２６８】
また、本実施の形態において、コンピュータ装置は、ファームウェア実行装置に加えて、本発明の第６の実施の形態としてのドライバ実行装置を含んでいてもよい。
【０２６９】
また、本実施の形態において、コンピュータ装置は、ファームウェア実行装置に加えて、本発明の第７または第８の実施の形態としてのドライバ管理装置を含んでいてもよい。
【０２７０】
また、上述した本発明の各実施の形態において、各装置の各機能ブロックが、メモリに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明した。これに限らず、各機能ブロックまたはそれらの任意の組合せが専用のハードウェアにより実現されていてもよい。
【０２７１】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した各装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置（記憶媒体）に格納しておく。そして、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０２７２】
また、上述した各実施の形態は、適宜組合せて実施されることが可能である。
【０２７３】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０２７４】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段と、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断手段と、
前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新手段と、
前記依存関係判断手段によって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択手段と、
を備えたファームウェア実行装置。
（付記２）
前記組合せ情報記憶手段は、前記機能モジュールのバージョンと前記ドライバのバージョンとの組合せについて、前記依存関係情報に加えて、前記ファームウェアのパラメータとして設定され得る設定値を表す設定値情報、および、前記設定値が適用された場合の動作エラーの有無を表すエラー情報をさらに含めて前記組合せ情報を記憶し、
前記組合せ情報を参照することにより、前記機能モジュール選択手段によって選択された機能モジュールおよび前記現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値を、前記パラメータとして設定するパラメータ設定手段をさらに備えたことを特徴とする付記１に記載のファームウェア実行装置。
（付記３）
前記組合せ情報記憶手段は、前記機能モジュールのバージョンと前記ドライバのバージョンとの組合せについて、前記依存関係情報、前記設定値情報および前記エラー情報に加えて、前記設定値の優先度を表す優先度情報をさらに含めて前記組合せ情報を記憶し、
前記パラメータ設定手段は、前記組合せ情報を参照することにより、前記機能モジュール選択手段によって選択された機能モジュールおよび前記現行のドライバのバージョンの組合せにおいて動作エラーの無い設定値のうち前記優先度に基づき選択した設定値を、前記パラメータとして設定することを特徴とする付記２に記載のファームウェア実行装置。
（付記４）
前記コンピュータ装置の起動時に、管理ネットワークを介して前記組合せ情報を取得して、前記組合せ情報記憶手段に記憶させる組合せ情報取得手段をさらに備えたことを特徴とする付記１から付記３のいずれか１つに記載のファームウェア実行装置。
（付記５）
前記依存関係判断手段によって、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンとの間に依存関係の不整合がないバージョンの機能モジュールを管理ネットワークより取得して、前記ファームウェア記憶手段に記憶させる機能モジュール取得手段をさらに備えたことを特徴とする付記１から付記４のいずれか１つに記載のファームウェア実行装置。
（付記６）
付記２ならびに付記２に従属する付記３から付記５のいずれか１つに記載のファームウェア実行装置を含むコンピュータ装置において前記ドライバを実行する際に動作エラーを検出した場合、前記ファームウェア実行装置の前記組合せ情報記憶手段に、前記エラー情報を登録するエラー情報登録手段を備えたドライバ実行装置。
（付記７）
付記１から付記５のいずれか１つに記載のファームウェア実行装置を含むコンピュータ装置に実装された前記ドライバを更新するドライバ更新手段と、
前記ファームウェア実行装置における前記ドライババージョン記憶手段に記憶された前記現行のドライバのバージョンを表す情報を、前記ドライバ更新手段による更新後のバージョンを表す情報に更新する情報更新手段と、
を備えたドライバ管理装置。
（付記８）
前記ドライバ更新手段は、前記ファームウェア実行装置における前記組合せ情報記憶手段に記憶された前記組合せ情報を参照することにより、前記現行のファームウェアのバージョンと、前記現行のドライバを更新した場合の更新後のバージョンとの間に依存関係の不整合があれば、前記現行のドライバを更新しないことを特徴とする付記７に記載のドライバ管理装置。
（付記９）
前記情報更新手段は、前記ファームウェア実行装置における前記組合せ情報記憶手段に記憶された組合せ情報をさらに更新することを特徴とする付記７または付記８に記載のドライバ管理装置。
（付記１０）
付記１から付記５のいずれか１つに記載のファームウェア実行装置における前記組合せ情報記憶手段に記憶された組合せ情報を更新する組合せ情報更新手段を備えたファームウェア管理装置。
（付記１１）
付記１から付記５のいずれか１つに記載のファームウェア実行装置を含み、前記ファームウェア実行装置によって実行される前記ファームウェアが実装されたコンピュータ装置。
（付記１２）
前記コンピュータ装置が付記２ならびに付記２に従属する付記３および付記４のいずれか１つに記載のファームウェア実行装置を含む場合、
さらに、
付記６に記載のドライバ実行装置を含むことを特徴とする付記１１に記載のコンピュータ装置。
（付記１３）
さらに、
付記７から付記９のいずれか１つに記載のドライバ管理装置を含むことを特徴とする付記１１または付記１２に記載のコンピュータ装置。
（付記１４）
さらに、
付記１０に記載のファームウェア管理装置を含むことを特徴とする付記１１から付記１３のいずれか１つに記載のコンピュータ装置。
（付記１５）
コンピュータ装置が、
前記コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断し、
前記ファームウェアの更新により前記不整合が解消されると判断した場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動し、
前記不整合がないと判断した場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、
前記ファームウェアの更新により前記不整合が解消されないと判断した場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する方法。
（付記１６）
コンピュータ装置に実装されるファームウェアの各バージョンに含まれる機能モジュールのバージョンと、前記コンピュータ装置の内部または外部に接続されるハードウェアデバイスを制御するドライバのバージョンとの組合せについて、バージョン間の依存関係を表す依存関係情報を含む組合せ情報を記憶する組合せ情報記憶手段と、
前記コンピュータ装置に現在実装されている現行のドライバのバージョンを表す情報を記憶するドライババージョン記憶手段と、
前記コンピュータ装置に現在実装されている現行のファームウェアのバージョンに本来に含まれるバージョンの機能モジュールに加えて、前記ドライバのバージョンとの間に依存関係を有する機能モジュールについて前記ドライバの各バージョンによって利用可能なバージョンの機能モジュールを記憶するファームウェア記憶手段とを用いて、
前記コンピュータ装置の起動時に、前記現行のファームウェアのバージョンと、前記現行のドライバのバージョンとの間に依存関係の不整合があるか否か、および、前記不整合がある場合に前記ファームウェアの更新によって当該不整合が解消されるか否かを、前記組合せ情報を参照することにより判断する依存関係判断ステップと、
前記依存関係判断ステップによって、前記ファームウェアの更新により前記不整合が解消されると判断された場合に、前記不整合を解消するバージョンのファームウェアを取得して前記ファームウェア記憶手段を更新後、前記コンピュータ装置を再起動するファームウェア更新ステップと、
前記依存関係判断ステップによって、前記不整合がないと判断された場合に、前記現行のファームウェアに本来含まれるバージョンの機能モジュールを選択して実行し、前記ファームウェアの更新により前記不整合が解消されないと判断された場合に、前記現行のドライバのバージョンによって利用可能なバージョンの機能モジュールを選択して実行する機能モジュール選択ステップと、
を前記コンピュータ装置に実行させるプログラム。
【符号の説明】
【０２７５】
１    コンピュータ装置
１００、１２０、１３０、１４０    ファームウェア実行装置
１０１、１２１    組合せ情報記憶部
１０２    ドライババージョン記憶部
１０３、１２３    ファームウェア記憶部
１０４    依存関係判断部
１０５    ファームウェア更新部
１０６    機能モジュール選択部
１２７    パラメータ設定部
１３８    組合せ情報取得部
１４９    機能モジュール取得部
２００    ファームウェア管理装置
２０１    組合せ情報更新部
３００    ドライバ実行装置
３０１    エラー情報登録部
４００、４８０    ドライバ管理装置
４０１、４８１    ドライバ更新部
４０２    情報更新部
１００１    ＣＰＵ
１００２    メモリ
１００３    ネットワークインタフェース
１００４    管理プロセッサ
１００５    管理ネットワークインタフェース
１００６    出力装置
１００７    入力装置
１００８    ハードウェアデバイス
【図１】
2018136608.tif 000003
【図２】
2018136608.tif 000004
【図３】
2018136608.tif 000005
【図４】
2018136608.tif 000006
【図５】
2018136608.tif 000007
【図６】
2018136608.tif 000008
【図７】
2018136608.tif 000009
【図８】
2018136608.tif 000010
【図９】
2018136608.tif 000011
【図１０】
2018136608.tif 000012
【図１１】
2018136608.tif 000013
【図１２】
2018136608.tif 000014
【図１３】
2018136608.tif 000015
【図１４】
2018136608.tif 000016
【図１５】
2018136608.tif 000017
【図１６】
2018136608.tif 000018
【図１７】
2018136608.tif 000019
【図１８】
2018136608.tif 000020
【図１９】
2018136608.tif 000021
【図２０】
2018136608.tif 000022
【図２１】
2018136608.tif 000023
【図２２】
2018136608.tif 000024
【図２３】
2018136608.tif 000025