(58)【調査した分野】(Int.Cl.,DB名)
前記格納部を第1の格納部とする場合、前記入力部は、入力した前記変更情報を格納する第2の格納部を備えることを特徴とする請求項1乃至2の何れか一項記載の情報処理装置。
【背景技術】
【0002】
BIOS(Basic Input Output System)は、コンピュータ等の情報処理装置のマザーボード上に搭載されているプログラムである。
【0003】
BIOSは、BIOS設定情報を参照して、周辺機器やCPU(Central Processing Unit)のコア数、メモリの動作モードなどを決定し、OS(Operating System)を起動するために必要な処理を実施する。
【0004】
ユーザがBIOS設定情報を更新する方法は、2つある。1つめの方法は、BIOSセットアップメニューを利用して更新する方法である。もう1つの方法は、その情報処理装置とは別の情報処理装置において動作する外部ツールにより更新する方法である。どちらの手段においても、更新したBIOS設定情報を反映させるために情報処理装置を再起動(以下では、リブート(Reboot)ともいう。また、単に「起動」ともいう。)する必要がある。
【0005】
これに加えて、後者の外部ツールにより更新する方法では、情報処理装置をさらにもう1回リブートしなければならない。これは、外部ツールにより更新した値を、BIOSセットアップメニューに同期するタイミングによる制約のためである。外部ツールにより更新したBIOS設定情報をBIOSが使うために、BIOSは、メモリ初期化処理を実行する前に、BIOS設定情報について同期処理を行う必要がある。しかし、BIOSは、メモリ初期化処理を行う前のフェーズでは、CPUのキャッシュをメモリ代わりにして動作している。そのため、BIOSは、BIOS設定情報が格納されている大量のデータをメモリ上にロードすることができない。よって、メモリ初期化処理を行うことによりメモリを多く確保することが可能になってから、BIOSは、BIOS設定情報について同期処理を実行する。この同期処理によりBIOS設定情報を変更した場合、変更後の設定情報を参照して情報処理装置をリブートする必要がある。そのため、外部ツールによりBIOS設定情報を更新する場合は、1回多くリブートが発生する。
【0006】
小規模な構成の情報処理装置では、リブートが1回増えることは、起動時間において、さほど問題とならない。しかし、大規模な構成の情報処理装置では、起動時間の大半をメモリ初期化処理が占めており、メモリ初期化後に再度リブートすることで、全体の起動時間は、通常の約2倍に長くなる。このことは、この情報処理装置を含むシステムの保守や運用作業において妨げとなる。
【0007】
ここで、本願出願に先だって存在する関連技術としては、例えば以下の特許文献がある。
【0008】
特許文献1は、BIOSのモジュール構成に影響を与えず、かつ、非常に短時間でBIOSのパラメータを変更する情報処理装置を開示している。
【0009】
特許文献2は、BIOS設定情報の更新を、都合のよいタイミングで、その時点のBIOSの設定を参照しながら行うことができ、かつ、BIOS設定更新対象の情報処理装置のダウンタイムの増大を抑制する情報処理装置を開示している。
【発明を実施するための形態】
【0020】
次に、本発明を実施する形態について図面を参照して詳細に説明する。
【0021】
<第1の実施形態>
図1は、本発明の第1の実施形態に係る情報処理装置の構成を示すブロック図である。
【0022】
本実施形態に係る情報処理装置1は、入力部2と、変更部3と、格納部4とを有する。
【0023】
情報処理装置1は、格納部4に格納されたBIOS設定情報に基づいて起動する。
【0024】
入力部2は、情報処理装置1を起動するときにBIOSが参照するBIOS設定情報に対する変更情報を入力する。
【0025】
変更部3は、情報処理装置1をリブートするときに、入力部2により入力された変更情報と、格納部4に格納されたBIOS設定情報とを参照してメモリの初期化を行う。そして、その初期化後に、変更部3は、変更情報を基に、格納部4に格納されたBIOS設定情報を変更する。
【0026】
以上、説明した第1の実施形態には、BIOS設定情報を変更する場合に情報処理装置の起動にかかる時間を短縮することができるという効果がある。
【0027】
その理由は、本実施形態に係る情報処理装置1は、リブートされたときに、格納部4に格納されたBIOS設定情報と、変更情報とを参照してメモリの初期化を行うからである。したがって、格納部4に格納されたBIOS設定情報を、変更情報に基いて変更した後に、再度リブートを行う必要がない。
【0028】
<第2の実施形態>
次に上述した第1の実施形態に係る情報処理装置を基本とする第2の実施形態について説明する。
図2は、本発明の第2の実施形態に係る情報処理装置の構成を示すブロック図である。ただし、
図2に示す構成は、一例であって、本発明は、
図2に示す情報処理装置に限定されない。例えば、
図2では、CPU11と、BMC21と、記憶部12と、記憶部22と、外部ツール31(管理PCを含む)は、説明の便宜上、1つずつ存在することとしているが、1つとは限らない。また、情報処理装置が、さらに別の部品を含んでいても問題ない。
【0029】
本実施形態に係る情報処理装置10は、CPU11と、記憶部12と、BMC(ベースボード・マネージメント・コントローラ、Baseboard Management Controller)21と、記憶部22とを含む。ここで、CPU11は、
図1に示す変更部3に含まれてもよい。また、記憶部12は、格納部4に含まれてもよい。BMC21と記憶部22は、入力部2に含まれてもよい。
【0030】
CPU11とBMC21は、データを通信することが可能なインタフェースを持っている。CPU11とBMC21は、例えば、IPMI(Intelligent Platform Management Interface)コマンドを用いることにより、通信する。
【0031】
BIOS111は、CPU11で動作するファームウェアである。記憶部12は、BIOS111が使用する不揮発性メモリである。そして、記憶部12は、BIOS111を起動するために必要な設定値であるBIOS設定情報13を格納している。BIOS111は、BIOS設定情報13を基に各種設定を行い、起動する。
【0032】
BMCFW(BMC Firm−Ware)211は、BMC21で動作するファームウェアである。記憶部22は、BMCFW211が使用する不揮発性メモリである。そして、記憶部22は、BIOS設定情報13に含まれる情報のうち、例えば、外部ツールにより変更することが可能なBIOS設定情報23を格納している。
【0033】
BMC21は、外部ツール31とデータを通信することが可能なインタフェースを持っている。BMC21と外部ツール31は、例えば、IPMIコマンドを用いることにより、通信する。
【0034】
外部ツール31は、例えば管理PC(Personal Computer)において実行されるソフトウェアである。ユーザは、外部ツール31を使用して、管理PCに格納されているBIOS設定情報32を変更することができる。
【0035】
ユーザが外部ツール31により変更したBIOS設定情報32は、BMCFW211によってBIOS設定情報23に格納される。BIOS設定情報32をBIOS設定情報23にコピーする手段の1つとしてIPMIコマンドがある。
【0036】
BIOS111は、起動するときに、外部ツール31による変更内容を含むBIOS設定情報23を取得し、その内容を参照して、メモリの初期化を行う。それから、BIOS111は、BIOS設定情報13とBIOS設定情報23の同期処理を行う。これにより、BIOS設定情報13に、BIOS設定情報23の値が反映される。すなわち、BIOS設定情報13は、外部ツール31により変更したBIOS設定情報32を反映した値になる。
【0037】
ここで、
図3と
図4を参照して、BIOS設定情報13と、BIOS設定情報23と、テンポラリテーブルについて説明する。
図3は、本発明の第2の実施形態に係るBIOS設定情報23を説明する図である。
図4は、本発明の第2の実施形態に係るBIOS設定情報13と、テンポラリテーブルを説明する図である。
【0038】
図4に示すBIOS設定情報51は、BIOS設定情報13の一例である。BIOS設定情報51は、1つ以上のジャンル(分類1〜L)で構成されている。ここで、分類1、2、Lの設定情報は、各々、BIOS設定情報131、132、133に対応する。BIOS設定情報131、132、133は、各々、BIOS設定項目(設定項目名と設定値が対になったもの)を含んでいる。BIOS111は、起動するときに、これらのBIOS設定項目(11、・・・、18、21、・・・25、P1・・・PL)を参照する。
【0039】
次に、BIOS設定情報51を例に、BIOS設定項目の値の取得方法を説明する。例えば、BIOS設定情報51から分類LのBIOS設定項目P1を取得したいとする。このとき、BIOS111は、初めに、BIOS設定情報51の先頭であるBIOS設定情報131から参照したい項目の分類をサーチする。サーチした結果、BIOS111は、BIOS設定情報133を見つける。それから、BIOS111は、BIOS設定項目P1をその分類(BIOS設定情報133)内でサーチする。そして、BIOS111は、BIOS設定項目P1を見つけることができる。BIOS設定情報51は、BIOS111によって、このようにサーチされる。
【0040】
次に、BIOS設定情報23について説明する。
図3に示すように、BIOS設定情報23は、BIOS設定情報230と、BIOS設定情報231と、BIOS設定情報232とを含む。BIOS設定情報230は、外部ツールによる変更有無を表す変更フラグである。BIOS設定情報231は、分類1の設定項目である。BIOS設定情報232は、分類2の設定項目である。
【0041】
BIOS設定情報230は、BIOS設定情報23に変更があれば「1」、変更がなければ「0」に設定されている。BIOS設定情報230は、外部ツール31によりBIOS設定情報23が更新されたときに、BMCFW211によって「1」に設定されるフラグである。BIOS111は、BIOS設定情報13(51)とBIOS設定情報23の同期処理が終了したら、BIOS設定情報230に「0」を設定するように、BMCFW211に依頼する。
【0042】
BIOS設定情報231と、BIOS設定情報232とは、それぞれ異なるジャンルのBIOS設定情報を表している。BIOS設定情報231(分類1)のBIOS設定項目11、15、16は、BIOS設定情報131のサブセットである。同様に、BIOS設定情報232(分類2)のBIOS設定項目21、22は、BIOS設定情報132のサブセットである。
【0043】
BIOS設定情報231のBIOS設定項目11、15、16と、BIOS設定情報232のBIOS設定項目21、22は、BIOS設定情報13(51)の項目のうち外部ツール31により値を変更可能な項目である。そして、BIOS設定情報231のBIOS設定項目11、15、16は、BIOS設定情報131のBIOS設定情報11、15、16と同期する。同様に、BIOS設定情報232のBIOS設定項目21、22は、BIOS設定情報132のBIOS設定項目21、22と同期する。
【0044】
図4に示すBIOS設定情報61は、テンポラリテーブルの一例である。テンポラリテーブルは、BIOS設定情報13(51)、BIOS設定情報23と同様に、1つ以上の分類(ここでは分類1’、2’)で構成されている。そして、分類1’(BIOS設定情報611)は、BIOS設定情報13(51)のBIOS設定情報131と同じBIOS設定項目に対応する設定値を含む。分類2’(BIOS設定情報612)は、BIOS設定情報13(51)のBIOS設定情報132と同じBIOS設定項目に対応する設定値を含む。
【0045】
次に、処理の流れについてフローチャートを用いて説明する。
【0046】
図5は、本発明の第2の実施形態に係る情報処理装置におけるBIOSを起動する処理を示すフローチャートである。
【0047】
情報処理装置がリブートするか、または情報処理装置に電源が入り、BIOS111が起動すると、BIOS111は、ステップB1を実行する。
【0048】
ステップB1:
BIOS111は、BIOS設定情報のテンポラリテーブルを作成する(ステップB1)。テンポラリテーブルは、外部ツール31により変更があったBIOS設定情報23に含まれる項目を、BIOS設定情報13に含まれる項目とマージしたテーブルである。つまり、テンポラリテーブルの値は、変更後の設定情報で立ち上げが完了したときのBIOS設定情報13に含まれる項目の値と同じである。テンポラリテーブルは、BIOS設定情報23で変更があったものと、それに関連する項目のみで構成される。そのため、少量のメモリがあればテンポラリテーブルを作成することができる。テンポラリテーブルを作成する手順は、後で説明する。
【0049】
ステップB2:
次に、BIOS111は、メモリの初期化を行う。BIOS111は、情報処理装置内のメモリを使用できるようにBIOS設定情報を用いて設定する。一般的な情報処理装置では、BIOS設定情報13を参照して設定する。しかし、本発明の第2の実施形態では、テンポラリテーブルを参照して設定を行う。
【0050】
ステップB3:
それから、BIOS111は、BIOS設定情報13とBIOS設定情報23の同期処理を行う。この場合、最初に、BIOS111は、BIOS設定情報23(
図3)を参照して、BIOS設定情報23に変更があったか否かを確認する。
【0051】
BIOS設定情報23に変更がない場合(変更フラグが”0”)、BIOS111は、BIOS設定情報13の値をBIOS設定情報23の値にマージする。このときのテンポラリテーブルには、BIOS設定情報13(つまり、BIOS設定情報131、BIOS設定情報132)の値が格納されている。これ以降の立ち上げ中の各種設定は、BIOS設定情報13で行っているため、リブートせずに立ち上げを完了する。
【0052】
BIOS設定情報23に変更がある場合(変更フラグが”1”)、BIOS111は、BIOS設定情報23とBIOS設定情報13とを基に作成したテンポラリテーブルを参照して、メモリの初期化を実施済みである。すなわち、テンポラリテーブル作成以降の各種設定は、同期処理後と同じ値であるテンポラリテーブルを用いて行っているため、リブートせずに立ち上げを完了する。
【0053】
よって、ステップB3の同期処理において、リブートする必要がなくなる。
【0054】
BIOS111は、同期処理を終了後(ステップB3終了後)、各種初期化の続きを行い、立ち上げを完了する。
【0055】
次に、ステップB1におけるテンポラリテーブルを作成する処理について、
図6を用いて説明する。
図6は、本発明の第2の実施形態に係る情報処理装置におけるテンポラリテーブルを作成する処理を示すフローチャートである。以下の説明において使用するメモリは、例えば、記憶部12とする。
【0056】
ステップC1:
BIOS111は、現在のBIOS設定値を取得するために、BIOS設定情報13にアクセスする。
【0057】
ステップC2:
次に、BIOS111は、BIOS設定情報13を取得できたか否かを確認する。
【0058】
ステップC3:
ステップC2において、BIOS設定情報13を取得できた場合は、BIOS111は、ステップC1で取得したBIOS設定情報13のBIOS設定情報131、132の値をメモリ上に保持する。
【0059】
ステップC4:
ステップC2において、BIOS設定情報13を取得できなかった場合は、BIOS111は、BIOS111が保持するBIOS設定情報13のBIOS設定情報131、132のデフォルト値を、BIOS設定情報13のBIOS設定情報131、132の値としてメモリ上に保持する。
【0060】
ステップC5:
次に、BIOS111は、BIOS設定情報23に変更があったか否かを確認する。BIOS設定情報23は、外部ツール31により変更されたBIOS設定情報32と同期している。そのため、BIOS設定情報23に更新があったか否かを確認することにより、BIOS111は、外部ツール31によりBIOS設定情報32に変更があったか否かを知ることができる。BIOS設定情報23に変更があったか否かは、
図3に示すBIOS設定情報23の中にあるBIOS設定情報230を参照することにより確認する。BIOS設定情報230は、BIOS設定情報23に変更があれば「1」、変更がなければ「0」に設定されている。BIOS設定情報230は、BIOS設定情報23が更新されたときに、BMCFW211によって「1」に設定される。ステップC5でBIOS設定情報23に変更があった場合は、ステップC6を実施する。BIOS設定情報23に変更がない場合は、BIOS111は、ステップC8を実施する。
【0061】
ステップC6:
BIOS111は、BIOS設定情報23を取得する。
【0062】
ステップC7:
BIOS111は、ステップC6で取得したBIOS設定情報23のBIOS設定項目と、ステップC3またはステップC4で取得したBIOS設定情報13のBIOS設定情報131、132を使って、テンポラリテーブル(
図4におけるBIOS設定情報61)を作成する。テンポラリテーブルは、BIOS設定情報611と、BIOS設定情報612とが格納される。BIOS設定情報611は、BIOS設定情報131にBIOS設定情報231を反映した内容である。BIOS設定情報612は、BIOS設定情報132にBIOS設定情報232を反映した内容である。テンポラリテーブルの作成が完了したら、BIOS111は、ステップC9を実行する。
【0063】
ステップC8:
ステップC5でBIOS設定情報23に変更なしと判断した場合、BIOS111は、ステップC3またはステップC4で取得したBIOS設定情報13のBIOS設定情報131、132を基にテンポラリテーブル(BIOS設定情報61)を作成する。
【0064】
ステップC9:
BIOS111は、作成したテンポラリテーブルをBIOS設定情報13の先頭に追加する(
図4に示すBIOS設定情報52)。先頭にあるテーブルをBIOS設定情報61に変更することで、取得したい値を検索するときに、必ず一番初めにテンポラリテーブルの値が参照されるようになる。
【0065】
この方法により、大量のデータ(BIOS設定情報13)をメモリ上にロードする必要がなくなる。また、立ち上げの初期段階から、外部ツール31により変更されたBIOS設定情報23を反映させたテンポラリテーブルを使用することができるため、設定を反映させるためのリブートを省略することができる。
【0066】
本実施形態では、外部ツール31は、BMC21とデータを通信可能に接続しているとしたが、接続していなくても問題ない。BIOS111が何らかの方法でBIOS設定情報32を取得できれば良い。
【0067】
BIOS111とBMCFW212、BMCFW212と外部ツール31のデータ通信の方法は、IPMIコマンドを例に挙げて説明したが、これには限定されない。例えば、BMCFW212のメモリ上に外部ツール31が書き込んだ内容を、BIOS111が直接参照するという方法でも良い。
【0068】
図3に示したBIOS設定情報23は、この形式に限らない。
図3では、BIOS設定情報231とBIOS設定情報232に対して、1つの更新フラグを持っているが、それぞれのBIOS設定情報に対して更新フラグを持つ実装も考えられる。
【0069】
図4に示したテンポラリテーブル(BIOS設定情報51)を格納するメモリは、記憶部12に限定しない。例えば、BMCFW212の記憶部22を使用し、メモリを直接参照する手段もある。
【0070】
図5のステップB3でBIOS設定の同期処理終了後、BIOS111は、
図4のBIOS設定情報52にあるBIOS設定情報61(テンポラリテーブル)を削除しても問題ない。ただし、削除する前に、BIOS111は、BIOS設定情報61を、BIOS設定情報131およびBIOS設定情報132に反映する必要がある。
【0071】
テンポラリテーブルを作成するタイミングは、
図5のステップB1に限らず、メモリ初期化実行前であればいつでも良い。例えば、OS運用中に、外部ツール31でBIOS設定情報23が変更された場合にその時点で行ってもよい。その場合には、BMCFW212は、外部ツール31によるBIOS設定情報23の変更を検出して、BIOS設定情報23に変更があったことをBIOS111に割り込みを上げて知らせる。BIOS111は、割り込みを受け取り、BIOS設定情報23の変更をBMCFW212より取得してテンポラリテーブルを作成する。リブートするタイミングで、テンポラリテーブル(BIOS設定情報61)を
図4のBIOS設定情報52となるように追加する。これにより、BIOS設定情報23の変更を反映させたBIOS設定情報を使ってリブート直後から起動することができる。但し、この場合、
図5のステップB1は省略する。
【0072】
以上、説明したように、第2の実施形態には、外部ツール31によりBIOS設定情報を変更した場合に、情報処理装置の起動時間を短縮することができるという効果がある。
【0073】
その理由は、本実施形態に係る情報処理装置は、外部ツールによる変更を直接BIOS設定情報13に書き込むのではなく、BIOS111が、外部ツール31による変更を反映したBIOS設定情報のテンポラリテーブルを保持し、それを参照して立ち上げを実施する。これによりBIOS111は、メモリ初期化の設定に外部ツールの変更を反映したBIOS設定情報を使用できるようになる。そのため、情報処理装置は、同期処理後にリブートする必要がなくなり、起動時間を短縮することができる。