(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024015747
(43)【公開日】2024-02-06
(54)【発明の名称】情報処理装置、BIOSログ管理プログラムおよびBIOSログ管理方法
(51)【国際特許分類】
G06F 9/4401 20180101AFI20240130BHJP
G06F 11/34 20060101ALI20240130BHJP
【FI】
G06F9/4401
G06F11/34 176
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022118028
(22)【出願日】2022-07-25
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】▲高▼橋 雅典
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042MA16
5B042MA17
5B042MA19
5B376AE13
5B376AE21
5B376EA22
(57)【要約】
【課題】コンピュータの起動時間を短縮する。
【解決手段】情報処理装置1は、BIOSのログを記憶する記憶領域を分割した複数の部分記憶領域と、BIOSの起動毎にBIOSのログを記録する部分記憶領域を変更し、変更された部分記憶領域にBIOSのログを記録し、BIOSの起動後かつOSの運用中に、複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合に、ログの記録が古い部分記憶領域のログを消去して新たな部分記憶領域を確保する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
BIOS(Basic Input/Output System)のログを記憶する記憶領域を分割した複数の部分記憶領域と、
前記BIOSの起動毎に前記BIOSのログを記録する部分記憶領域を変更する変更部と、
前記変更部によって変更された部分記憶領域に前記BIOSのログを記録する記録部と、
前記BIOSの起動後かつOS(Operating System)の運用中に、前記複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合に、ログの記録が古い部分記憶領域のログを消去して新たな部分記憶領域を確保する消去部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記消去部は、前記複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合に、エラーが発生した際にログを記録した部分記憶領域を除いた複数の部分記憶領域のうちログの記録が最古の部分記憶領域のログを消去する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記消去部は、前記OSの運用中に、前記OSのACPIドライバから、指定のAMLを利用して前記BIOSのSMMを呼び出し、前記SMMから前記BIOSのログの消去指示を取得したタイミングで、特定の部分記憶領域のログを消去する
ことを特徴とする請求項1または請求項2に記載の情報処理装置。
【請求項4】
前記消去部は、さらに、前記OSの運用中に、特定の部分記憶領域のログを消去できなかった場合には、次回の前記BIOSの起動時に、前記特定の部分記憶領域の消去できなかった残りのログを消去する
ことを特徴とする請求項1または請求項2に記載の情報処理装置。
【請求項5】
BIOSのログを記憶する記憶領域を分割した複数の部分記憶領域の中の部分記憶領域であって、前記BIOSの起動毎に前記BIOSのログを記録する部分記憶領域を変更し、
該変更した部分記憶領域に前記BIOSのログを記録し、
前記BIOSの起動後かつOSの運用中に、前記複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合に、ログの記録が古い部分記憶領域のログを消去して新たな部分記憶領域を確保する
処理をコンピュータに実行させるBIOSログ管理プログラム。
【請求項6】
BIOSのログを記憶する記憶領域を分割した複数の部分記憶領域の中の部分記憶領域であって、前記BIOSの起動毎に前記BIOSのログを記録する部分記憶領域を変更し、
該変更した部分記憶領域に前記BIOSのログを記録し、
前記BIOSの起動後かつOSの運用中に、前記複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合に、ログの記録が古い部分記憶領域のログを消去して新たな部分記憶領域を確保する
処理をコンピュータが実行するBIOSログ管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置などに関する。
【背景技術】
【0002】
BIOS(Basic Input/Output System)は、コンピュータのマザーボードやシステムボードに組み込まれたファームウェアである。コンピュータの電源を投入すると、BIOSは、CPU(Central Processing Unit)やメモリなど初期化を行った後、OS(Operating System)を起動させ動作する。また、その間にBIOSはコンピュータの状態などを、ログとして保存することが可能である。
【0003】
また、BMC(Baseboard Management Controller)は、遠隔でコンピュータを管理するためのファームウェアである。BMCは、機能の1つとしてBIOSのログを管理する。近年、コンピュータには、価格を抑えるために、BMCを搭載しない機種が存在する。BMCを搭載しない機種の場合には、BIOSがログの管理を行う必要がある。
【0004】
ところが、BIOSがアクセスできる保存領域は限られており、BIOSのログを一部のみしか保存できないのが現状である。BIOSのログは、エラー原因の特定などの障害調査に利用されるため、一部のみしか保存できない場合には、解析に時間がかかってしまう。
【0005】
BIOSのログの保存領域が限られるため、BIOSのログは、消去される。すなわち、BIOSのログは、フラッシュメモリに書き込まれるが、フラッシュメモリの特性上、書き込む際に上書きができず、上書きする場合には、消去する必要がある。ログの消去には、時間がかかるため、現状では、BIOSの起動時に消去処理をすることが多い。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2001-067229号公報
【特許文献2】特開2016-181106号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、BMCを搭載しないコンピュータであっても、全てのBIOSのログを管理する必要がある。このため、ログの書き込み量が増える。したがって、BIOSの起動毎に、古いログを消去する必要があり、BIOSの起動時間が一部のみログ書き込みの場合と比べて増加してしまう。ひいては、コンピュータの起動時間が増加してしまうという問題がある。
【0008】
1つの側面では、BMCを搭載しないコンピュータにおいて、コンピュータの起動時間を短縮することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、情報処理装置は、BIOSのログを記憶する記憶領域を分割した複数の部分記憶領域と、前記BIOSの起動毎に前記BIOSのログを記録する部分記憶領域を変更する変更部と、前記変更部によって変更された部分記憶領域に前記BIOSのログを記録する記録部と、前記BIOSの起動後かつOSの運用中に、前記複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合に、ログの記録が古い部分記憶領域のログを消去して新たな部分記憶領域を確保する消去部と、を有する。
【発明の効果】
【0010】
1つの態様によれば、BMCを搭載しないコンピュータにおいて、コンピュータの起動時間を短縮することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施例に係るBIOSログ管理処理の流れの一例を示す図である。
【
図2】
図2は、実施例に係るBIOSログ管理部を含む情報処理装置の機能構成を示すブロック図である。
【
図3A】
図3Aは、実施例に係る書込管理の概念を示す図(1)である。
【
図3B】
図3Bは、実施例に係る書込管理の概念を示す図(2)である。
【
図4】
図4は、実施例に係る管理テーブルの構成の一例を示す図である。
【
図5】
図5は、実施例に係る領域管理テーブルの構成の一例を示す図である。
【
図6】
図6は、実施例に係るOS運用中のログ消去処理の流れの一例を示す図である。
【
図7】
図7は、実施例に係るBIOS起動時の処理のフローチャートの一例を示す図である。
【
図8】
図8は、実施例に係るOS運用中の消去処理のフローチャートの一例を示す図である。
【
図9】
図9は、実施例に係るエラー発生時の処理のフローチャートの一例を示す図である。
【
図10】
図10は、BIOSログ管理プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示する情報処理装置、BIOSログ管理プログラムおよびBIOSログ管理方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例0013】
[BIOSログ管理処理の流れ]
図1は、実施例に係るBIOSログ管理処理の流れの一例を示す図である。
図1に示すように、情報処理装置1には、Firmware10と、OS20と、CPU/Chip Set30と、SPI Flash40とが含まれる。Firmware10には、BIOSのログ管理部11が含まれる。CPU/Chip Set30には、SMM(System Management Mode)管理部31が含まれる。SPI Flash40には、BIOSのログ領域41が含まれる。BIOSのログ領域41は、BIOSのログを記憶する記憶領域であり、複数に分割される。以降、ログ領域41を分割した個々の領域のことをログ部分領域ということがある。
【0014】
BIOSが起動されると、BIOSは、Boot時に、一度初期化するために、SMM管理部31に初期化を指示し(<1>)、SMM管理部31は、初期化指示を受け付ける。ここでいう初期化とは、ログ領域41のデータの消去のことをいう。また、エラーが発生すると、SMM管理部31は、エラーが発生したことを受け付ける(<2>)。ここでいうSMMは、BIOSによってのみ利用可能なモードであり、OSからも独立した環境を提供できるモードである。初期化指示やエラー発生を受け付けたSMM管理部31は、最高優先度を持ったハードウェア割込みを示すSMI(System Management Interrupt)を発行し(<3>)、BIOSのモードはSMMになる。モードがSMMになったBIOS(SMM)は、ログ管理部11に初期化指示やエラーログの書き込みを指示する(<4>)。ログ管理部11は、分割されたログ領域41の中の指定された書込箇所(ログ部分領域)に初期化データまたはエラーログを書き込む(<5>)。
【0015】
また、エラーログ以外のログについては、BIOSは、Boot時またはRuntime時に、ログ管理部11に対して、全ログの書き込みを指示し(<1´>)、ログ管理部11は、全ログの書き込みを受け付ける。全ログの書き込みを受け付けたログ管理部11は、分割されたログ領域42の中の指定された書込箇所(部分ログ領域)にログを書き込む(<2´>)。すなわち、ログ管理部11は、BIOS(Boot、Runtime)やBIOS(SMM)からログの書込み指示を受け付けた場合には、分割されたログ領域41のうち指定された部分ログ領域の空間にログを書き込む。
【0016】
また、BIOSは、Boot時に、BIOS Menuに従って処理する(<11>)。BIOS Menuとは、BIOSの設定画面のことをいい、例えば、ログ領域41を初期化する該当箇所(部分ログ領域)を指定することができるMenuである。BIOS Menuに従って、ログ管理部11は、ログ領域41の該当箇所(部分ログ領域)を必要がある場合消去(初期化)する(<12>)。すなわち、BIOSのログは、フラッシュメモリ(例えば、SPI(Serial Peripheral Interface) Flash)に書き込まれるが、フラッシュメモリの特性上、書き込む際に上書きができず、上書きする場合には、消去(初期化)する必要がある。消去には、時間がかかるため、BIOSのBoot時に、ログを消去しないでログを記録することができる部分ログ領域がない場合には、ログ領域41の該当箇所(部分ログ領域)の消去処理をする。
【0017】
また、BIOSは、起動後かつOSのRunning(運用)中に、ログを消去しないでログを記録することができる部分ログ領域がない場合には、ログの記録が最古のログ部分領域のデータを消去して、ログを記録する新たな空間を確保する。消去には、時間がかかるため、BIOSは、起動後かつOSの運用中に、ログ領域41のいずれかの部分ログ領域のデータを消去するようにする。なお、BIOSの起動後かつOSの運用中に行われる消去処理の流れについては、後述する。
【0018】
[BIOSログ管理部の機能構成]
ここで、BIOSのログ管理部11を含む情報処理装置1の機能構成について、
図2を参照して説明する。
図2は、実施例に係るBIOSログ管理部を含む情報処理装置の機能構成を示すブロック図である。
図2に示すように、情報処理装置1には、BIOSのログ管理部11、記憶部12およびSPI Flash40が含まれる。
【0019】
SPI Flash40には、BIOSのログ領域41が確保される。BIOSのログ領域41には、分割された複数の部分ログ領域が含まれる。なお、
図2では、BIOSのログ領域41は、4つに分割されているが、これに限定されず、複数の部分ログ領域に分割されていれば良い。
【0020】
記憶部12は、管理テーブル121および領域管理テーブル122を有する。管理テーブル121は、SPI Flash40内のBIOSのログ領域41の管理に用いられるテーブルである。また、領域管理テーブル122は、BIOSのログ領域41を分割した各部分ログ領域を管理するテーブルである。なお、部分ログ領域は、部分記憶領域の一例である。また、管理テーブル121および領域管理テーブル122の各構成の一例については、後述する。
【0021】
ログ管理部11は、振分処理部111、圧縮管理部112、暗号圧縮処理部113、圧縮処理部114、書込管理部115および書込処理部116を有する。なお、書込管理部115は、変更部、記録部および消去部の一例である。書込処理部116は、記録部の一例である。
【0022】
振分処理部111は、BIOSのログを振り分ける。BIOSのログには、公開できない情報が含まれる。したがって、振分処理部111は、Boot時のBIOSやBIOS(SMM)からログの書き込み指示を受け付けると、ログを非公開ログと非公開ログ以外のログとに振り分ける。
【0023】
圧縮管理部112は、振り分けられたログごとに、BIOSのログの圧縮を管理する。例えば、圧縮管理部112は、ログの分類が非公開ログの場合には、非公開ログの容量が所定の容量になると当該ログの圧縮処理を暗号圧縮処理部113に実行させる。また、圧縮管理部112は、ログの分類が非公開ログ以外のログの場合には、非公開ログ以外のログの容量が所定の容量になると当該ログの圧縮処理を圧縮処理部114に実行させる。
【0024】
暗号圧縮処理部113は、非公開ログについて、暗号圧縮処理を実行する。圧縮処理部114は、非公開ログ以外のログについて、圧縮処理を実行する。
【0025】
書込管理部115は、BIOSの起動毎に、ログ領域41の中の部分ログ領域を指定してログの書き込みを管理する。例えば、書込管理部115は、管理テーブル121を用いて、BIOSの起動毎に、BIOSのログを書き込む部分ログ領域を変更する。そして、書込管理部115は、変更される部分ログ領域にBIOSのログを書き込むように、書込処理部117に指示する。
【0026】
また、書込管理部115は、BIOSの起動後かつOSの運用中に、分割されたログ領域41のうち指定された部分ログ領域のデータを消去する。すなわち、書込管理部115は、BIOSの起動後かつOSの運用中に、指定された部分ログ領域を初期化する。例えば、書込管理部115は、管理テーブル121を用いて、複数の部分ログ領域の全てにログが記録されているか否かを判定する。すなわち、書込管理部115は、複数の部分ログ領域の中でログを消去しないでログを記録することができる部分ログ領域がないか否かを判定する。そして、書込管理部115は、複数の部分ログ領域の全てにログが記録されていると判定する場合には、管理テーブル121を用いて、以下の処理を行う。書込管理部115は、ログ領域41のうち、エラーが発生した際に書き込んだ部分ログ領域を除いた部分ログ領域であってログの書き込みが最古の部分ログ領域のデータを消去するように、書込処理部116に指示する。
【0027】
なお、書込管理部115は、BIOSの起動後かつOSの運用中に、特定の部分ログ領域を全て消去できない場合がある。例えば、OSに負荷がかかっている場合である。かかる場合には、書込管理部115は、次回のBIOSの起動時に、管理テーブル121を用いて、特定の部分ログ領域の消去できなかった残りを消去するようにすれば良い。
【0028】
書込処理部116は、書込管理部115によって変更され指定された部分ログ領域にBIOSのログを書き込む。また、書込処理部116は、書込管理部115によって消去するように指示された部分ログ領域のデータを消去する。
【0029】
[書込管理の概念]
ここで、書込管理部115によって実施される書込管理の概念を、
図3Aおよび
図3Bを参照して説明する。
図3Aおよび
図3Bは、実施例に係る書込管理の概念を示す図である。
図3Aおよび
図3Bに示すBIOSのログ領域41は、4個に分割されている。各部分ログ領域は、41-1、41-2、41-3、41-4と記載するものとする。そして、部分ログ領域41-3は、前前前回の起動ログを保持(DataStored)し、部分ログ領域41-4は、前前回の起動ログを保持し、部分ログ領域41-1は、前回の起動ログを保持している。いずれの部分ログ領域もエラーが発生した際のログではない。ここでは、BIOSの起動時にログを書き込む箇所が部分ログ領域41-2の場合を一例として説明する。
【0030】
書込管理部15は、BIOSの起動時に、部分ログ領域41-2について、ログを保持(DataStored)していないことを確認する。書込管理部15は、部分ログ領域41-2について、ログを保持している場合には、他の部分ログ領域も既にログを保持しているので、BIOSの起動時にデータを消去する。そして、書込管理部15は、データを消去した後に部分ログ領域41-2にログを書き込んでいく。一方、書込管理部15は、部分ログ領域41-2について、ログを保持していない場合には、部分ログ領域41-2にログを書き込んでいく。
【0031】
そして、部分ログ領域41-3は、ログ領域41のうちログの書き込みが最古のエリアである。したがって、書込管理部115は、複数の部分ログ領域の全てにログが記録されているので、BIOSの起動後かつOSの運用中に、データを消去する。この後、書込管理部115は、次回のBIOSの起動時には、データを消去した部分ログ領域41-3にログを書き込むことができる。このように、書込管理部115は、OSの運用中に部分ログ領域のデータを消去しておくことで、BIOSの起動毎に、ログを書き込む部分ログ領域をローテーションしてログを書き込むことができる。加えて、書込管理部115は、OSの運用中に、部分ログ領域のデータを消去しておくことで、次回のコンピュータの起動時間を短縮することができる。
【0032】
仮に、BIOSの起動時、部分ログ領域41-2へのログの書き込み中に、エラーが発生したとする。すると、書込管理部115は、部分ログ領域41-2をBIOSの起動毎のローテーションから外すことで、エラー時のログを保持する。部分ログ領域41-2以外の部分ログ領域について、書込管理部115は、ローテーションを継続する。つまり、書込管理部115は、OSの運用中にデータを消去した部分ログ領域41-3に、次回のBIOSの起動時にログの書き込みを予定する。さらに、部分ログ領域41-3は、OSの運用中にデータを消去したので、部分ログ領域41-4が、ログ領域41のうちログの書き込みが最古のエリアとなる。したがって、書込管理部115は、複数の部分ログ領域の全てにログが記録されている場合には、BIOSの起動後かつOSの運用中に、部分ログ領域41-4のデータの消去を予定する。
【0033】
図3Bには、複数の部分ログ領域に、エラーが発生した際のログが保持されている場合である。
図3B上図は、2つの部分ログ領域41-4、41-2に、エラーが発生した際のログが保持されている場合である。かかる場合には、部分ログ領域41-2、41-4以外の部分ログ領域41-1、41-3について、書込管理部115は、ローテーションを継続する。
【0034】
図3B下図は、3つの部分ログ領域41-4、41-2、41-3に、エラーが発生した際のログが保持されている場合である。かかる場合には、書込管理部115は、部分ログ領域41-1について、BIOSの起動時に、ログを保持していないことを確認し、ログを保持している場合には、書き込む前にデータを消去してからログを書き込んでいく。一方、書込管理部15は、部分ログ領域41-1について、ログを保持していない場合には、そのまま部分ログ領域41-1にログを書き込んでいく。
【0035】
[管理テーブルの構成の一例]
ここで、実施例に係る管理テーブル121の構成の一例を、
図4を参照して説明する。
図4は、実施例に係る管理テーブルの構成の一例を示す図である。
図4に示すように、管理テーブル121は、TableWriting、TableInit、TableInitializing、TableCount、TableMask、TablesDataStoredおよびFlashManagementTableListを対応付けて記憶する。
【0036】
TableWritingは、ログの書き込みをしている部分ログ領域を指定するために用いられる。TableWritingは、1バイト長であり、各ビットを各部分ログ領域に対応付ける。一例として、
図3Aおよび
図3Bの例では、部分ログ領域41-2がログを書き込んでいる場合には、TableWritingは「01000000」を記憶する。
【0037】
TableInitは、初期化する対象の部分ログ領域を指定するために用いられる。TableInitは、1バイト長であり、各ビットを各部分ログ領域に対応付ける。一例として、
図3Aおよび
図3Bの例では、部分ログ領域41-3が初期化(消去)する対象である場合には、TableInitは「00100000」を記憶する。
【0038】
TableInitializingは、初期化処理をする部分ログ領域を選択するために用いられる。TableInitializingは、1バイト長であり、各ビットを各部分ログ領域に対応付ける。TableCountは、部分ログ領域の使用可能な総数を記憶する。
図3Aおよび
図3Bの例では、TableCountは、「4」を記憶する。TableMaskは、マスクしている部分ログ領域を指定するために用いられる。TableMaskは、1バイト長であり、各ビットを各部分ログ領域に対応付ける。ここでいうマスクとは、書き込み後に上書きできないように保持することをいう。例えば、マスクしている部分ログ領域は、エラーの際にログを保存した領域である。
【0039】
TablesDataStoredは、ログデータを記憶している部分ログ領域を指定するために用いられる。TablesDataStoredは、1バイト長であり、各ビットを各部分ログ領域に対応付ける。一例として、
図3Aおよび
図3Bの例では、部分ログ領域41-1,41-3,41-4がログデータを記憶している場合には、TablesDataStoredは「10110000」を記憶する。FlashManagementTableListは、各領域管理テーブル122のアドレスを記憶する。なお、TableInitおよびTableMaskは、BIOSメニューが示す値と連動する。
【0040】
[領域管理テーブルの構成の一例]
ここで、実施例に係る領域管理テーブル122の構成の一例を、
図5を参照して説明する。領域管理テーブル122は、ログ領域41を分割した部分ログ領域の個数だけ存在する。
図5は、実施例に係る領域管理テーブルの構成の一例を示す図である。
図5に示すように、領域管理テーブル122は、FlashID、CountStartUp、DataStartAddressおよびDataLengthを対応付けて記憶する。
【0041】
FlashIDは、部分ログ領域を区別するためのIDである。CountStartUpは、ログを記憶してから何回目のBIOSの起動であるかを示すカウンタである。最新のBIOS起動のログであれば、「0」が設定され、領域が初期化されなければ、BIOS起動毎にカウントがアップされる。DataStartAddressは、ログデータの保存先のアドレスである。DataLengthは、ログデータの保存先のサイズである。
【0042】
[OS運用中のログ消去処理の流れ]
ここで、実施例に係るOS運用中のログ消去処理の流れについて、
図6を参照して説明する。
図6は、実施例に係るOS運用中のログ消去処理の流れの一例を示す図である。
図6に示すように、OS運用中に、ログ管理部11は、ACPI(Advanced Programmable Interrupt Controller)を利用して、BIOSのログ領域41のデータを消去(初期化)する。ACPIを利用するのは、ACPIのAML(ACPI Machine Language)を利用してSMMに入ることができるからである。SMMに入ることで、OSの運用中にBIOSのログ管理部11に割り込むことができる。
【0043】
例えば、BIOS(Sweep)は、OS起動後暫くしてから、ACPI Driver21を呼び出すために、CPU/Chip Set30のACPI Register領域32を操作する(<21>)。ACPI Register領域32が操作されたため、CPU/Chip Set30は、SCI(System Control Interrupt)を発行する(<22>)。SCIは、ACPIイベントをOSに通知するためのハードウェア割込みである。ACPI Driver21は、SCIを受け付けてHandler処理を実行し(<23>)、指定のAMLを呼び出す。AMLは、SMMを呼び出すために、SMM Register領域33を操作する(<24>)。SMM Register領域33が操作されたため、CPU/Chip Set30は、SMIを発行する(<25>)。BIOS(SMM)は、SMIを受け付けてSMMになり、BIOSのログ管理部11にBIOSのログ消去を依頼する(<26>)。
【0044】
BIOSのログ管理部11は、BIOSのログ領域41の該当箇所(部分ログ領域)を消去(初期化)する(<27>)。例えば、ログ管理部11における書込管理部115は、管理テーブル121を用いて、ログ領域41を分割した複数の部分ログ領域の全てにログが記録されているか否かを判定する。そして、書込管理部115は、複数の部分ログ領域の全てにログが記録されていると判定する場合には、管理テーブル121を用いて、エラーが発生した際に書き込んだ部分ログ領域を除いた部分ログ領域のうちログの書き込みが最古の部分ログ領域のデータを消去するように、書込処理部116に指示する。そして、書込処理部116は、指示された部分ログ領域のデータを消去する。なお、書込管理部115は、OSの運用中に、特定の部分ログ領域を全て消去できない場合がある。かかる場合には、書込管理部115は、次回のBIOSの起動時に、管理テーブル121を用いて、特定の部分ログ領域の消去できなかった残りを消去するようにすれば良い。
【0045】
これにより、ログ管理部11は、OSの運用中に、BIOSの部分ログ領域を消去することで、次回のBIOS起動時にBIOSの部分ログ領域の消去処理を抑制することができる。結果的に、ログ管理部11は、コンピュータの起動時間を短縮することができる。
【0046】
[BIOS起動時の処理のフローチャート]
図7は、実施例に係るBIOS起動時の処理のフローチャートの一例を示す図である。なお、
図7では、BIOSが起動されたものとする。
【0047】
BIOSが起動されると、ログ管理部11は、管理テーブル121を取得する(ステップS11)。ログ管理部11は、管理テーブル121のTableWritingを「0」に初期化する(ステップS12)。すなわち、ログ管理部11は、現にログを書き込む対象の部分ログ領域がないので、TableWritingを「0」に初期化する。
【0048】
ログ管理部11は、管理テーブル121のTablesMaskにBIOS Menuで指定したMask箇所を追加する(ステップS13)。BIOS Menuには、ユーザが特定の部分ログ領域のデータを保持(Mask)したい場合には、保持したい部分ログ領域が指定されている。ログ管理部11は、かかるBIOS Menuを取得し、BIOS Menuで指定したMask箇所をTablesMaskに設定する。
【0049】
ログ管理部11は、管理テーブル121のMask=0かつDataStored=0な領域管理テーブル122があるか否かを判定する(ステップS14)。すなわち、ログ管理部11は、保持(Mask)する部分ログ領域がなく、データが入っていない部分ログ領域があるか否かを判定する。つまり、ログ管理部11は、部分ログ領域を消去しないで、すぐに書き込める部分ログ領域の対象が存在するかどうかを判定する。Mask=0かつDataStored=0な領域管理テーブル122があると判定した場合には(ステップS14;Yes)、ログ管理部11は、Mask=0かつDataStored=0な領域管理テーブル122に対応する部分ログ領域にログを書き込むべく、ステップS25に移行する。
【0050】
一方、Mask=0かつDataStored=0な領域管理テーブル122がないと判定した場合には(ステップS14;No)、ログ管理部11は、管理テーブル121のTablesInitにBIOS Menuで指定した初期化対象箇所を書き込む(ステップS15)。BIOS Menuには、ユーザが特定の部分ログ領域を消去したい場合には、消去したい部分ログ領域が指定されている。ログ管理部11は、かかるBIOS Menuを取得し、BIOS Menuで指定した初期化対処箇所をTableInitに設定する。
【0051】
ログ管理部11は、Mask=0な領域管理テーブル122があるか否かを判定する(ステップS16)。すなわち、ログ管理部11は、管理テーブル121のTablesMaskを用いて、保持(Mask)がされていないログ領域41があるか否かを判定する。Mask=0な領域管理テーブル122があると判定した場合には(ステップS16;Yes)、ログ管理部11は、管理テーブル121のMask=0かつCountが最大な領域管理テーブル122を特定し、TablesInitの対応しているビットを立てる(ステップS17)。すなわち、ログ管理部11は、保持(Mask)がされている部分ログ領域を除いて、ログの書込みが一番古い部分ログ領域を特定し、消去する対象とする。そして、ログ管理部11は、消去処理に移行すべく、ステップS19に移行する。
【0052】
一方、Mask=0な領域管理テーブル122がないと判定した場合には(ステップS16;No)、ログ管理部11は、BIOS Menuに初期化が指定されている部分ログ領域があるか否かを判定する(ステップS18)。BIOS Menuには、ユーザが特定の部分ログ領域を消去したい場合には、消去したい部分ログ領域が指定されている。ログ管理部11は、ユーザが消去したい部分ログ領域があるか否かを判定する。BIOS Menuに初期化が指定されている部分ログ領域がないと判定した場合には(ステップS18;No)、ログ管理部11は、消去処理をしないで、BIOS起動時の処理を終了する。
【0053】
一方、BIOS Menuに初期化が指定されている部分ログ領域があると判定した場合には(ステップS18;Yes)、ログ管理部11は、消去処理をすべく、ステップS19に移行する。
【0054】
ステップS19において、ログ管理部11は、管理テーブル121のTablesInitに立っているビットがなくなるまで、ステップS20~S23を行う(ステップS19,S24)。すなわち、ログ管理部11は、TablesInitに立っているビットに対応する対象の部分ログ領域の消去処理を行う。
【0055】
ログ管理部11は、管理テーブル121のTalbesInitに立っているビットの1つを選択して、その対応するTableInitializingのビットに「1」を立てる(ステップS20)。すなわち、ログ管理部11は、消去する部分ログ領域を1つ選択して、初期化中であるとする。
【0056】
そして、ログ管理部11は、管理テーブル121のTableInitializingが「1」の領域管理テーブル122に対し、Data Start AddressとData Lengthからデータの範囲を特定し、消去処理を行う(ステップS21)。すなわち、ログ管理部11は、TableInitializingから特定された部分ログ領域のデータを消去する。
【0057】
そして、ログ管理部11は、消去処理のEndFlagを確認したら、管理テーブル121のDataStoredの該当ビットを0に設定するとともに、TablesInitおよびTableInitializingの該当ビットを0に設定する(ステップS22)。すなわち、ログ管理部11は、消去処理が完了したら、消去処理が完了した部分ログ領域について、管理テーブル121の該当箇所を、データが入っていない、かつログ消去が完了した状態に設定する。
【0058】
そして、ログ管理部11は、該当する領域管理テーブル122のCountStartUpを「0」に設定する(ステップS23)。すなわち、ログ管理部11は、対象の部分ログ領域の起動回数を初期化する。そして、ログ管理部11は、ステップS24およびステップS19に移行する。
【0059】
ログ管理部11は、管理テーブル121のTablesInitに立っているビットがなくなると、管理テーブル121のMask=0かつDataStored=1な領域管理テーブル122の全てのCountStartUpに1を足す(ステップS25)。すなわち、ログ管理部11は、保持(Mask)対象でなく、データが入っている部分ログ領域を対象に、BIOSを起動した回数を1だけ加算する。
【0060】
ログ管理部11は、管理テーブル121のMask=0かつDataStored=0な領域管理テーブル122を1つ選択し、TableWritingの該当ビットに「1」を立てる(ステップS26)。すなわち、ログ管理部11は、保持(Mask)対象でなく、データが入っていない部分ログ領域を選択して、ログの書込み対象とする。
【0061】
ログ管理部11は、管理テーブル121のTableWriting=1の領域管理テーブル122のStartAddressからログを書き込む(ステップS27)。そして、ログ管理部11は、BIOS起動時の処理を終了する。
【0062】
[OS運用中の消去処理のフローチャート]
図8は、実施例に係るOS運用中の消去処理のフローチャートの一例を示す図である。
【0063】
OSが起動し暫くしてから、ログ管理部11は、管理テーブル121を取得する(ステップS31)。ログ管理部11は、管理テーブル121のMask=0かつDataStored=0な領域管理テーブル122があるか否かを判定する(ステップS32)。すなわち、ログ管理部11は、保持(Mask)する部分ログ領域がなく、データが入っていない部分ログ領域があるか否かを判定する。つまり、ログ管理部11は、部分ログ領域を消去しないで、すぐに書き込める部分ログ領域の対象が存在するかどうかを判定する。Mask=0かつDataStored=0な領域管理テーブル122があると判定した場合には(ステップS32;Yes)、ログ管理部11は、OS運用中の消去処理を終了する。
【0064】
一方、Mask=0かつDataStored=0な領域管理テーブル122がないと判定した場合には(ステップS32;No)、ログ管理部11は、以下の処理を行う。ログ管理部11は、Mask=1以外の領域管理テーブル122であってCountStartUpが最大の領域管理テーブル122を特定し、管理テーブル121の対応するTalesInitのビットを立てる(ステップS33)。すなわち、ログ管理部11は、保持(Mask)しない部分ログ領域の内、最も古いBIOS起動時のログが保持されている部分ログ領域を選択して、ログの消去対象とする。
【0065】
そして、ログ管理部11は、ログの消去対象について、消去処理を行う(ステップS34)。すなわち、ログ管理部11は、
図6で説明したOS運用中のログ消去処理を実行する。そして、ログ管理部11は、OS運用中の消去処理を終了する。
【0066】
[エラー発生時の処理のフローチャート]
図9は、実施例に係るエラー発生時の処理のフローチャートの一例を示す図である。
【0067】
エラーが発生すると、ログ管理部11は、管理テーブル121を取得する(ステップS41)。ログ管理部11は、管理テーブル121のTableWriting=1な領域管理テーブル122があるか否かを判定する(ステップS42)。すなわち、ログ管理部11は、ログを書き込み中の部分ログ領域があるか否かを判定する。TableWriting=1な領域管理テーブル122がないと判定した場合には(ステップS42;No)、ログ管理部11は、部分ログ領域の書き込み中のエラーでないので、処理を終了する。
【0068】
一方、TableWriting=1な領域管理テーブル122があると判定した場合には(ステップS42;Yes)、ログ管理部11は、あると判定した領域管理テーブル122を選択して、管理テーブル121にMaskを追加する(ステップS43)。すなわち、ログ管理部11は、対象の領域管理テーブル122をMaskするために、管理テーブル121のTablesMaskの該当ビットを立てる。
【0069】
そして、ログ管理部11は、管理テーブル121のTableWritingを「0」にする(ステップS44)。すなわち、ログ管理部11は、ログの書き込み中である状態を、ログを書き込みしていない状態に変更する。そして、ログ管理部11は、エラー発生時の処理を終了する。
【0070】
[実施例の効果]
このようにして、情報処理装置1は、BIOSのログを記憶する記憶領域を分割した複数の部分記憶領域を有する。情報処理装置1は、BIOSの起動毎にBIOSのログを記録する部分記憶領域を変更する。情報処理装置1は、変更された部分記憶領域にBIOSのログを記録する。情報処理装置1は、BIOSの起動後かつOSの運用中に、複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合には、ログの記録が古い部分記憶領域のログを消去して新たな部分記憶領域を確保する。かかる構成によれば、情報処理装置1は、ログの部分記憶領域の消去を、BIOSの起動時に行わず、OS運用中に行うことで、次回のBIOSの起動時に消去処理を行わないでログを書き込むことができることとなり、コンピュータの起動時間を短縮できる。
【0071】
また、情報処理装置1は、複数の部分記憶領域の中でログを消去しないでログを記録することができる部分記憶領域がないと判定する場合には、エラーが発生した際にログを記録した部分記憶領域を除いた複数の部分記憶領域のうちログの記録が最古の部分記憶領域のログを消去する。かかる構成によれば、情報処理装置1は、OS運用中に、重要なログを維持(保護)したまま、次回のBIOSの起動時に書き込むことができる部分記憶領域のログを消去できる。
【0072】
また、情報処理装置1は、OSの運用中に、OSのACPIドライバから、指定のAMLを利用してBIOSのSMMを呼び出し、SMMからBIOSのログの消去指示を取得したタイミングで、特定の部分記憶領域のログを消去する。かかる構成によれば、情報処理装置1は、OSの運用中にBIOSのログ領域を消去する仕組みを実現できる。
【0073】
また、情報処理装置1は、さらに、OSの運用中に、特定の部分記憶領域のログを消去できなかった場合には、次回のBIOSの起動時に、特定の部分記憶領域の消去できなかった残りのログを消去する。かかる構成によれば、情報処理装置1は、OSの運用中に、特定の部分記憶領域のログを全て消去できなかった場合であっても、次回のBIOSの起動時に、残りを消去すればよいので、消去に時間がかからず、コンピュータの起動時間を短縮できる。
【0074】
[その他]
なお、上記実施例では、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、振分処理部111と、圧縮管理部112と、暗号圧縮処理部113と、圧縮処理部114とを統合しても良い。また、書込管理部115を、BIOSのログの書込処理と、BIOS起動時のログの消去処理と、OS起動後のログの消去処理とに分散しても良い。
【0075】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、
図1に示した情報処理装置1と同様の機能を実現するBIOSログ管理プログラムを実行するコンピュータの一例を説明する。
図10は、BIOSログ管理プログラムを実行するコンピュータの一例を示す図である(簡略化のため一部表記は省略)。
【0076】
図10に示すように、コンピュータ200は、各種演算処理を実行するCPU(Central Processing Unit)203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取る内部ストレージ213、外部ストレージ214と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信装置217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、SPI Flash205などを有する。そして、メモリ201、CPU203、内部ストレージ213、外部ストレージ214、SPI Flash205、表示装置209、入力装置215、通信装置217は、バス219で接続されている。
【0077】
SPI Flash 205は、BIOSログ管理プログラム205aおよびBIOSログ管理処理関連情報205bを記憶する。通信装置217は、ネットワークと装置内部とのインターフェースを司り、他のコンピュータからのデータの入出力を制御する。通信装置217には、例えば、モデムやLANアダプタなどを採用することができる。
【0078】
表示装置209は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する表示装置である。表示装置209は、例えば、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどを採用することができる。
【0079】
CPU203は、BIOSログ管理プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは情報処理装置1の各機能部に対応する。BIOSログ管理処理関連情報205bには、例えば、管理テーブル121、領域管理テーブル122が含まれる。そして、例えば外部ストレージ214が、BIOSログ管理プログラム205aなどの各情報を記憶する。