以下、本発明を実施する形態について図面を参照して詳細に説明する。以下の各実施形態に記載されている構成は例示であり、本発明の技術範囲はそれらには限定されない。
まず、本発明の各実施形態に関する説明に先立って、本発明の理解を容易にするため、本発明に関する技術的背景等について説明する。以下の説明においては、BIOSに設定可能な、システムの設定情報を「システム設定情報」と称する。また、情報処理システムのユーザ等により、係るシステム設定情報に設定されるデータ(例えば設定値)等のセットを、「セットアップデータ」と称する。BIOSに設定可能なシステム設定情報は、例えば、システムの設定に関する1以上の設定項目(セットアップ項目)を含む。この場合、セットアップデータは、例えば、各セットアップ項目に設定された設定データのセットである。
コンピュータ等の情報処理システムのユーザは、例えば、BIOSの実行プログラムあるいはBIOS設定用の実行プログラムを実行することにより、当該BIOSに関する各種設定を実行可能である。以下、「プログラム」は、コンピュータ・プログラム等の、任意のソフトウェア・プログラムを表す。また、「実行プログラム」は、情報処理システムを構成する演算処理装置において実行可能な形式に変換されたプログラム(例えば、各種実行バイナリのファイル等)を表す。
ユーザ等により実行されたBIOSに関する設定は、例えば、NVRAM領域にセットアップデータとして保存される。BIOS(BIOSの実行プログラム)は、係るセットアップデータに従って各種処理を実行する。
情報処理システムの起動中にBIOSが使用可能なリソースが限られていることや、情報処理システムの起動を高速化する目的から、システム設定情報に含まれる設定項目ごとに、その設定値(設定データ)のみがNVRAM領域に保存される場合がある。即ち、この場合、NVRAM領域には、システムに関する各種設定データの値のみが、セットアップデータとして保存される。
この場合、例えば、BIOSの実装コードは、システム設定情報に含まれる設定項目ごとに、NVRAMに保存されたセットアップデータの先頭から所定のオフセット量だけ離間した領域のデータを、設定データとして取得するよう実装される。そして、係るBIOSの実装コードをコンパイルすることにより、システム設定情報に含まれる設定項目ごとに、所定のオフセット量に基づいて特定の領域アクセスする実行プログラム(機械解釈可能な機械コード)が生成される。即ち、係るBIOSの実行プログラムは、システム設定情報に含まれる設定項目ごとに、当該設定項目に関する設定データを所定の領域から取得する。
BIOSの変更(アップデート等)により、システム設定情報の構成が変更されると、各設定項目に関するセットアップデータの先頭からのオフセットが変わってしまうことから、互換性が損なわれる。より具体的には、例えば、設定項目の増減、設定項目ごとのデータサイズの変更、あるいは、設定項目の配置の変更等に起因して、各設定項目に関してBIOSの実行プログラムがアクセスする、セットアップデータの先頭からのオフセットが変わってしまう場合がある。この場合、更新された新たなBIOSが、係るBIOSの更新前にNVRAM領域に保存されていたセットアップデータを読み込んでも(アクセスしても)、正しい設定データを取得できない可能性が有る。
上記にしたように、このような変更がある場合には、BIOSを更新する際にNVRAM領域も書き換える必要がある。しかしながら、係る領域の書き換えは、領域の消去(クリア)を伴うため、既存の設定が消えてしまうことから、ユーザ等による再設定(即ち、復旧作業)が必要となる。係る復旧作業は、ユーザ等に対する負担となる。また、係る復旧作業に伴い、人為的なミスが発生する可能性が有る。
そこで、本発明者は、BIOSの更新等により、システム設定情報の構成(例えば、設定項目の増減等)が変更された場合でも、変更前に設定したセットアップデータを復旧可能な技術を着想した。即ち、本発明に係る技術は、例えばVNRAM領域の書き換え(クリア)が行われた場合であっても、ユーザの手動による各設定項目に対する際設定を必要とせず、変更前のセットアップデータを用いて、システムに関する設定を復旧可能である。以下の各実施形態において、本発明に係る技術について詳細に説明する。
なお、以下の各実施形態に記載した情報処理装置は1以上の専用のハードウェア装置、あるいは、コンピュータ等の汎用のハードウェア装置を用いて実現可能である。以下の各実施形態における情報処理装置は単体の装置として実現されてもよく、複数のハードウェア装置により構成されたシステムとして実現されてもよい。情報処理装置を実現可能なハードウェア構成(例えば図11)については後述する。
<第1の実施形態>
(第1の実施形態の概要)
本発明の第1の実施形態について、図面を参照して説明する。まず、本実施形態を実現可能な情報処理装置の概念的な構成について、図1を参照して説明する。
図1に例示するように、本実施形態を実現可能な情報処理装置100は、BIOS実行部(演算処理部)101と、BIOS保持部102と、バックアップデータ保持部103と、を有する。情報処理装置100を構成するこれらの構成要素の間は、任意の通信手段(例えば、通信バス等)により通信可能に接続されている。
BIOS保持部102は、図示しないBIOSの実行プログラムと、システム設定情報に設定された設定データのセットであるセットアップデータとを保持する。
バックアップデータ保持部103は、特定のタイミングにおけるセットアップデータが設定されたシステム設定情報を、バックアップデータとして保持する。
BIOS保持部102、及び、バックアップデータ保持部103は、例えば、それぞれFlash ROM等の記憶デバイスを用いて実現可能である。
BIOS実行部101は、例えば、CPU(Central Processing Unit)等の演算装置であり、BIOS保持部に保持されたBIOSの実行プログラムを読み込んで実行する。
上記のように構成された情報処理装置100は、概略以下のように動作する。なお、以下において説明する動作は、BIOS実行部がBIOSの実行プログラムを実行することにより実現される。
まず、BIOS実行部101は、BIOSの実行プログラムに含まれる情報を用いて、セットアップフォーマット(例えば図3)を生成する。係るセットアップフォーマットは、例えば、BIOSの実行プログラムに含まれるとともに、そのコンパイル時にサイズや配置等が決まるセットアップ構造体に基づいて生成される。
システム設定情報に変更が発生した場合、BIOS実行部101は、BIOS保持部102に保持されたセットアップデータを、上記セットアップフォーマットに反映することにより、バックアップデータを生成する。BIOS実行部101は、係るバックアップデータを、バックアップデータ保持部103に保存する。
BIOS実行部101は、BIOSが更新された場合には、バックアップデータ保持部103に保存されたバックアップデータを用いて、更新されたBIOSの実行プログラムに含まれる情報に基づいて生成されたセットアップフォーマットに、設定データを反映する。この場合、BIOS実行部101は、セットアップフォーマットに含まれる設定項目のうち、バックアップデータに含まれる設定項目と共通する設定項目について、バックアップデータに含まれるデータを反映する。そして、BIOS実行部101は、そのセットアップフォーマットを用いて、BIOS保持部102に設定データを保存する(即ち、BIOS保持部102のセットアップデータを書き換える。)これにより、BIOS実行部101は、BIOS保持部に保持された設定データがクリアされた場合であっても、バックアップデータを用いて変更前の設定データを復旧可能である。
(第1の実施形態の具体的な構成)
次に、本実施形態における情報処理装置のより具体的な構成について、図面を参照して説明する。図2は、本実施形態における情報処理装置200の機能的な構成を例示するブロック図である。図2を参照すると、情報処理装置200は、演算処理部(CPU)201と、BIOS保持部202と、バックアップデータ保持部203と、メモリ部204とを備える。
演算処理部201は、任意のプログラムを実行可能なCPU等の演算処理装置である。演算処理部201は、図1におけるBIOS実行部101と同様としてもよい。係る演算処理部201は、後述するBIOSの実行プログラムを実行可能である。
BIOS保持部202は、例えば、Flash ROM等の不揮発性記憶デバイスにより実現された記憶手段である。係るFlash ROMは、例えば、フラッシュメモリや、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable PROM)等のデバイスを用いて実現可能である。
BIOS保持部202は、ユーザ等により設定されたセットアップデータを保持するBIOSセットアップ保持領域202aを含む。係るBIOSセットアップ保持領域202aは、例えば、Flash ROM内に設けられたNVRAM等により実現可能である。また、BIOS保持部202は、BIOSの実行プログラム(以下、「BIOSプログラム」と称する場合がある)202cが配置された、BIOSプログラム保持領域202bを含む。
BIOSプログラム202cは、BIOSに関する各種処理が実装された実行プログラムであり、セットアップフォーマット202dを含む。係るBIOSプログラム202cは、例えば、セットアップフォーマット202dに相当するデータ構造(例えば構造体等)が組み込まれたBIOSの実装コードをコンパイルすることにより生成可能である。セットアップフォーマットについては後述する。
バックアップデータ保持部203は、BIOSに関するデータ(特には、上記セットアップデータ)をバックアップ可能な記憶領域である。より具体的には、例えば、バックアップデータ保持部203は、特定のタイミングにおけるセットアップデータをバックアップデータとして保持してもよい。バックアップデータ保持部203は、例えばFlash ROM等の不揮発記憶デバイスを用いて実現可能である。なお、図2においては、BIOS保持部202と、バックアップデータ保持部203とは、個別の構成要素として図示されているが、これらは一つの記憶デバイスにおける異なる記憶領域を用いて実現されてもよい。
メモリ部204は、任意の記憶デバイスであり、例えば、揮発性のRAMデバイス等を用いて実現可能である。係るメモリ部204には、例えば、演算処理部201において実行される各種プログラム、あるいは、当該プログラムにおいて参照されるデータ等が展開される。例えば、演算処理部201は、BIOSプログラム202cをメモリ部204に読み込み、その読み込まれた実行プログラムを実行してもよい。
次に、本実施形態におけるセットアップフォーマット202dについて説明する。図3は、本実施形態におけるセットアップフォーマット202dの形式を例示する図である。図3に例示するように、セットアップフォーマット202dは、BIOSプログラムのバージョン情報等が格納されるヘッダ情報301と、エントリ302とから構成される。セットアップフォーマット202dに含まれるエントリ302の数は、システム設定情報に含まれる設定項目の数等に応じて、任意に定められてよい。システム設定情報に含まれる一つの設定項目に対して、一つのエントリ302が割り当てられる。セットアップフォーマットは、システム設定情報に設定可能な全ての設定項目について、それぞれに対応するエントリを含んでもよい。
各エントリ302は、データサイズ303と、セットアップ名304と、設定値305とをから構成される。データサイズ303は、各エントリのデータサイズを表す。より具体的には、係るデータサイズは、設定値305のデータサイズ(例えば、バイト単位等)であってもよい。なお、各エントリのデータサイズは、例えば、所定の固定サイズであってもよい。セットアップ名304は、エントリ302が対応する設定項目を識別可能な識別情報である。例えば、セットアップ名304は、設定項目の名称を表す文字列であってもよい。上記に限定されず、セットアップ名304には、例えば、設定項目を識別可能なID(Identifier)が設定されてもよい。設定値305は、セットアップ名304により表される設定項目に設定される値(設定データ)である。
セットアップフォーマット202dは、例えば、BIOSをコンパイルした際に、システム設定情報の構成順に、データサイズ303と、セットアップ名304とが設定される。なお、この際、設定値305には、デフォルトの値が設定されてもよく、値が設定されなくてもよい。また、セットアップフォーマット202dの全体のサイズを表すために、セットアップフォーマット202dには、最後のエントリとして、データサイズ「0(ゼロ)」のエントリが追加される。これにより、係るデータサイズ「0(ゼロ)」のエントリが、セットアップフォーマット202dに含まれるエントリの終わりであることを示す。
次に、図4乃至図7を参照して本実施形態の動作について説明する。
まず、図4及び図5を参照して、情報処理装置200による、システム設定情報(より具体的には、システム設定情報に設定されるセットアップデータ)のバックアップ処理について説明する。図4は、図3に例示した情報処理装置200が処理を実行する際の機能的な構成を例示するブロック図である。図5は、システム設定情報のバックアップ処理を実行する際の、情報処理システム200の動作を例示するフローチャートである。より具体的には、図5に例示するフローチャートは、演算処理部201により実行されるBIOSプログラム202cの動作を表す。以下、演算処理部201によって実行されるBIOSプログラム202cを、単に「BIOSプログラム」と称する場合がある。
図5に例示するように、まず、ユーザ等により、BIOSに関する設定が変更される(ステップS501)。係る変更は、例えば、ユーザが、BIOSプログラム202cあるいはBIOSの設定用実行プログラム(不図示)を実行することにより、システム設定情報に含まれる特定の設定項目に対する変更等を指示した場合に発生する。なお、係る設定の変更処理は、例えば、BIOSセットアップ保持領域に保持されたセットアップデータを直接変更することにより実行されてもよい。
BIOSの設定(あるいはセットアップデータ)に変更がある場合(ステップS502においてYES)、BIOSプログラムは、自プログラムが保持するセットアップフォーマット(202d)を取得する(ステップS503)。BIOSプログラムは、取得したセットアップフォーマットを、メモリ部204に展開してもよい。なお、ステップS502においてNOの場合(即ち、BIOSの設定に変更が無い場合)、BIOSプログラムは処理を終了してもよい。
次に、BIOSプログラムは、BIOSセットアップ保持領域202aから、セットアップデータを取得する(ステップS504)。即ち、BIOSプログラムは、例えば、BIOSの設定に変更が発生したタイミングにおける、セットアップデータを取得する。
次に、BIOSプログラムは、ステップS503において取得したセットアップフォーマットに、ステップS504において取得したセットアップデータを代入する。より具体的には、BIOSプログラムは、セットアップフォーマットの各設定項目のエントリに含まれる設定値に対して、セットアップデータから取得した各設定項目の値(設定データ)を代入する。
BIOSプログラムは、例えば、システム設定情報の構成順に、セットアップデータから各設定項目に関する設定データを取得し、係る設定データをセットアップフォーマットにおける対応するエントリに代入してもよい。この際、BIOSプログラムは、例えば、セットアップフォーマットにおける各エントリのデータサイズを用いて、セットアップデータに含まれる各エントリに対応する設定データを特定してもよい。例えば、具体例として、BIOSプログラムがN番目(例えばNは自然数)のエントリにアクセスする場合を想定する。この場合、BIOSプログラムは、例えば、セットアップフォーマットにおけるエントリ1(1番目のエントリ)から、エントリN−1(N番目より一つ前のエントリ)までの各エントリのデータサイズ(図3の303)を加算した値を算出する。BIOSプログラムは、上記算出した値に、ヘッダ情報(図3の301)のサイズ等、所定の値を加算してもよい。そして、BIOSプログラムは上記算出した値を用いて、セットアップデータに含まれる、N番目のエントリに対応する設定データのオフセット位置を算出してもよい。なお、Nが1の場合(1番目のエントリの場合)、BIOSプログラムはセットアップデータの先頭(あるいは、先頭から上記所定の値だけ離間した位置)から、係るオフセット位置を算出してもよい。
なお、上記に限定されず、BIOSプログラムは、他の任意の方法により、セットアップフォーマットに対して、セットアップデータの値を代入してもよい。例えば、BIOSプログラムは、ステップS503において取得したセットアップフォーマットを展開したメモリ部204の特定領域に、ステップS504において取得したセットアップデータに含まれるデータを読み込んでもよい。セットアップフォーマットが構造体等の所定のデータ構造により実現される場合を想定する。係るデータ構造のサイズは、例えば、コンパイル時に定まる場合がある。セットアップデータと、セットアップフォーマットとのデータ構造が一致している場合、BIOSプログラムは、セットアップフォーマットを展開したメモリ領域にセットアップデータを読み込むことにより、セットアップフォーマットにセットアップデータを代入可能である。
また、BIOSプログラムは、当該BIOSプログラムのバージョン情報等、ヘッダ情報(301)をセットアップフォーマットに設定してもよい。これにより、BIOSプログラムは、バックアップデータ203aの元になるセットアップ情報204aを生成する(ステップS505)。
係るセットアップ情報204aは、BIOSセットアップ保持領域202aに保持されたセットアップデータ(設定データ)を、セットアップフォーマットに反映(代入)することにより生成されたデータである。より具体的には、セットアップ情報204aは、例えば、特定のタイミングにおいてBIOSセットアップ保持領域202aに保持されていたセットアップデータ(設定データ)がセットアップフォーマットに反映されたデータである。セットアップ情報204aは、図3に例示するセットアップフォーマットに具体的な値が設定されたデータであり、エントリごとに、データサイズ303、セットアップ名304、設定値305を含む。
次に、BIOSプログラムは、バックアップデータ保持部203に、セットアップ情報204aをバックアップデータ203aとして保存する(ステップS506)。上記したように、BIOSプログラムは、BIOSの設定に変更が生じたタイミングにおいて、BIOSセットアップ保持領域202aから取得したセットアップデータをセットアップフォーマット202dに代入し、セットアップ情報204aを生成する。即ち、BIOSの設定に変更が生じたタイミングにおけるセットアップデータを含むセットアップ情報204aが、バックアップデータ203aとして、バックアップデータ保持部203に保存される。
これにより、BIOSプログラムは、特定のタイミング(例えば、BIOSの設定が変更された場合)における、セットアップデータをバックアップすることが可能である。また、係るバックアップデータ203aには、図3に例示するようなセットアップフォーマットを構成するデータが含まれることから、設定項目を識別可能な情報(例えば、セットアップ名)が含まれる。これより、係るバックアップデータから、個別のエントリ(設定項目)に関する設定値(設定データ)を抽出することが可能である。なお、係るバックアップデータ203aは、バックアップを取得したタイミングに応じて複数保存されてもよく、最新のバックアップデータのみが保存されてもよい。
なお、上記セットアップデータのバックアップは、BIOSの設定に変更が生じたタイミングに限定されず、任意のタイミングにおいて実行されてもよい。係るバックアップが実行されるタイミングは、例えば、情報処理装置200のユーザ等により、適宜設定されてよい。即ち、係るバックアップは、例えば、任意のユーザ操作等に基づいて実行されてもよく、特定のスケジュールに沿って実行されてもよい。
次に、図4、図6、及び、図7を参照して、セットアップデータをリストア(復旧)する動作について説明する。図6及び図7は、情報処理装置200による、セットアップデータのリストア処理の過程を例示するフローチャートである。より具体的には、図6及び図7に例示するフローチャートは、演算処理部201により実行されるBIOSプログラム202cの動作を表す。
なお、以下の説明においては、BIOS(BIOSプログラムを含む)が更新されたことを想定し、係るBIOSの更新に伴い、システム設定情報の構成が変更されたことを想定する。即ち、更新後のBIOSプログラムが、BIOSプログラム保持領域202bに保存され、情報処理装置200が起動される際、係る更新後のBIOSプログラムが実行される。また、BIOSの更新に伴い、BIOSセットアップ保持領域202aに保持されたセットアップデータが更新される。この場合、BIOSセットアップ保持領域202aのセットアップデータはクリアされてもよく、規定値(デフォルト値)が設定されてもよい。なお、更新後の新たなシステム設定情報に対するセットアップデータと、更新前のセットアップデータとでは、各設定項目に対するデータの配置(オフセット等)が異なる。以下、情報処理装置200の動作について説明する。
まず、(更新された)BIOSプログラムは、情報処理装置200の起動(ブート)中に、バックアップデータ保持部203から、バックアップデータ203aを取得する(ステップS601)。
BIOSプログラムは、バックアップデータ203aのヘッダ情報(図3の301)を参照する。そして、BIOSプログラムは、バックアップデータ203aに登録されたBIOSバージョンと、実行されている当該プログラム(更新されたBIOSプログラム)自体のバージョンとが一致するか確認する(ステップS602)。
係る比較の結果、これらのBIOSのバージョンが一致しない場合(ステップS602においてNO)、BIOSプログラムは、セットアップ復元処理を実行する(ステップS603)。なお、ステップS602においてYES(バージョンが一致する場合)には、BIOSプログラムは、処理を終了してもよく、必要に応じて他の任意の処理を続行してもよい。
次に、セットアップ復元処理(ステップS603)について、図7を参照して説明する。
まず、BIOSプログラムは、自プログラムが保持するセットアップフォーマット202dを取得する(ステップS701)。
次に、BIOSプログラムは、BIOSセットアップ保持領域202aから、セットアップデータを取得する(ステップS702)。上記したように、BIOS更新に伴い、BIOSセットアップ保持領域202aがクリアされた場合、取得したセットアップデータには、規定値(デフォルト値)が設定されていてもよい。
次に、BIOSプログラムは、ステップS701において取得したセットアップフォーマットに、ステップS702において取得したセットアップデータを代入し、セットアップ情報0204aを生成する(ステップS703)。
次に、BIOSプログラムは、生成したセットアップ情報204aに含まれる全てのエントリについて、バックアップデータ203aを用いて、設定値を復旧する(ステップS704及び、ステップS705a乃至ステップS705bの繰り返し処理)。
具体的には、BIOSプログラムは、まず、カウンタNをN=1に初期化する(ステップS704)。
次に、BIOSプログラムは、セットアップ情報204aにおけるN番目のエントリのデータサイズを確認する(ステップS706)。
セットアップ情報204aにおけるN番目のエントリのデータサイズが、サイズ「0(ゼロ)」ではない場合(ステップS706においてNO)、BIOSプログラムは、以下の処理を実行する。まず、BIOSプログラムは、バックアップデータ保持部203に保存されたバックアップデータ203aに、セットアップ情報204aのN番目のエントリと共通するエントリが存在するか否かを確認する(ステップS707)。より具体的には、BIOSプログラムは、バックアップデータ203aに、セットアップ情報204aのN番目のエントリと共通するセットアップ名(図3の304)を有するエントリが存在するか否かを確認してもよい。
係る比較の結果、共通するエントリが存在する場合(ステップS708においてYES)、バックアップデータ203aに設定された設定値(設定データ)を用いて、セットアップ情報204aのエントリの設定値を更新する(ステップS709)。
次に、BIOSプログラムは、カウンタNを更新(例えばインクリメント)し(ステップS710)、セットアップ情報204aに含まれる次のエントリについて処理を続行する(ステップS705b)。
なお、ステップS708においてNO場合(即ち、共通するエントリが存在しない場合)、BIOSプログラムは、ステップS710から処理を続行する。
ステップS706においてデータサイズが「0」のエントリ(最後のエントリ)を検出した場合(ステップS706においてYES)、BIOSプログラムは、セットアップ情報204aに設定された設定値(設定データ)を、BIOSセットアップ保持領域202aに反映する(ステップS711)。即ち、BIOSプログラムは、セットアップ情報204aの全てのエントリについて、バックアップデータからの復元処理を完了した場合、復元されたセットアップ情報204aを用いて、セットアップデータを更新する。より具体的には、BIOSプログラムは、セットアップ情報204aに設定された設定データを用いて、BIOSセットアップ保持領域202aにおけるセットアップデータを更新する。
次に、BIOSプログラムは、セットアップ情報204aをバックアップデータ保持部203に、バックアップデータ203aとして保存する。
上記動作により、BIOSプログラムは、セットアップデータをリストア(復旧)する処理を完了する。
上記のように構成された本実施形態における情報処理装置200は、BIOSが更新された際に、バックアップデータ保持部203に保存されたバックアップデータ203aを用いて、セットアップデータを復旧可能である。
より具体的には、情報処理装置200は、例えばセットアップフォーマットを含むBIOSプログラムを実行し、特定のタイミングにおけるセットアップデータが反映されたセットアップ情報204aを、バックアップデータ203aとして保存可能である。即ち、特定のタイミングにおいてBIOSの設定情報(セットアップデータ)として、設定項目を特定可能な情報と、その設定項目のデータサイズを表す情報と、その設定項目の具体的な設定値とが、バックアップデータ203aに保存される。
BIOSの更新等に伴いシステム設定情報の構成が変更されると、変更後のBIOSプログラムが保持するセットアップフォーマットもシステム設定情報の構成に合せて変更される可能性が有る。より具体的には、例えば、係るセットアップフォーマットに含まれるエントリの数がシステム設定情報の構成に合せて増減する可能性が有る。これに対して、本実施形態における情報処理装置200は、更新されたセットアップフォーマットと、バックアップデータ203aとにおいて共通するエントリを検出する。そして、情報処理装置200は、当該検出したエントリの設定値(設定データ)を、バックアップデータ203aから、更新されたセットアップフォーマットに反映する。
これにより、本実施形態における情報処理装置200は、変更前の特定のタイミングにおいてバックアップデータに設定された設定値を、変更後のタイミングにおいてBIOSに対するセットアップデータに対して復旧可能である。
以上より、本実施形態における情報処理装置200によれば、システムに関する設定情報の構成が変更されても、変更前に設定された設定情報を復旧可能である。これにより、情報処理装置200のユーザ等が、BIOSに関する設定を復旧する負担が軽減される。
<第1の実施形態の変形例>
次に、上記第1の実施形態の変形例について図面を参照して説明する。本変形例においては、上記第1の実施形態と同様の構成については、同様の参照符号を付すことにより、詳細な説明を省略する。
図8に例示するように、本変形例における情報処理装置800は、BMC801(BMC:Baseboard Management Controller)を備える。情報処理装置800においては、BMC801のみが上記第1の実施形態と相違し、その他の構成は上記第1の実施形態と同様である。以下、係る相違について説明する。
上記第1の実施形態に係る情報処理装置200においては、BIOSに関する設定情報(セットアップデータ)をバックアップする記憶領域として、バックアップデータ保持部203が用いられる。係るバックアップデータ保持部203は、他の構成要素と通信バス等を介して接続されたFlash ROM等により実現される。また、係るバックアップデータ保持部203に対するアクセス(バックアップデータの保存及び参照等)は、例えば、BIOSプログラムにより制御される。
バックアップデータを保持する領域は、上記に限らず、BIOSプログラムからデータの保存及び参照できる領域があれば良い。そこで、本変形例における情報処理装置800においては、一例として、BIOSプログラムはBMC801を介してバックアップデータを保存及び参照を実行する。BMC801は、例えば、情報処理装置800を構成するベースボード(主基板)に実装された管理装置であり、情報処理装置800に関する各種監視処理を実行可能である。本変形例におけるBMC801は、上記第1の実施形態におけるバックアップデータ保持部203に相当する記憶領域(図8における801a)を管理する。BMC801は、例えば、特定の通信インタフェース及びプロトコル(例えば、IPMI(Intelligent Platform Management Interface))を介して他の構成要素と通信可能である。
本変形例においては、BIOSプログラムは、例えばIPMI通信を介して、BMC133が管理するバックアップデータ保持部801aにバックアップデータ801bを保存し、また、保存されたバックアップデータ801bを参照する。
なお、上記に限定されず、バックアップデータを保存する領域はBMC801以外の任意の記憶領域に設けられてもよい。
上記のように構成された本変形例における情報処理装置800は、上記第1の実施形態における情報処理装置200と同様の機能を実現可能である。よって、本変形例における情報処理装置800は、上記第1の実施形態と同様の効果を奏する。
<第2の実施形態>
次に、本発明の第2の実施形態について図9を参照して説明する。図9は、本実施形態における情報処理装置900の機能的な構成を例示するブロック図である。
図9に例示するように、本実施形態における情報処理装置900は、BIOS処理部901と、第1の記憶部902と、第2の記憶部903と、を有する。情報処理装置900を構成するこれらの構成要素の間は、任意の通信手段を用いて通信可能に接続されていてもよい。以下、それぞれの構成要素について説明する。
第1の記憶部902は、システムの設定に関する情報を表すシステム設定情報に含まれる設定項目に設定される設定データを保持する。第1の記憶部902は、システム設定情報に含まれる各設定項目に設定せれた設定データのセットを保存してもよい。係る設定データは、例えば、上記第1の実施形態におけるセットアップデータ(あるいは、セットアップデータを構成する設定データ)と同様としてもよい。なお、第1の記憶部902は、例えば、上記第1の実施形態におけるBIOSセットアップ保持領域202aと同様としてもよい。第1の記憶部902は、例えば、Flash ROM等の任意の記憶デバイスを用いて実現可能である。
第2の記憶部903は、特定の上記設定データが反映された設定項目を含む、システム設定情報である第2の設定情報を保持する。係る第2の設定情報は、例えば、上記第1の実施形態におけるバックアップデータ203aと同等としてもよい。また、係る第2の記憶部903は、例えば、上記第1の実施形態におけるバックアップデータ保持部203と同様としてもよい。第2の記憶部903は、例えば、Flash ROM等の任意の記憶デバイスを用いて実現可能である。
なお、上記説明した本実施形態における第1の記憶部902及び第2の記憶部903は、それぞれ異なる記憶デバイス(例えばFlash ROM等)を用いて実現されてもよい。また、第1の記憶部902及び第2の記憶部903は、図10に例示するように一つの記憶デバイス(図10の1001)における異なる記憶領域を用いて実現されてもよい。
BIOS処理部901は、上記システム設定情報である第1の設定情報を含み、自装置(情報処理装置900)におけるBIOSに関する処理を実行する。係る第1の設定情報は、例えば、上記第1の実施形態におけるセットアップフォーマットと同様としてもよい。なお、係るBIOSは情報処理装置900における任意の記憶手段を用いて記憶されてよい。係る記憶手段は、例えば、第1の記憶部であってもよい。なお、上記に限定されず、BIOSは、例えば、情報処理装置900の外部から、情報処理装置900を起動するタイミングにおいて任意の通信ネットワーク等を介して提供されてもよい。
BIOS処理部901は、システムの設定が変更された場合、第1の記憶部から読み出した設定データを、BIOSに含まれる第1の設定情報に反映することにより、上記第2の設定情報を生成する。そして、BIOS処理部901は、生成した第2の設定情報を、第2の記憶部に保存する。
また、BIOS処理部901は、上記設定データの更新が必要な場合、上記第2の記憶部から読み出した第2の設定情報を読み出す。そして、BIOS処理部901は、第1の設定情報に含まれる設定項目のうち、読み出した第の2設定情報に含まれる設定項目と共通する設定項目を、当該第2の設定情報に含まれる設定項目に設定されたデータにより更新する。BIOS処理部901は、当該更新した第1の設定情報に基づいて第1の記憶部における設定データを更新する。
係るBIOS処理部901は、例えば、任意の演算処理装置(CPU)を用いてBIOSに関する処理を実行可能なプログラム(コンピュータ・プログラム等のソフトウェア・プログラム)を実行することにより実現可能である。係るBIOS処理部901は、例えば、上記第1の実施形態における演算処理部201と、BIOSプログラム202cとを用いて実現可能である。
上記のように構成された本実施形態における情報処理装置900は、システムの設定が変更された際に、当該システムの設定に関する設定データを、第2の記憶部にバックアップ可能である。また、第1の記憶部に保存された設定データの更新が必要である場合、第2の記憶物にバックアップされた設定データ(第2の設定情報)と、第1の設定情報とを用いて、第1の記憶部に保存された設定データを更新(復旧)可能である。以上より、本実施形態における情報処理装置900によれば、システムに関する設定情報の構成が変更されても、変更前に設定された設定情報を復旧可能である。これにより、情報処理装置900のユーザ等が、BIOSに関する設定を復旧する負担が軽減される。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態を実現可能なハードウェア構成について説明する。
以下の説明において、上記各実施形態において説明した情報処理装置(100、200、800、900)をまとめて、単に「情報処理装置」と称する。また情報処理装置の各構成要素を、単に「情報処理装置の構成要素」と称する。
上記各実施形態において説明した情報処理装置は、1つ又は複数の専用のハードウェア装置により構成されてもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路あるいは記憶デバイス等)として実現されてもよい。
例えば、情報処理装置を専用のハードウェアにより実現する場合、係る情報処理装置の構成要素は、それぞれの機能を提供可能な集積回路をSoC(System on a Chip)等により実装されてもよい。この場合、例えば、情報処理装置の構成要素が保持するデータは、SoCとして統合されたRAM(Random Access Memory)領域やフラッシュメモリ領域に記憶されてもよい。また、この場合、情報処理装置の各構成要素を接続する通信回線としては、周知の通信バスを採用してもよい。また、各構成要素を接続する通信回線はバス接続に限らず、それぞれの構成要素間をピアツーピアで接続してもよい。情報処理装置を複数のハードウェア装置により構成する場合、それぞれのハードウェア装置の間は、任意の通信手段(有線、無線、またはそれらの組み合わせ)により通信可能に接続されていてもよい。
また、上述した情報処理装置は、図11に例示するような汎用のハードウェアと、係るハードウェアによって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、情報処理装置は、任意の数のハードウェア装置及びソフトウェア・プログラムにより構成されてもよい。
図11における演算装置1101は、汎用のCPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置1101は、例えば後述する不揮発性記憶装置1103に記憶された各種ソフトウェア・プログラムを記憶装置1102に読み出し、係るソフトウェア・プログラムに従って処理を実行してもよい。例えば、上記各実施形態における情報処理装置の構成要素は、演算装置1101により実行されるソフトウェア・プログラムとして実現可能である。例えば、上記各実施形態におけるBIOS実行部101、演算処理部201、BIOS処理部901等は、演算装置1101を用いて実現可能である。
記憶装置1102は、演算装置1101から参照可能な、RAM等のメモリ装置であり、ソフトウェア・プログラムや各種データ等を記憶する。なお、記憶装置1102は、揮発性のメモリ装置であってもよい。例えば、上記各実施形態におけるメモリ部204は、記憶装置1102を用いて実現可能である。
不揮発性記憶装置1103は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置1103は、各種ソフトウェア・プログラムやデータ等を記憶可能である。例えば、上記各実施形態におけるBIOS保持部(102、202)、バックアップデータ保持部(103、203)、第1の記憶部902、第2の記憶部903等は、不揮発性記憶装置1103を用いて実現可能である。
ネットワークインタフェース1106は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。
ドライブ装置1104は、例えば、後述する記録媒体1105に対するデータの読み込みや書き込みを処理する装置である。
記録媒体1105は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な任意の記録媒体である。
入出力インタフェース1107は、外部装置との間の入出力を制御する装置である。
なお、上記各実施形態における情報処理装置は、ネットワークインタフェース1106、ドライブ装置1104、及び、入出力インタフェース1107を備えてもよく、備えなくともよい。
上述した各実施形態を例に説明した本発明における情報処理装置は、例えば、図11に例示するハードウェア装置に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。より具体的には、例えば、係る装置に対して供給したソフトウェア・プログラムを、演算装置1101が実行することによって、本発明が実現されてもよい。この場合、係るハードウェア装置で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。例えば、係るソフトウェア・プログラムは、上記各実施形態におけるBIOSプログラム202cであってもよい。
更に、上記ソフトウェア・プログラムは記録媒体1105に記録されてもよい。この場合、上記ソフトウェア・プログラムは、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置1104を通じて不揮発性記憶装置1103に格納されるよう構成されてもよい。
なお、上記の場合において、上記情報処理装置への各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具を利用して当該装置内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本発明は、係るソフトウェア・プログラムを構成するコード、あるいは係るコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、係る記録媒体は、ハードウェア装置と独立した媒体に限らず、LANやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記憶媒体を含む。
また、上述した情報処理装置は、図11に例示するハードウェア装置を仮想化した仮想化環境と、当該仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図11に例示するハードウェア装置の構成要素は、当該仮想化環境における仮想デバイスとして提供される。なお、この場合も、図11に例示するハードウェア装置を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。