(57)【特許請求の範囲】
【請求項１】
ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行する処理部と、
前記ブート処理の期間内の所定のタイミングで、前記不揮発性メモリ内の前記所定領域に、当該タイミングに対応するタグを書き込む書き込み部と、
前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示する指示部と、
を備える情報処理装置。
【請求項２】
前記所定のタイミングには、前記ブート処理の終了タイミングが含まれる、
請求項１に記載の情報処理装置。
【請求項３】
前記所定のタイミングには、前記不揮発性メモリにデータを書き込み可能となるタイミングが含まれる、
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記ブート処理には、前記ブート処理に使用する設定データをユーザが変更可能なセットアップ処理が含まれ、
前記所定のタイミングには、前記セットアップ処理の開始タイミングが含まれる、
請求項１から請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
前記指示部は、
前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データのうち設定項目ごとの最新の設定データを使用して前記ブート処理を実行するように前記処理部に指示する、
請求項１から請求項４のいずれか一項に記載の情報処理装置。
【請求項６】
前記書き込み部は、
前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データの少なくとも一部を、前記ブート処理に使用する設定データとして、最後に書き込まれた設定データの後に書き込む、
請求項１から請求項５のいずれか一項に記載の情報処理装置。
【請求項７】
前記指示部は、
ユーザの操作に基づいて、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示する、
請求項１から請求項６のいずれか一項に記載の情報処理装置。
【請求項８】
前記指示部は、
前記不揮発性メモリ内の前記所定領域に書き込まれた複数の前記タグの種類及び連続性に基づいて、前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示する、
請求項１から請求項７のいずれか一項に記載の情報処理装置。
【請求項９】
前記指示部は、
前記不揮発性メモリ内の前記所定領域に書き込まれた複数の前記タグのうちユーザに選択された前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示する、
請求項１から請求項８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記不揮発性メモリ内の前記所定領域の書き込み可能な領域の残量に基づいて、前記所定領域に書き込まれた設定データのうち、最後に書き込まれた前記タグから所定数分遡った前記タグ以前の領域において、設定項目ごとの最新の設定データ以外の設定データを少なくとも消去するメモリ制御部、
を備える請求項１から請求項９のいずれか一項に記載の情報処理装置。
【請求項１１】
前記メモリ制御部は、
最後に書き込まれた前記タグから所定数分遡った前記タグ以降の各タグ間の領域のそれぞれにおいて、設定項目ごとの最新の設定データ以外の設定データを消去する、
請求項１０に記載の情報処理装置。
【請求項１２】
情報処理装置における制御方法であって、
処理部が、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行するステップと、
書き込み部が、前記ブート処理の期間内の所定のタイミングで、前記不揮発性メモリ内の前記所定領域に、当該タイミングに対応するタグを書き込むステップと、
指示部が、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように指示するステップと、
を有する制御方法。
【請求項１３】
コンピュータに、
ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行するステップと、
前記ブート処理の期間内の所定のタイミングで、前記不揮発性メモリ内の前記所定領域に、当該タイミングに対応するタグを書き込むステップと、
前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように指示するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）の設定を変更した場合に起動できなくなるといったシステム障害が発生することがある。この設定変更によるシステム障害は、設定を初期化することによりリカバリーする方法がある（例えば、特許文献１参照）。
【０００３】
しかしながら、ＢＩＯＳの設定を初期化した場合には、それまでユーザがカスタマイズした設定が反映されなくなるため、ＢＩＯＳによる初期化処理の対象となる周辺装置が初期化されなくなってしまうことや、初期化処理の手順等に変化が生じたりするといった問題が生じることがある。そのため、問題なく起動していたときの設定のスナップショットを保存しておき、その保存しておいた設定を使用してリカバリーする方法もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−８１６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、スナップショットで保存しておく方法では、単なる初期化とは違いユーザが保存した以前の設定に戻してリカバリーできる反面、ユーザがリカバリー用として設定を保存するための作業を自ら行う必要があるため、作業を行うのが煩わしく実行性が低くなるという懸念がある。
【０００６】
本発明は、上記した事情に鑑みてなされたもので、ＢＩＯＳによる起動を簡便な方法で以前の設定に戻して行うことができる情報処理装置、制御方法、及びプログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【０００７】
本発明は上記の課題を解決するためになされたものであり、本発明の第１態様に係る情報処理装置は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行する処理部と、前記ブート処理の期間内の所定のタイミングで、前記不揮発性メモリ内の前記所定領域に、当該タイミングに対応するタグを書き込む書き込み部と、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示する指示部と、を備える。
【０００８】
上記情報処理装置において、前記所定のタイミングには、前記ブート処理の終了タイミングが含まれてもよい。
【０００９】
上記情報処理装置において、前記所定のタイミングには、前記不揮発性メモリにデータを書き込み可能となるタイミングが含まれてもよい。
【００１０】
上記情報処理装置において、前記ブート処理には、前記ブート処理に使用する設定データをユーザが変更可能なセットアップ処理が含まれ、前記所定のタイミングには、前記セットアップ処理の開始タイミングが含まれてもよい。
【００１１】
上記情報処理装置において、前記指示部は、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データのうち設定項目ごとの最新の設定データを使用して前記ブート処理を実行するように前記処理部に指示してもよい。
【００１２】
上記情報処理装置において、前記書き込み部は、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データの少なくとも一部を、前記ブート処理に使用する設定データとして、最後に書き込まれた設定データの後に書き込んでもよい。
【００１３】
上記情報処理装置において、前記指示部は、ユーザの操作に基づいて、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示してもよい。
【００１４】
上記情報処理装置において、前記指示部は、前記不揮発性メモリ内の前記所定領域に書き込まれた複数の前記タグの種類及び連続性に基づいて、前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示してもよい。
【００１５】
上記情報処理装置において、前記指示部は、前記不揮発性メモリ内の前記所定領域に書き込まれた複数の前記タグのうちユーザに選択された前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように前記処理部に指示してもよい。
【００１６】
上記情報処理装置は、前記不揮発性メモリ内の前記所定領域の書き込み可能な領域の残量に基づいて、前記所定領域に書き込まれた設定データのうち、最後に書き込まれた前記タグから所定数分遡った前記タグ以前の領域において、設定項目ごとの最新の設定データ以外の設定データを少なくとも消去するメモリ制御部、を備えてもよい。
【００１７】
上記情報処理装置において、前記メモリ制御部は、最後に書き込まれた前記タグから所定数分遡った前記タグ以降の各タグ間の領域のそれぞれにおいて、設定項目ごとの最新の設定データ以外の設定データを消去してもよい。
【００１８】
また、本発明の第２態様に係る情報処理装置の制御方法は、処理部が、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行するステップと、書き込み部が、前記ブート処理の期間内の所定のタイミングで、前記不揮発性メモリ内の前記所定領域に、当該タイミングに対応するタグを書き込むステップと、指示部が、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように指示するステップと、を有する。
【００１９】
また、本発明の第３態様に係るプログラムは、コンピュータに、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行するステップと、  前記ブート処理の期間内の所定のタイミングで、前記不揮発性メモリ内の前記所定領域に、当該タイミングに対応するタグを書き込むステップと、前記不揮発性メモリ内の前記所定領域に前記タグより以前に書き込まれた設定データを使用して前記ブート処理を実行するように指示するステップと、を実行させる。
【発明の効果】
【００２０】
本発明の上記態様によれば、ＢＩＯＳによる起動を簡便な方法で以前の設定に戻して行うことができる。
【図面の簡単な説明】
【００２１】
【図１】実施形態に係る情報処理装置の構成例を示すブロック図。
【図２】Ｆｌａｓｈメモリへのデータ書き込み制御の概念図。
【図３】タグが書き込まれている設定データ保存領域の一例を示す模式図。
【図４】ブート処理においてタグを書き込むタイミングを示す図。
【図５】Ｓｅｔｕｐ処理後の設定データ保存領域の一例を示す図。
【図６】前回のブート処理の設定に戻す場合の設定データの一例を示す図。
【図７】ＢＩＯＳ設定が変更される前の設定に戻す場合の設定データの一例を示す図。
【図８】複数回の起動により複数のタグが書き込まれている状態の一例を示す図。
【図９】実施形態に係るリカバリーモードにおける処理の概要を示す図。
【図１０】実施形態に係るリカバリーモード確認処理の一例を示すフローチャート。
【図１１】実施形態に係るリカバリーデータ収集処理の一例を示すフローチャート。
【図１２】実施形態に係るリカバリーデータ適用処理の一例を示すフローチャート。
【図１３】実施形態に係るガベージコレクション処理の一例を示すフローチャート。
【発明を実施するための形態】
【００２２】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
（情報処理装置１０の構成）
まず、本発明の第１の実施形態について説明する。
図１は、本実施形態に係る情報処理装置１０の構成例を示すブロック図である。情報処理装置１０は、例えば、パーソナルコンピュータである。情報処理装置１０は、デスクトップ型、ラップトップ型、タブレット型等いずれのパーソナルコンピュータであってもよい。例えば、情報処理装置１０は、通信部１１と、入力部１２と、表示部１３と、スピーカ１４と、制御部１５と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１６と、Ｆｌａｓｈメモリ１７とを備えている。これらの各部は、バスを介して通信可能に接続されている。
【００２３】
通信部１１は、例えば、複数のイーサネット（登録商標）ポートや複数のＵＳＢ等のデジタル入出力ポート、ＷｉＦｉ（登録商標）等の無線通信等を含んで構成される。
【００２４】
入力部１２は、パーソナルコンピュータ１００に設けられたキーボードやタッチパッド、電源ボタンなどの操作ボタン、または表示部１３の表示画面に対する操作を検出するタッチパネルなどに対するユーザの操作入力を受け付ける。なお、入力部１２は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などにより接続されるキーボードやマウスなど、外付けの操作デバイスに対するユーザの操作入力を受け付けてもよい。入力部１２は、受け付けた操作入力に基づく操作信号を出力する。
【００２５】
表示部１３は、映像、画像、テキスト等を表示するディスプレイであり、例えば、液晶ディスプレイパネル、有機ＥＬディスプレイパネルなどを含んで構成される。スピーカ１４は、電子音や音声などを出力する。
【００２６】
制御部１５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＥＣ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ）などを含んで構成される。制御部１５は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、または各種のアプリケーションなどのプログラムを実行することにより、ＢＩＯＳやＯＳなどのシステムをブート（起動）し、各種の演算及び処理などを行う。また、制御部１５は、ＲＡＭ１６、Ｆｌａｓｈメモリ１７などに対してデータの読み書きや消去などのメモリ制御を行う。
【００２７】
ＲＡＭ１６は、制御部１５が演算や制御、処理などを行うプログラムやデータが展開され、適宜、各種データの保存または消去が行われる。なお、ＲＡＭ１６は、揮発性メモリであるため、給電が停止されるとデータを保持できない。
【００２８】
Ｆｌａｓｈメモリ１７は、Ｆｌａｓｈ−ＲＯＭ（Ｒｅｓａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性メモリである。つまり、Ｆｌａｓｈメモリ１７は、給電が停止されでもデータを保持できる。例えば、Ｆｌａｓｈメモリ１７は、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）  Ｆｌａｓｈメモリである。例えば、Ｆｌａｓｈメモリ１７は、ＢＩＯＳのコードを保存する領域や、ＢＩＯＳの設定についての設定データを保存する領域、制御部１５が実行する処理に必要なデータを保存する領域など、複数のデータ領域に区分されている。以下では、ＢＩＯＳの設定データを保存する領域（以下、「設定データ保存領域」という）に関する制御について説明する。
【００２９】
設定データ保存領域には、ＢＩＯＳによるブート時の処理（例えば、ＰＯＳＴ（Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）処理）で使用する複数の設定項目についての設定データなどが保存される。一つの設定項目に対して、「Ｎａｍｅ」、「ＩＤ」、「内容（設定データ）」、及び「Ｓｔａｔｕｓ」が一つのブロックとして保存される。「Ｎａｍｅ」は、設定項目の名称を示すデータである。「ＩＤ」は、設定項目の識別情報である。「内容（設定データ）」は、設定の値である。「Ｓｔａｔｕｓ」は、そのデータが有効／無効であるかを示す。各ブロックは、時系列順に設定データ保存領域に保存される。設定データが書き込まれると「Ｓｔａｔｕｓ」が有効のブロックが追加され、同じ設定項目のブロックが以前に書き込まれている場合には、そのブロックの「Ｓｔａｔｕｓ」が無効に変更される。
【００３０】
図２は、Ｆｌａｓｈメモリ１７へのデータ書き込み制御の概念図である。図２の（ａ）〜（ｃ）に示す図は、Ｆｌａｓｈメモリ１７の設定データ保存領域に書き込まれているデータの状態を時系列の順に表している。なお、この図では簡易的に設定データ保存領域を１５ブロック分の領域とし、設定項目及び設定データをアルファベット及び数字で表している。また、設定データ保存領域の左上から右下に向かう方向の順にデータが書き込みされるものとする。以下、（ａ）〜（ｃ）に示す図の順に従って説明する。
【００３１】
（ａ）設定データ保存領域に何もデータが書き込まれていない状態（消去された状態）から、制御部１５の制御によりＡ及びＢの設定データとして「Ａ＝１」及び「Ｂ＝２」が書き込まれた状態を示している。書き込まれた最新の設定データ（現在の設定データ）が有効な設定データである。
【００３２】
（ｂ）次に、制御部１５は、Ａ及びＢの設定データを「Ａ＝２」及び「Ｂ＝０」に変更し、且つ新たにＣの設定データとして「Ｃ＝５」を書き込む場合、前回書き込んだ「Ａ＝１」及び「Ｂ＝２」を無効なデータとし（背景がハッチングされているブロック）、新たなブロックとして「Ａ＝２」及び「Ｂ＝０」、そして「Ｃ＝５」を書き込む。つまり、「Ａ＝２」、「Ｂ＝０」、及び「Ｃ＝５」が有効なデータとなる。
【００３３】
（ｃ）さらに、制御部１５は、Ａ及びＣの設定データを「Ａ＝０」及び「Ｃ＝３」に変更する場合、前回書き込んだ「Ａ＝２」及び「Ｃ＝５」を無効なデータとし、新たな領域（ページ）に「Ａ＝０」及び「Ｃ＝３」を書き込む。つまり、「Ａ＝０」、「Ｂ＝０」、及び「Ｃ＝３」が有効なデータとなる。
【００３４】
このように、Ｆｌａｓｈメモリ１７の特性により、同一の設定項目の設定データの更新は、前回書き込まれた設定データを無効にし、新たな領域に有効なデータが書き込まれることになる。つまり、最新（現在）の設定データのみではなく、過去に書き込まれた設定データも「Ｓｔａｔｕｓ」が無効に設定されているものの、データ自体は残っていることになる。制御部１５は、ＢＩＯＳによるブート処理が正常に終了しないなどのシステム障害が発生した場合、この過去に書き込まれた設定データを使用してリカバリー処理を実行する。
【００３５】
例えば、制御部１５は、ＢＩＯＳによるブート処理の期間内の所定のタイミングでタグをＦｌａｓｈメモリ１７の設定データ保存領域に書き込んでおく。タグとは、ブート処理の期間内の所定のタイミングを特定するためのしるし（マーカー）となるデータである。ＢＩＯＳの設定が変更されたことなどによりブート処理に異常が生じたときには、制御部１５は、この書き込んでおいたタグを手掛かりにして、過去にブート処理が正常に終了したときのＢＩＯＳの設定に戻すことが可能である。例えは、タグを書き込むタイミングは、ＢＩＯＳによるブート処理の終了タイミング（正常に終了したタイミング）である。
【００３６】
図３は、タグが書き込まれている設定データ保存領域の一例を示す模式図である。図示する設定データ保存領域Ｄ１０の符号ＴＧ１に示すブロックには、ＢＩＯＳによるブート処理の終了タイミングで「Ｂｏｏｔ」タグが書き込まれている。「Ｂｏｏｔ」タグは、ブートが正常に終了したことを示すタグである。「Ｂｏｏｔ」タグ以前において、背景が白のブロックが現時点で最新の設定データ（有効な設定データ）が書き込まれているブロックであり、背景がハッチングされているブロックが過去の設定データ（無効な設定データ）が書き込まれているブロックである。「Ｂｏｏｔ」タグ以降（現時点以降）のブロックは、データが書き込まれていない空き領域である。つまり、設定データ保存領域Ｄ１０に書き込まれている現時点でのＢＩＯＳの設定（Ｃｕｒｒｅｎｔ  Ｓｅｔｔｉｎｇ）は、符号Ｄ１１に示すように現時点での最新の設定データ（有効な設定データ）であり、この設定データを使用してＢＩＯＳによるブート処理が正常に終了したことを示している。そのため、この後にＢＩＯＳの設定を変更したことによりブート処理が正常に終了しなくなった場合、「Ｂｏｏｔ」タグを検索して、「Ｂｏｏｔ」タグが書き込まれている時点での最新の設定データ（「Ｂｏｏｔ」タグ以前の最新の設定データ）を使用してブート処理を正常に行なうことが可能となる。
【００３７】
次に、タグを書き込むタイミングについて詳しく説明する。図４は、ブート処理においてタグを書き込むタイミングを示す図である。この図は、情報処理装置１０の電源ボタンに対する操作等に応じて実行される起動処理の概要を示す図である。横軸が時間ｔである。時刻ｔ１０から時刻ｔ２０までがＢＩＯＳによるブート処理（ＢＩＯＳ  ｂｏｏｔ）の期間であり、ＢＩＯＳによるブート処理が正常に終了すると、ＯＳによるブート処理（ＯＳ  ｂｏｏｔ）が実行される。制御部１５は、上述したように、ＢＩＯＳによるブート処理の終了タイミング（時刻ｔ２０）で、「Ｂｏｏｔ」タグを設定データ保存領域に書き込む。
【００３８】
また、タグを書き込むタイミングには、ブート処理の終了タイミングに代えてまたは加えて他のタイミングが含まれてもよい。図４に示すように、制御部１５は、ＢＩＯＳによるブート処理を、ＳＥＣ（Ｓｅｃｕｒｉｔｙ）、ＰＥＩ（Ｐｒｅ  ＥＦＩ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ）、ＤＸＥ（Ｄｒｉｖｅｒ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ）、ＢＤＳ（Ｂｏｏｔ  Ｄｅｖｉｃｅ  Ｓｅｌｅｃｔ）の順に実行する。また、ＤＸＥ処理の期間に特定の操作がされると、制御部１５は、Ｓｅｔｕｐ処理（セットアップ処理）を実行する。Ｓｅｔｕｐ処理は、ＢＩＯＳの設定（ブート処理に使用する設定データ）をユーザが変更するときに実行される処理である。制御部１５は、入力部１２から出力された操作信号に基づいて、Ｓｅｔｕｐ処理を開始すると、Ｓｅｔｕｐ画面を表示部１３に表示させる。そして、制御部１５は、Ｓｅｔｕｐ画面に対するユーザの操作に基づいてＢＩＯＳの設定が変更された場合、変更された設定に基づく設定データを設定データ保存領域に書き込む。また、Ｓｅｔｕｐ画面における操作が終了すると、制御部１５は、Ｓｅｔｕｐ画面の表示を終了させ、再起動により最新の設定データを使用したブート処理を実行する。
【００３９】
例えば、制御部１５は、ＤＸＥ処理の開始タイミングで「Ｓｔａｒｔ」タグを設定データ保存領域に書き込んでもよい。ＤＸＥ処理の開始タイミングは、Ｆｌａｓｈメモリ１７へのデータの書き込みが可能になるタイミングに相当する。また、制御部１５は、Ｓｅｔｕｐ処理の開始タイミングで「Ｓｅｔｕｐ」タグを設定データ保存領域に書き込んでもよい。また、制御部１５は、ＢＤＳ処理の開始タイミングで「ＢＤＳ」タグを設定データ保存領域に書き込んでもよい。
【００４０】
タグには、書き込まれたタイミングに対応する情報（Ｓｔａｒｔ、Ｓｅｔｕｐ、Ｂｏｏｔなど）、そのタイミングの日時情報（タイムスタンプ）などが含まれる。例えば、同じ種類のタグが複数書き込まれている場合、同じ種類のタグのそれぞれを日時情報に基づいて区別することが可能である。
【００４１】
次に、図５及び図６を参照して、ユーザがＳｅｔｕｐ画面でＢＩＯＳの設定を変更した後に、前回のＢＩＯＳのブート処理を実行したときの設定に戻す（リカバリーする）例を説明する。図５は、Ｓｅｔｕｐ画面でＢＩＯＳの設定を変更したときのＳｅｔｕｐ処理後の設定データ保存領域の一例を示す図である。図示する設定データ保存領域Ｄ２０の符号ＴＧ２に示すブロックには、Ｓｅｔｕｐ処理の開始タイミングで「Ｓｅｔｕｐ」タグが書き込まれている。「Ｓｅｔｕｐ」タグ以降に書き込まれているブロックの設定データは、Ｓｅｔｕｐ画面に対するユーザの操作によりＳｅｔｕｐ処理で変更された最新の設定データ（有効な設定データ）である。変更された設定項目の過去に書き込まれた設定データは無効に設定され、変更されていない設定項目の過去に書き込まれた設定データのうち最新の設定データ（図示の「Ｋ＝０ｘ０Ａ」）は有効のままである。つまり、設定データ保存領域Ｄ２０に書き込まれている現時点でのＢＩＯＳの設定（Ｃｕｒｒｅｎｔ  Ｓｅｔｔｉｎｇ）は、符号Ｄ２１に示すように現時点での最新の設定データ（有効な設定データ）である。また、符号ＴＧ１に示すブロックには、「Ｓｅｔｕｐ」タグが書き込まれる以前に実行されたＢＩＯＳによるブート処理の終了タイミングで「Ｂｏｏｔ」タグが書き込まれている。
【００４２】
例えば、このＳｅｔｕｐ画面に対するユーザの操作により変更された設定データを使用したブート処理が正常に終了しなかった場合、制御部１５は、変更前のＢＩＯＳの設定を使用してリカバリーする。具体的には、制御部１５は、「Ｓｅｔｕｐ」タグ以前に書き込まれている「Ｂｏｏｔ」タグを検索し、「Ｂｏｏｔ」タグ以前の最新の設定データを使用する（即ち、前回の正常終了したブート処理の設定に戻す）。
【００４３】
図６は、前回のブート処理の設定に戻す場合の設定データ保存領域における設定データの一例を示す図である。この図では、図５に示す設定データ保存領域Ｄ２０において、「Ｂｏｏｔ」タグ以前の最新の設定データ（即ち、前回のブート時の設定データ）が書き込まれているブロックを太枠で示している。符号Ｄ２２に示すように前回のブート時のＢＩＯＳの設定（Ｂｏｏｔ時  Ｓｅｔｔｉｎｇ）は、この太枠で示すブロックに書き込まれている設定データである。制御部１５は、リカバリー処理を行なう際には、図５の符号Ｄ２１に示す現時点でのＢＩＯＳの設定（Ｃｕｒｒｅｎｔ  Ｓｅｔｔｉｎｇ）を使用せずに、図６の符号Ｄ２２に示す前回のブート時のＢＩＯＳの設定（Ｂｏｏｔ時  Ｓｅｔｔｉｎｇ）を使用してブート処理を実行する。
【００４４】
例えば、制御部１５は、図６に示す設定データ保存領域において、「Ｓｅｔｕｐ」タグ以降に書き込まれているブロックの設定データを無効にし、その後の領域に、「Ｂｏｏｔ」タグ以前の太枠で示すブロックに書き込まれている前回のブート時の設定データを、あらたに有効なデータとして書き込む。その後、制御部１５は、再起動（リブート）させることで、前回のブート時の設定データを使用して、ＢＩＯＳによるブート処理を実行することができる。
【００４５】
なお、制御部１５は、変更前のＢＩＯＳの設定を使用してリカバリーする際に、Ｓｅｔｕｐ」タグ以前の最新の設定データを使用してもよい（即ち、Ｓｅｔｕｐ画面に対するユーザの操作によりＢＩＯＳの設定が変更される前の設定に戻してもよい）。
【００４６】
図７は、ＢＩＯＳの設定が変更される前の設定に戻す場合の設定データ保存領域における設定データの一例を示す図である。この図では、図５に示す設定データ保存領域Ｄ２０において、「Ｓｅｔｕｐ」タグ以前の最新の設定データ（即ち、Ｓｅｔｕｐ処理前の設定データ）が書き込まれているブロックを太枠で示している。符号Ｄ２３に示すようにＳｅｔｕｐ処理前のＢＩＯＳの設定（Ｓｅｔｕｐ前  Ｓｅｔｔｉｎｇ）は、この太枠で示すブロックに書き込まれている設定データである。制御部１５は、リカバリー処理を行なう際には、図５の符号Ｄ２１に示す現時点でのＢＩＯＳの設定（Ｃｕｒｒｅｎｔ  Ｓｅｔｔｉｎｇ）を使用せずに、図７の符号Ｄ２３に示すＳｅｔｕｐ処理前のＢＩＯＳの設定（Ｂｏｏｔ時  Ｓｅｔｔｉｎｇ）を使用してブート処理を実行する。
【００４７】
例えば、制御部１５は、図７に示す設定データ保存領域において、「Ｓｅｔｕｐ」タグ以降に書き込まれているブロックの設定データを無効にし、その後の領域に、「Ｓｅｔｕｐ」タグ以前の太枠で示すブロックに書き込まれているＳｅｔｕｐ処理前の設定データを、あらたに有効なデータとして書き込む。その後、制御部１５は、再起動（リブート）させることで、Ｓｅｔｕｐ処理前の設定データを使用して、ＢＩＯＳによるブート処理を実行することができる。
【００４８】
（制御部１５の構成）
次に、制御部１５の機能構成について詳細に説明する。
図１に戻り、制御部１５は、動作制御部１５１と、処理部１５２と、書き込み部１５３と、指示部１５４と、メモリ制御部１５５と、表示制御部１５６とを備えている。
【００４９】
動作制御部１５１は、入力部１２から出力される操作信号を取得し、取得した操作信号に基づいて、起動やシャットダウン、及びスタンバイへの遷移、スタンバイからの復帰などの指示を行う。例えば、電源ＯＦＦの状態で電源ボタンに対する操作入力が入力部１２に入力されると、動作制御部１５１は、起動の指示を処理部１５２へ受け渡す。
【００５０】
処理部１５２は、ＢＩＯＳによるブート処理、ＯＳによるブート処理、ブート後のＯＳによる各種処理、ＯＳ上で動作するアプリケーションの処理などを、それぞれのプログラムに基づいて実行する。処理部１５２は、各処理に応じた表示情報を表示部１３に表示する際には、その旨を表示制御部１５６へ指示する。また、処理部１５２は、上記の各処理の実行中に、Ｆｌａｓｈメモリ１７へのデータの書き込みや消去を必要に応じて行う。
【００５１】
例えば、処理部１５２は、図２を参照して説明したように、ＢＩＯＳによるブート処理で使用する設定データを、変更された順（時系列順）にＦｌａｓｈメモリ１７内の設定データ保存領域にブロック単位で書き込み、同じ設定項目のブロックが以前に書き込まれている場合には、そのブロックの「Ｓｔａｔｕｓ」を無効に変更する（そのブロックの設定データを無効にする）。そして、処理部１５２は、設定データ保存領域に書き込んだ設定データ（有効な設定データ）を使用してＢＩＯＳによるブート処理を実行する。
【００５２】
書き込み部１５３は、ＢＩＯＳによるブート処理の期間内の所定のタイミングで、Ｆｌａｓｈメモリ１７内の設定データ保存領域に、当該タイミングに対応するタグを書き込む。例えば、タグを書き込む所定のタイミングには、ＢＩＯＳによるブート処理の終了タイミングが含まれる。書き込み部１５３は、ＢＩＯＳによるブート処理の終了タイミングで「Ｂｏｏｔ」タグを設定データ保存領域に書き込む。また、タグを書き込む所定のタイミングには、Ｆｌａｓｈメモリ１７にデータを書き込み可能となるタイミングが含まれてもよい。例えば、書き込み部１５３は、Ｆｌａｓｈメモリ１７にデータを書き込み可能となるタイミングで「Ｓｔａｒｔ」タグを設定データ保存領域に書き込む。また、タグを書き込む所定のタイミングには、Ｓｅｔｕｐ処理の開始タイミングが含まれてもよい。例えば、書き込み部１５３は、Ｓｅｔｕｐ処理の開始タイミングで「Ｓｅｔｕｐ」タグを設定データ保存領域に書き込む。
【００５３】
なお、タグを書き込む所定のタイミングには、ＢＤＳ処理の開始タイミングが含まれてもよい。例えば、書き込み部１５３は、ＢＤＳ処理の開始タイミングで「ＢＤＳ」タグを設定データ保存領域に書き込む。
【００５４】
書き込み部１５３は、Ｆｌａｓｈメモリ１７内の設定データ保存領域にタグ（例えば、「Ｂｏｏｔ」タグ、「Ｓｅｔｕｐ」タグなど）より以前に書き込まれた設定データの少なくとも一部をブート処理に使用する設定データとして、最後に書き込まれた設定データの後に書き込む。例えば、書き込み部１５３は、リカバリー処理において、設定データ保存領域内の最新設定データを無効にし、その後の領域に、「Ｂｏｏｔ」タグまたは「Ｓｅｔｕｐ」タグ以前の設定項目ごとの最新の設定データ（即ち、前回のブート時の設定データまたはＳｅｔｕｐ処理前の設定データ）を、あらたに有効なデータとして書き込む。
【００５５】
指示部１５４は、リカバリー処理において、書き込み部１５３が「Ｂｏｏｔ」タグまたは「Ｓｅｔｕｐ」タグ以前の設定項目ごとの最新の設定データ（即ち、前回のブート時の設定データまたはＳｅｔｕｐ処理前の設定データ）を、あらたに有効なデータとして書き込んだ後、リブートを指示する。つまり、指示部１５４は、Ｆｌａｓｈメモリ１７内の設定データ保存領域にタグ（例えば、「Ｂｏｏｔ」タグ、「Ｓｅｔｕｐ」タグなど）より以前に書き込まれた設定データを使用してブート処理を実行するように処理部１５２に指示する。例えば、指示部１５４は、設定データ保存領域にタグ（例えば、「Ｂｏｏｔ」タグ、「Ｓｅｔｕｐ」タグなど）より以前に書き込まれた設定データのうち設定項目ごとの最新の設定データを使用してブート処理を実行するように処理部１５２に指示する。これにより、現在の設定データを使用してブート処理が正常に終了しない場合に、以前の設定データを使用してブート処理を再実行することでリカバリーすることができる。
【００５６】
ここで、上述したリカバリー処理を実行する動作モードのことを、「リカバリーモード」と称する。例えば、制御部１５は、ユーザの操作をトリガとしてリカバリーモードへ遷移させる。リカバリーモードへ遷移させるトリガとなるユーザの操作とは、例えば、ＢＩＯＳによるブート処理が開始されてからの所定の期間においてキーボードの特定のキーに対する操作である。指示部１５４は、ユーザの操作に基づいて、設定データ保存領域にタグ（例えば、「Ｂｏｏｔ」タグ、「Ｓｅｔｕｐ」タグなど）より以前に書き込まれた設定データを使用してブート処理を実行するように処理部１５２に指示する。
【００５７】
図８は、複数回の起動により設定データ保存領域に複数のタグが書き込まれている状態の一例を示す図である。ある「Ｓｔａｒｔ」タグから次の「Ｓｔａｒｔ」タグの前までが、１回のブート処理の中で変更された設定データである。各タグも設定データと同様に、ブート処理毎に書き込まれる。制御部１５は、各タグが書き込まれている時点での最新の設定データにリカバリーすることができる。この図に示す例では、ある「Ｓｔａｒｔ」タグから次の「Ｓｔａｒｔ」タグとの間に、「Ｓｅｔｕｐ」タグまたは「Ｂｏｏｔ」タグが書き込まれている。「Ｓｅｔｕｐ」タグが書き込まれているのはブート処理中にＳｅｔｕｐ処理に遷移したことを示している。Ｓｅｔｕｐ処理に遷移した場合には、Ｓｅｔｕｐ処理の終了後に再起動されるため、次に書き込まれるタグは、「Ｓｔａｒｔ」タグとなる。「Ｂｏｏｔ」タグが書き込まれているのはブート処理が正常に終了したことをしており、その次に書き込まれるタグは、次回の起動時の「Ｓｔａｒｔ」タグとなる。このように、ＢＩＯＳのブート処理に異常が生じていない場合には、ある「Ｓｔａｒｔ」タグと次の「Ｓｔａｒｔ」タグとの間に他のタグが書き込まれる。一方、複数の「Ｓｔａｒｔ」タグが連続して書き込まれた場合には、ブート処理が正常に終了することなく且つＳｅｔｕｐ処理に遷移もせずに、繰り返し起動されていることになるため、システムの起動に異常が生じているものと判断できる。
【００５８】
そこで、制御部１５は、設定データ保存領域に書き込まれた複数の「Ｓｔａｒｔ」タグが複数回（例えば、２回）連続して書き込まれていることを条件として、リカバリーモードへ遷移させてもよい。即ち、制御部１５は、設定データ保存領域に書き込まれた複数のタグの種類及び連続性に基づいて、リカバリーモードへ遷移させるか否かを自動で判定してもよい。例えば、指示部１５４は、設定データ保存領域に書き込まれた複数のタグの種類及び連続性に基づいて、設定データ保存領域にタグより以前に書き込まれた設定データを使用してブート処理を実行するように処理部１５２に指示する。
【００５９】
なお、リカバリーモードへ遷移させる条件として、複数のタグの種類及び連続性に基づく条件とユーザの操作に基づく条件との両方を含めてもよい。例えば、制御部１５は、設定データ保存領域に書き込まれた複数の「Ｓｔａｒｔ」タグが連続して書き込まれていること、及びリカバリーモードへ遷移させるトリガとなるユーザの操作がされたことの両方の条件が満たされた場合に、リカバリーモードへ遷移させてもよい。
【００６０】
メモリ制御部１５５は、Ｆｌａｓｈメモリ１７の設定データ保存領域の残量が少なくなってきたときに、当該設定データ保存領域に対してガベージコレクションを実行する。ガベージコレクションとは、設定データ保存領域に書き込まれているデータのうち処理に不要なデータを消去する処理である。例えば、設定データ保存領域へデータの書き込みを続けると、設定データ保存領域内に無効なデータが増え、書き込み済みの領域が増加する。これにより、新たに書き込める空き領域が少なくなり残量が減少する。設定データ保存領域がほぼ容量いっぱい（Ａｌｍｏｓｔ  Ｆｕｌｌ）になった場合（空き領域が不足しそうな場合）、メモリ制御部１５５は、ガベージコレクションを実行することにより空き領域を増加させる。具体的には、メモリ制御部１５５は、設定データ保存領域に書き込まれているデータのうち処理に必要なデータを設定データ保存領域以外のデータ領域に一旦保存してから設定データ保存領域に書き込まれている全てのデータを消去し、消去後に、一旦保存しておいた処理に必要なデータを設定データ保存領域に書き込む（書き戻す）。
【００６１】
例えば、メモリ制御部１５５は、設定データ保存領域の書き込み可能な領域の残量に基づいて、設定データ保存領域に書き込まれた設定データのうち、最後に書き込まれたタグから所定数分遡ったタグ（予め設定した最古のタグ）以前の領域において、設定項目ごとの最新の設定データ以外の設定データを少なくとも消去する。また、メモリ制御部１５５は、最後に書き込まれたタグから所定数分遡ったタグ以降の各タグ間の領域において、設定項目ごとの最新の設定データ以外の設定データを消去する。これにより、設定データ保存領域の残量が少なくなってきた場合に、リカバリーに使用可能な設定データを残しつつ、設定データ保存領域の書き込み可能な空き領域を確保することができる。
【００６２】
なお、メモリ制御部１５５は、ガベージコレクションを実行するか否かを、設定データ保存領域の書き込み可能な領域の残量が予め設定された閾値未満であるか否かに基づいて判定してもよい。また、メモリ制御部１５５は、設定データ保存領域の書き込み可能な領域の残量が予め設定された閾値未満であるか否かを、設定データ保存領域に書き込まれたデータ量が予め設定された閾値以上であるか否かに基づいて判定してもよい。
【００６３】
表示制御部１５６は、処理部１５２による処理に基づいて、表示部１３に表示する各種の表示情報を出力する。また、表示制御部１５６は、処理部１５２からの指示に基づいて、表示情報の出力のＯＮ／ＯＦＦ（即ち、画面のＯＮ／ＯＦＦ）を制御する。なお、表示部１３がバックライトを用いた液晶ディスプレイパネルを含んで構成されている場合、表示情報の出力のＯＮ／ＯＦＦの制御にはバックライトのＯＮ／ＯＦＦの制御も含まれる。
【００６４】
（リカバリーモードの処理の動作）
次に、制御部１５が実行するリカバリーモードの処理の動作について説明する。
図９は、本実施形態に係るリカバリーモードにおける処理の概要を示す図である。この図では、図４に示すブート処理を基準にリカバリーモードの処理の例を示している。制御部１５は、ＢＩＯＳによるブート処理を開始すると（時刻ｔ１０）、リカバリーモードに遷移させるトリガの有無（リカバリーモードに遷移させるか否か）を確認するリカバリーモード確認処理（ステップＳ１００）を実行する。リカバリーモードに遷移させるトリガあった場合、制御部１５は、リカバリーに使用する設定データ（リカバリーデータ）を収集するリカバリーデータ収集処理（Ｓ１２０）を実行する。次に、制御部１５は、収集した設定データ（リカバリーデータ）をブート処理に使用する有効な設定データとして適用するリカバリーデータ適用処理（Ｓ１４０）を実行する。ここで、制御部１５は、収集した設定データを有効な設定データとして設定データ保存領域に書き込んだ後、設定データをリカバリーしたことを示す「Ｒｅｃｏｖｅｒｅｄ」タグを書き込む。そして、制御部１５は、制御部１５は、適用した設定データ（リカバリーデータ）を使用して、システムを再起動（リブート）させる（Ｓ１６０）。
【００６５】
続いて、リカバリーモードの各処理について詳しく説明する。まず、図９のステップＳ１００のリカバリーモード確認処理の動作について説明する。
図１０は、本実施形態に係るリカバリーモード確認処理の一例を示すフローチャートである。
（ステップＳ１０１）制御部１５は、ＢＩＯＳによるブート処理の開始後にリカバリーモードのトリガが入力されると、ステップＳ１０３の処理に進む。上記トリガは、ユーザの特定の操作がされたこと、「Ｓｔａｒｔ」タグが複数回（例えば、２回）連続して書き込まれていること、またはその両方などである。
【００６６】
（ステップＳ１０３）制御部１５は、設定データ保存領域内に書き込まれているタグを、最後に書き込んだブロックから過去に遡る順に検索する。そして、ステップＳ１０５の処理に進む。
【００６７】
（ステップＳ１０５）制御部１５は、ステップＳ１０３においてタグを検索した結果に基づいて、「Ｒｅｃｏｖｅｒｅｄ」タグが最初に見つかったか否かを判定する。制御部１５は、「Ｒｅｃｏｖｅｒｅｄ」タグが最初に見つかったと判定した場合（ＹＥＳ）、前回の起動時にリカバリーが実行された状態であるため、リカバリー処理を実行しないでリカバリーモードを終了する。この場合、制御部１５は、そのままブート処理を継続してもよいし、再起動させてもよい。一方、制御部１５は、最初に見つかったタグが「Ｒｅｃｏｖｅｒｅｄ」タグではなかった場合（ＮＯ）、ステップＳ１０７の処理に進む。
【００６８】
（ステップＳ１０７）制御部１５は、ステップＳ１０３においてタグを検索した結果に基づいて、リカバリーに使用できるタグが見つかったか否かを判定する。リカバリーに使用できるタグとは、例えば、「Ｂｏｏｔ」タグ、「Ｓｅｔｕｐ」タグなどである。リカバリーに使用できるタグは、予め１種類のタグに決められていてもよいし、複数種類の中から予め設定された優先順位に基づいて選択されてもよい。予め設定された優先順位とは、例えば、検索された順番に基づく優先順位であってもよいし（例えば、リカバリーに使用できるタグのうち最初に見つかったタグを優先など）、種類に基づく優先順位であってもよい（例えば、「Ｂｏｏｔ」タグと「Ｓｅｔｕｐ」タグの両方が見つかった場合には、「Ｂｏｏｔ」タグを優先など）。制御部１５は、リカバリーに使用できるタグが見つからないと判定した場合（ＮＯ）、リカバリー処理を実行しないでリカバリーモードを終了する。この場合、制御部１５は、そのままブート処理を継続してもよいし、再起動させてもよい。一方、制御部１５は、リカバリーに使用できるタグが見つかったと判定した場合（ＹＥＳ）、ステップＳ１２０（図９参照）のリカバリーデータ収集処理に進む。
【００６９】
図１１は、本実施形態に係るリカバリーデータ収集処理の一例を示すフローチャートである。ここでは、リカバリーに使用できるタグが「Ｂｏｏｔ」タグであるものとして説明する。
（ステップＳ１２１）制御部１５は、リカバリーするための「Ｂｏｏｔ」タグを検索し、ステップＳ１２３の処理に進む。
（ステップＳ１２３）制御部１５は、「Ｂｏｏｔ」タグ以前の最新の設定データを、リカバリーに使用する設定データとして収集し、ステップＳ１４０（図９参照）のリカバリーデータ適用処理に進む。
【００７０】
図１２は、本実施形態に係るリカバリーデータ適用処理の一例を示すフローチャートである。
（ステップＳ１４１）制御部１５は、リカバリーデータ収集処理で収集された「Ｂｏｏｔ」タグ以前の最新の設定データ（リカバリーデータ）を設定データ保存領域に書き込む。そして、ステップＳ１４３の処理に進む。
【００７１】
（ステップＳ１４３）制御部１５は、「Ｒｅｃｏｖｅｒｅｄ」タグを設定データ保存領域に書き込む。そして、ステップＳ１４５の処理に進む。
（ステップＳ１４５）制御部１５は、リカバリーしたことを示すメッセージを表示部１３に表示させる。そして、ステップＳ１４７の処理に進む。
（ステップＳ１４７）制御部１５は、システムの再起動を指示する。
【００７２】
これにより、制御部１５は、図９のステップＳ１６０の処理に進み、「Ｂｏｏｔ」タグ以前の最新の設定データ（リカバリーデータ）を使用してシステムを再起動させる（ブート処理を実行する）。つまり、制御部１５は、前回の正常にブート処理が終了した時のＢＩＯＳの設定を使用して再起動することによりリカバリーする。
【００７３】
（ガベージコレクションの処理の動作）
次に、制御部１５が実行するガベージコレクションの処理の動作について説明する。
図１３は、本実施形態に係るガベージコレクション処理の一例を示すフローチャートである。
【００７４】
（ステップＳ２０１）制御部１５は、設定データ保存領域内の最後に書き込まれたタグから所定数分遡ったタグ（予め設定した最古のタグ）以前での最新の設定データとタグデータを読み出して、設定データ保存領域以外のＦｌａｓｈメモリ１７のデータ領域に一旦保存して退避させる。このとき、制御部１５は、元々書き込まれていた順に従って、読み出した設定データとタグデータを保存する。そして、ステップＳ２０３の処理に進む。
【００７５】
（ステップＳ２０３）制御部１５は、設定データ保存領域内の予め設定した最古のタグ以降の各タグ間の最新の設定データ及びタグデータを読み出して、設定データ保存領域以外のＦｌａｓｈメモリ１７のデータ領域に一旦保存して退避させる。このとき、制御部１５は、元々書き込まれていた順に従って、読み出した設定データとタグデータを保存する。そして、ステップＳ２０５の処理に進む。
【００７６】
（ステップＳ２０５）制御部１５は、データ保存領域内の全てのデータを消去し、ステップＳ２０７の処理に進む。
（ステップＳ２０７）制御部１５は、退避しておいた設定データ及びタグデータを、保存したあった順に従って設定データ保存領域に書き込む（書き戻す）。
【００７７】
以上説明したように、本実施形態に係る情報処理装置１０は、処理部１５２と、書き込み部１５３と、指示部１５４とを備えている。処理部１５２は、ＢＩＯＳによるブート処理で使用する設定データを、変更された順に従ってＦｌａｓｈメモリ１７（不揮発性メモリの一例）内の設定データ保存領域（所定領域の一例）に書き込むとともに、当該設定データを使用してＢＩＯＳによるブート処理を実行する。書き込み部１５３は、ＢＩＯＳによるブート処理の期間内の所定のタイミングで、Ｆｌａｓｈメモリ１７内の設定データ保存領域に、当該タイミングに対応するタグを書き込む。指示部１５４は、Ｆｌａｓｈメモリ１７内の設定データ保存領域に上記タグより以前に書き込まれた設定データを使用してＢＩＯＳによるブート処理を実行するように処理部１５２に指示する。
【００７８】
これにより、情報処理装置１０は、ＢＩＯＳによるブート処理の期間内に所定のタイミングで書き込みしたタグを利用して、ＢＩＯＳによる起動を簡便に以前の設定に戻して行うことができる。そのため、ユーザは、リカバリー用として設定を保存するための作業を自ら行うといった煩わしい作業を必要としない。例えば、情報処理装置１０は、現在の設定データを使用してブート処理が正常に終了しない場合（例えば、システム障害が発生した場合）に、以前の設定データを使用してブート処理を再実行することでリカバリーすることができる。また、従来スナップショットでＢＩＯＳの設定データを保存する場合には、大きな容量の記憶装置が必要であるため、付加記憶装置が必要となる場合もある。付加記憶装置に設定情報を保存した場合には、少なくとも付加記憶装置にアクセス可能な段階までは起動する必要があり、状況によってはリカバリーできないこともあり得る。本実施形態によれば、Ｆｌａｓｈメモリ１７に保存されている過去の設定データ（無効なデータ）を利用するため、付加記憶装置を必要とせず低コストで実現できるとともに、付加記憶装置にアクセス可能な段階までブート処理が進まなくてもリカバリーすることができる。
【００７９】
例えば、上記所定のタイミングには、ＢＩＯＳによるブート処理の終了タイミングが含まれる。例えば、情報処理装置１０は、ＢＩＯＳによるブート処理の終了タイミングで「Ｂｏｏｔ」タグを設定データ保存領域に書き込む。
【００８０】
これにより、情報処理装置１０は、現在の設定データを使用してブート処理が正常に終了しない場合（例えば、システム障害が発生した場合）、以前（例えば、前回）に正常にブート処理が終了したときのＢＩＯＳの設定に戻してブート処理を実行することができる。
【００８１】
例えば、上記所定のタイミングには、Ｆｌａｓｈメモリ１７にデータを書き込み可能となるタイミングが含まれる。例えば、情報処理装置１０は、Ｆｌａｓｈメモリ１７にデータを書き込み可能となるタイミングで「Ｓｔａｒｔ」タグを設定データ保存領域に書き込む。
【００８２】
これにより、情報処理装置１０は、設定データ保存領域において、「Ｓｔａｒｔ」タグから次の「Ｓｔａｒｔ」タグまでが１回のシステムの起動で変更された設定データであることが分かる。例えば、情報処理装置１０は、「Ｓｔａｒｔ」タグを利用して、以前（例えば、前回）のブート処理で使用したＢＩＯＳの設定に戻してブート処理を実行することもできる。
【００８３】
また、ＢＩＯＳによるブート処理には、当該ブート処理に使用する設定データをユーザが変更可能なセットアップ処理が含まれ、上記所定のタイミングには、Ｓｅｔｕｐ（セットアップ）処理の開始タイミングが含まれる。
【００８４】
これにより、情報処理装置１０は、ユーザがＢＩＯＳの設定を変更したことによりブート処理が正常に終了しなくなった場合（例えば、システム障害が発生した場合）、変更前のＢＩＯＳの設定に戻してブート処理を実行することができる。
【００８５】
例えば、指示部１５４は、Ｆｌａｓｈメモリ１７内の設定データ保存領域に上記タグより以前に書き込まれた設定データのうち設定項目ごとの最新の設定データを使用してＢＩＯＳによるブート処理を実行するように処理部１５２に指示する。
【００８６】
これにより、情報処理装置１０は、ＢＩＯＳによるブート処理の期間内に所定のタイミングで書き込みしたタグを利用して、簡便に当該タグ以前の最新の設定に戻してＢＩＯＳによる起動を行うことができる。
【００８７】
書き込み部１５３は、Ｆｌａｓｈメモリ１７内の設定データ保存領域に上記タグより以前に書き込まれた設定データの少なくとも一部を、ＢＩＯＳによるブート処理に使用する設定データとして、最後に書き込まれた設定データの後に書き込む。
【００８８】
これにより、情報処理装置１０は、以前にブート処理に使用した無効な設定データを、最新の有効な設定データとしてブート処理に使用可能にすることができる。
【００８９】
指示部１５４は、ユーザの操作に基づいて、Ｆｌａｓｈメモリ１７内の設定データ保存領域に上記タグより以前に書き込まれた設定データを使用してＢＩＯＳによるブート処理を実行するように処理部１５２に指示する。
【００９０】
これにより、情報処理装置１０は、ユーザがリカバリーモードで起動したい場合に、ユーザの操作をトリガとして、リカバリーモードで起動させることができる。
【００９１】
指示部１５４は、Ｆｌａｓｈメモリ１７内の設定データ保存領域に書き込まれた複数の上記タグの種類及び連続性に基づいて、設定データ保存領域に上記タグより以前に書き込まれた設定データを使用してＢＩＯＳによるブート処理を実行するように処理部１５２に指示する。例えば、指示部１５４は、複数の「Ｓｔａｒｔ」タグが複数回（例えば、２回）連続して書き込まれていることを条件として、以前に書き込まれた設定データを使用してＢＩＯＳによるブート処理を実行するように指示する。
【００９２】
これにより、情報処理装置１０は、ブート処理が正常に終了しない場合（例えば、システム障害が発生した場合）、そのことを自動で検出して、以前に書き込まれた設定データを使用してＢＩＯＳによるブート処理を実行させることができる。
【００９３】
また、設定データ保存領域に複数のタグが書き込まれている場合、ユーザがどの時点の設定に戻すかを選択可能なようにしてもよい。例えば、情報処理装置１０は、どの時点の設定に戻すかを選択可能なように、複数のタグのそれぞれが書き込まれた日時情報とタグに対応する処理の内容（「Ｂｏｏｔ」、「Ｓｅｔｕｐ」など）とが関連付けられた選択肢が表示される選択画面を表示部１３に表示させてもよい。そして、情報処理装置１０は、ユーザの操作に基づいて選択された選択肢のタグより以前の最新の設定データを使用して、ブート処理を実行してもよい。例えば、指示部１５４は、Ｆｌａｓｈメモリ１７内の設定データ保存領域に書き込まれた複数の上記タグのうちユーザに選択された上記タグより以前に書き込まれた設定データを使用してＢＩＯＳによるブート処理を実行するように処理部１５２に指示する。
【００９４】
これにより、情報処理装置１０は、ＢＩＯＳの設定をどの時点の設定に戻すかをユーザが選択できるため、ユーザが所望する設定でシステムを起動させることができる。
【００９５】
また、情報処理装置１０は、メモリ制御部１５５を備えている。メモリ制御部１５５は、Ｆｌａｓｈメモリ１７内の設定データ保存領域の書き込み可能な領域の残量に基づいて、設定データ保存領域に書き込まれた設定データのうち、最後に書き込まれたタグから所定数分遡ったタグ以前の領域において、設定項目ごとの最新の設定データ以外の設定データを少なくとも消去する。
【００９６】
これにより、情報処理装置１０は、最新の有効な設定データを残すのみではなく、リカバリーデータも残しつつ不要なデータを消去することができるため、リカバリー処理が可能な状態を維持しながら、Ｆｌａｓｈメモリ１７内の設定データ保存領域の容量がいっぱいになって空き領域が不足してしまうことを防止することができる。
【００９７】
メモリ制御部１５５は、最後に書き込まれたタグ（最新のタグ）から所定数分遡ったタグ以降の各タグ間の領域のそれぞれにおいて、設定項目ごとの最新の設定データ以外の設定データを消去する。なお、メモリ制御部１５５は、最後に書き込まれたタグ（最新のタグ）以降の領域に設定データが書き込まれている場合には、当該領域において、設定項目ごとの最新の設定データ以外の設定データを消去してもよい。
【００９８】
これにより、情報処理装置１０は、最新の有効な設定データを残すのみではなく、リカバリーデータも残しつつ不要なデータを消去することができるため、リカバリー処理が可能な状態を維持しながら、Ｆｌａｓｈメモリ１７内の設定データ保存領域の容量がいっぱいになって空き領域が不足してしまうことを防止することができる。
【００９９】
以上、図面を参照してこの発明の実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。例えば、上記実施形態で説明した構成は、任意に組み合わせてもよい。
【０１００】
上記実施形態では、複数の種類のタグを利用する例を説明したが、少なくとも一種類のタグを用いてもよい。
【０１０１】
また、上記実施形態で説明したリカバリーモードの処理は、ブート処理が正常に終了しない場合（例えば、システム障害が発生した場合）に限らず、ブート処理が正常に終了する状況であっても、以前の設定に戻してブート処理を実行したい場合に適用することができる。
【０１０２】
また、上記実施形態では、情報処理装置１０は、Ｆｌａｓｈメモリ１７の設定データ保存領域へのデータの書き込み状態（例えば、残量）に基づいてガベージコレクションを実行したが、設定データ保存領域へのデータの書き込み状態にかかわらず、一定の周期または予め設定されたタイミングでガベージコレクションを実行してもよい。
【０１０３】
なお、上述した情報処理装置１０は、内部にコンピュータシステムを有している。そして、上述した情報処理装置１０が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した情報処理装置１０が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。
【０１０４】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に情報処理装置１０が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【０１０５】
また、上述した実施形態における情報処理装置１０が備える各機能の一部、または全部を、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の集積回路として実現してもよい。各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【０１０６】
１０  情報処理装置、１１  通信部、１２  入力部、１３  表示部、１４  スピーカ、１５  制御部、１６  ＲＡＭ、１７  Ｆｌａｓｈメモリ、１５１  動作制御部、１５２  処理部、１５３  書き込み部、１５４  指示部、１５５  メモリ制御部、１５６  表示制御部
【要約】
【課題】ＢＩＯＳによる起動を簡便な方法で以前の設定に戻して行うこと。
【解決手段】情報処理装置は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によるブート処理で使用する設定データを、変更された順に従って不揮発性メモリ内の所定領域に書き込むとともに、当該設定データを使用して前記ブート処理を実行する処理部と、ブート処理の期間内の所定のタイミングで、不揮発性メモリ内の所定領域に、当該タイミングに対応するタグを書き込む書き込み部と、不揮発性メモリ内の所定領域にタグより以前に書き込まれた設定データを使用してブート処理を実行するように処理部に指示する指示部と、を備える。
【選択図】図１【図１】
0006775651.tif 000002
【図２】
0006775651.tif 000003
【図３】
0006775651.tif 000004
【図４】
0006775651.tif 000005
【図５】
0006775651.tif 000006
【図６】
0006775651.tif 000007
【図７】
0006775651.tif 000008
【図８】
0006775651.tif 000009
【図９】
0006775651.tif 000010
【図１０】
0006775651.tif 000011
【図１１】
0006775651.tif 000012
【図１２】
0006775651.tif 000013
【図１３】
0006775651.tif 000014