(57)【要約】      （修正有）【課題】複数のブートプログラムの何れかに異常があったとしても、正常なブートプログラムでの起動をユーザの利便性を損なうことなく好適に行う仕組みを提供する。【解決手段】情報処理装置は、複数のブートプログラムを記憶する記憶部と、ブートプログラムの正当性を検証する第１制御部と、正常と判断されたブートプログラムを用いて情報処理装置の起動処理を実行する第２制御部とを備える。また、第１制御部は、複数のブートプログラムのうち、第１ブートプログラムを異常と判断した後に、第２ブートプログラムを正常と判断すると（Ｓ４０２で正常）、第２制御部による起動処理を第２ブートプログラムを用いて開始させるＳ４０３。さらに、第１制御部は、第２制御部が起動処理を開始した後に、上記記憶部において、正常と判断した第２ブートプログラムで、異常と判断した第１ブートプログラムを上書きする復旧処理を実行するＳ４０５。【選択図】図４
2020160747.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数のブートプログラムを記憶する記憶手段と、
前記記憶手段に記憶されたブートプログラムの正当性を検証する第１制御手段と、
前記第１制御手段によって正常と判断されたブートプログラムを用いて前記情報処理装置の起動処理を実行する第２制御手段と
を備え、
前記第１制御手段は、
前記複数のブートプログラムのうち、第１ブートプログラムを異常と判断した後に、第２ブートプログラムを正常と判断すると、前記第２制御手段による起動処理を前記第２ブートプログラムを用いて開始させ、
前記第２制御手段が起動処理を開始した後に、前記記憶手段において、正常と判断した前記第２ブートプログラムで、異常と判断した前記第１ブートプログラムを上書きする復旧処理を実行することを特徴とする情報処理装置。
【請求項２】
前記第１制御手段は、前記第２制御手段による起動処理と並行して、バックグラウンドで前記復旧処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１制御手段は、前記第２制御手段が前記記憶手段にアクセスしていないことを確認して、前記復旧処理を実行することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記起動処理が完了した後に使用されるプログラムや情報を記憶する他の記憶手段をさらに備え、
前記他の記憶手段は、さらに、前記記憶手段に前記第２制御手段がアクセスしているか否かを示す情報を記憶することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１制御手段は、前記第２制御手段による起動処理が完了した後に、前記復旧処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記第１制御手段は、
前記複数のブートプログラムのうち、前記第１ブートプログラムを正常と判断すると、前記第２制御手段による起動処理を前記第１ブートプログラムを用いて開始させ、
前記第２制御手段が起動処理を開始した後に、前記第２ブートプログラムの正当性を検証し、異常と判断すると、前記第１ブートプログラムで、異常と判断した前記第２ブートプログラムを上書きする復旧処理を実行することを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記第１制御手段は、組み込みコントローラであり、
前記第２制御手段は、前記情報処理装置を制御するシステム制御部であることを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記記憶手段は、不揮発性メモリであることを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記第１ブートプログラムと、前記第２ブートプログラムとは、同じブートプログラムであることを特徴とする請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
複数のブートプログラムを記憶する記憶手段と、
前記記憶手段に記憶されたブートプログラムの正当性を検証する第１制御手段と、
前記第１制御手段によって正常と判断されたブートプログラムを用いて情報処理装置の起動処理を実行する第２制御手段と
を備える、情報処理装置の制御方法であって、
前記第１制御手段が、前記複数のブートプログラムのうち、第１ブートプログラムを異常と判断した後に、第２ブートプログラムを正常と判断すると、前記第２制御手段による起動処理を前記第２ブートプログラムを用いて開始させる工程と、
前記第１制御手段が、前記第２制御手段が起動処理を開始した後に、前記記憶手段において、正常と判断した前記第２ブートプログラムで、異常と判断した前記第１ブートプログラムを上書きする復旧処理を実行する工程と
を含むことを特徴とする情報処理装置の制御方法。
【請求項１１】
複数のブートプログラムを記憶する記憶手段と、
前記記憶手段に記憶されたブートプログラムの正当性を検証する第１制御手段と、
前記第１制御手段によって正常と判断されたブートプログラムを用いて情報処理装置の起動処理を実行する第２制御手段と
を備える、情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記制御方法は、
前記第１制御手段が、前記複数のブートプログラムのうち、第１ブートプログラムを異常と判断した後に、第２ブートプログラムを正常と判断すると、前記第２制御手段による起動処理を前記第２ブートプログラムを用いて開始させる工程と、
前記第１制御手段が、前記第２制御手段が起動処理を開始した後に、前記記憶手段において、正常と判断した前記第２ブートプログラムで、異常と判断した前記第１ブートプログラムを上書きする復旧処理を実行する工程と
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
システム起動用プログラム（ブートプログラム）の格納場所として不揮発性メモリが広く用いられているが、この不揮発性メモリの内容が意図せず変化する場合がある。ブートプログラムの意図しない変化の原因のひとつとして、不揮発性メモリの物理的な欠陥からくる経年劣化による電荷抜けによるビットの変化が挙げられる。また別の原因として、悪意ある攻撃者による電子的な攻撃によるブートプログラムの書き換え（改ざん）が挙げられる。このようなブートプログラムの変化が発生すると、システムの起動に失敗したり、攻撃者により書き換えられたプログラムによって情報の漏洩などの意図しない動作をする場合がある。
【０００３】
このような場合を避け、正常なブートプログラムを動作させるために、電源投入時（起動時）にブートプログラムの変化の有無を検証する技術がある。例えば、特許文献１では、不揮発性メモリに複数のブートプログラムを格納し、起動時に当該ブートプログラムの変化の有無を検証し、変化を検出した場合にはバックアップ用の不揮発性メモリからブートプログラムを復元する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２６６５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術には以下に記載する課題がある。例えば、上記従来技術では、メインのブートプログラムの不正を検出して、バックアップ用の不揮発性メモリの内容を元に復旧処理を行うことが可能となっている。しかし、復旧処理にかかる時間や起動時間への影響については考慮されていない。上記従来技術では、同一のブートプログラムを２つ有し、電源投入時に改ざんが検知されると、正常な方からコピーを開始し、完了してからシステムの実行を開始している。このような構成では、復元のためのコピー処理に時間を要し、システムが動作開始するまでの時間が長くなりユーザの利便性を低下させてしまう。
【０００６】
本発明は、上述の問題の少なくとも一つに鑑みて成されたものであり、複数のブートプログラムの何れかに異常があったとしても、正常なブートプログラムでの起動をユーザの利便性を損なうことなく好適に行う仕組みを提供する。
【課題を解決するための手段】
【０００７】
本発明は、例えば、情報処理装置であって、複数のブートプログラムを記憶する記憶手段と、前記記憶手段に記憶されたブートプログラムの正当性を検証する第１制御手段と、前記第１制御手段によって正常と判断されたブートプログラムを用いて前記情報処理装置の起動処理を実行する第２制御手段とを備え、前記第１制御手段は、前記複数のブートプログラムのうち、第１ブートプログラムを異常と判断した後に、第２ブートプログラムを正常と判断すると、前記第２制御手段による起動処理を前記第２ブートプログラムを用いて開始させ、前記第２制御手段が起動処理を開始した後に、前記記憶手段において、正常と判断した前記第２ブートプログラムで、異常と判断した前記第１ブートプログラムを上書きする復旧処理を実行することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数のブートプログラムの何れかに異常があったとしても、正常なブートプログラムでの起動をユーザの利便性を損なうことなく好適に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る複合機のハードウェア構成図。
【図２】一実施形態に係る複合機の機能構成図。
【図３】一実施形態に係る起動処理の一例を示すフローチャート。
【図４】一実施形態に係る起動処理の異常時の処理の一例を示すフローチャート。
【図５】一実施形態に係る起動処理のブートプログラムの復旧処理の一例を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１１】
なお、実施形態に係る情報処理装置として複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
【００１２】
＜ハードウェア構成＞
以下では、本発明の一実施形態について説明する。まず、図１を参照して、一実施形態に係る複合機１００と組み込みコントローラ１１３のハードウェア構成を説明する。
【００１３】
複合機１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０４、ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）１１７、及びフラッシュメモリ１１４を備える。また、複合機１００は、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、スキャナ１１１、プリンタＩ／Ｆ制御部１０７、プリンタ１１２、パネル制御部１０８、操作パネル１１０、組み込みコントローラ１１３を備える。また、組み込みコントローラ１１３は、ＣＰＵ１１５、ＲＡＭ１１６、及びＲＯＭ１１８を備える。
【００１４】
ＣＰＵ１０１は、複合機１００のソフトウェアプログラムを実行し、装置全体の制御を行う。ＲＯＭ１０２はリードオンリーメモリで、複合機１００のＢＩＯＳ及び固定パラメータ等を格納している。ＲＡＭ１０３はランダムアクセスメモリであり、ＣＰＵ１０１が複合機１００を制御する際に、プログラムや一時的なデータの格納などに使用される。ＨＤＤ１０４はハードディスクドライブであり、一部のアプリケーションや、各種データを格納する。フラッシュメモリ１１４はローダ、カーネル、及びアプリケーションを格納する。
【００１５】
一方、ＣＰＵ１１５は組み込みコントローラ１１３のソフトウェアプログラムを実行し、複合機１００の中で一部の制御を行う。ＲＡＭ１１６はランダムアクセスメモリであり、ＣＰＵ１１５が複合機１００を制御する際に、プログラムや一時的なデータの格納などに使用される。ＲＯＭ１１８は、ＣＰＵ１１５が動作開始したときに最初に読み出されるプログラムを格納している。
【００１６】
ネットワークＩ／Ｆ制御部１０５は、ネットワーク１１９とのデータの送受信を制御する。スキャナＩ／Ｆ制御部１０６は、スキャナ１１１による原稿の読み取りを制御する。プリンタＩ／Ｆ制御部１０７は、プリンタ１１２による印刷処理などを制御する。パネル制御部１０８は、タッチパネル式の操作パネル１１０を制御し、各種情報の表示、使用者からの指示入力を制御する。バス１０９はＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、及びプリンタＩ／Ｆ制御部１０７を相互に接続する。さらに、バス１０９はパネル制御部１０８、組み込みコントローラ１１３、及びフラッシュメモリ１１４も相互に接続する。このバス１０９を介して、ＣＰＵ１０１からの制御信号や各装置間のデータ信号が各部に送受信される。ＬＥＤ１１７は必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えるために利用される。
【００１７】
＜機能構成＞
次に、図２を参照して、一実施形態に係る複合機１００の機能構成について説明する。図２（ａ）は、一実施形態に係る複合機１００が有する機能構成を示す。
【００１８】
フラッシュメモリ１１４には、ブートプログラム（Ｂｏｏｔ１、第１ブートプログラム）２０１０と、ブートプログラム（Ｂｏｏｔ２、第２ブートプログラム）２０２０とが格納される。組み込みコントローラ１１３の内部には、複数の機能が含まれている。本実施形態では、図１に示すように、フラッシュメモリ１１４と組み込みコントローラ１１３とは共通のバス１０９によって接続されている。しかしながら、本発明を限定する意図はなく、組み込みコントローラ１１３のフラッシュメモリ１１４のデータの読み書きにはバス１０９を用いずに別途直接接続するバスを設け、それを用いてもよい。
【００１９】
組み込みコントローラ１１３には、検証部２０５０と、リセット制御部２０６０とが含まれる。検証部２０５０は、ブートプログラムが意図せず変化していないかの確認を行う。これには、一般的に広く用いられる公開鍵暗号方式を応用した電子署名技術を使用することを想定している。そのため、詳細な説明は割愛する。リセット制御部２０６０は、後述のシステム制御部２０７０のリセット状態を制御する。初期状態はリセット状態である。
【００２０】
システム制御部２０７０は、複合機１００から、図１に示すフラッシュメモリ１１４及び組み込みコントローラ１１３以外のもの全体に相当する。前述の通り、リセット制御部２０６０は、初期状態がリセット状態であるため、電源が供給開始されても動作を開始しない。
【００２１】
図２（ｂ）は、フラッシュメモリ１１４に格納されているブートプログラム２０１０、２０２０の論理的な構成を示す。前述の通り、ブートプログラム２０１０、２０２０には、公開鍵暗号方式を応用した電子署名技術を用いて意図しない変化を検出するため、プログラム本体だけでなく、付加情報も備える。実行コード２１１０は、ＣＰＵが実行するプログラム本体である。署名データ２１２０及び公開鍵２１３０は、実行コード２１１０の正当性を検証するために必要となる付加情報である。ブートプログラム２０１０、２０２０は、それぞれ署名データ２１２０と、公開鍵２１３０とを含む。なお、これらの付加情報は、更新可能であり、例えば、実行コード２１１０等の改ざんが検出された場合には、付加情報が漏洩している可能性があるため、新たな付加情報に更新することができる。また、実行コード２１１０の正当性を検証するための付加情報自体が改ざんされる可能性や、経年変化する可能性もあり、そのような場合も想定して更新可能としている。なお、付加情報自体が変化している可能性もあるため、付加情報を検証するとための情報を書き換え不可能なメモリに格納していることが望ましい。
【００２２】
＜電源投入時の処理＞
次に、図３を参照して、一実施形態における複合機１００の電源が投入されたときの、組み込みコントローラ１１３が実行する選択処理の処理手順を説明する。以下で説明する処理は、例えば、組み込みコントローラ１１３のＣＰＵ１１５がソフトウェアとしてＲＯＭ１１８に予め格納されているプリグラムをＲＡＭ１１６に読み出して実行することにより実現される。
【００２３】
複合機１００の電源投入時において、Ｓ３０１で、ＣＰＵ１１５は、ブートプログラム（ｂｏｏｔ１）２０１０が意図せず変化していないかの正当性の確認（検証処理）を行う。なお、前述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、当該検証処理の詳細な説明については割愛する。
【００２４】
次に、Ｓ３０２で、ＣＰＵ１１５は、Ｓ３０１での正当性確認の結果を評価し、正常だった場合は、Ｓ３０３に進み、異常だった場合はＳ３０４に進む。Ｓ３０３で、ＣＰＵ１１５は、リセット制御部２０６０によってリセット状態の解除を行う。リセット状態の解除が行われると、システム制御部２０７０がブートプログラム２０１０を読み出して起動処理を開始する。
【００２５】
一方、Ｓ３０４で、ＣＰＵ１１５は、正当性確認の結果が異常であるため、異常処理を実行する。Ｓ３０４で実行する異常処理に関しては、図４で詳細に説明する。
【００２６】
＜異常処理＞
次に、図４を参照して、一実施形態に係る異常処理（Ｓ３０４）の処理手順を説明する。以下で説明する処理は、例えば、組み込みコントローラ１１３のＣＰＵ１１５がソフトウェアとしてＲＯＭ１１８に予め格納されているプリグラムをＲＡＭ１１６に読み出して実行することにより実現される。
【００２７】
Ｓ４０１で、ＣＰＵ１１５は、ブートプログラム２０２０が意図せず変化していないかの正当性の確認（検証処理）を行う。続いて、Ｓ４０２で、ＣＰＵ１１５は、Ｓ４０１での正当性確認の結果を評価し、正常だった場合はＳ４０３に進み、異常だった場合はＳ４０６に進む。
【００２８】
Ｓ４０３で、ＣＰＵ１１５は、正常なブートプログラム２０２０を読み出して起動処理を開始するようにシステム制御部２０７０の制御を切り替える。続いて、Ｓ４０４で、ＣＰＵ１１５は、リセット制御部２０６０によってリセット状態の解除を行う。ここで、リセット状態の解除が行われると、システム制御部２０７０がブートプログラム２０２０を読み出して動作を開始する（起動処理）。当該起動処理のタイミングとしては、ＣＰＵ１１５によるＳ４０４の処理の直後である。なお、当該起動処理は、後述するＣＰＵ１１５によるＳ４０５の処理とは並行して行われてもよいし、Ｓ４０５の処理前に行われてもよい。つまり、本実施形態では、復旧処理の影響で起動処理が遅延しないように制御する。
【００２９】
Ｓ４０４のタイミングではブートプログラム２０１０が異常、ブートプログラム２０２０が正常という状態になる。ここで、本実施形態に係る複合機１００は、２つとも正常な状態に保つようにして、次の起動処理に備える。従って、Ｓ４０５で、ＣＰＵ１１５は、ブートプログラム２０１０の復旧処理を実行し、以上処理を終了する。ただし、システム制御部２０７０の起動時間に影響を与えないようにするため、Ｓ４０５での復旧処理は起動処理のバックグラウンドで並列に処理するように制御する。Ｓ４０５の詳細な処理については図５で説明する。
【００３０】
一方、Ｓ４０６で、ＣＰＵ１１５は、Ｓ４０２でブートプログラム２０２０の正当性確認の結果が異常だと判断したため、起動処理を停止し、以上処理を終了する。この場合は２つのブートプログラムの双方が異常と判断された状態であるため、リセットの解除が行われず、システム制御部２０７０は動作を開始しない。Ｓ４０６で起動処理を停止した際に、ＣＰＵ１１５は、ＬＥＤ１１７を点灯状態に変化させ、システム制御部２０７０が動作開始できなかった旨を報知してもよい。
【００３１】
＜復旧処理＞
次に、図５を参照して、一実施形態に係る復旧処理（Ｓ４０５）の処理手順を説明する。以下で説明する処理は、例えば、組み込みコントローラ１１３のＣＰＵ１１５がソフトウェアとしてＲＯＭ１１８に予め格納されているプリグラムをＲＡＭ１１６に読み出して実行することにより実現される。
【００３２】
図４でも説明した通り、本実施形態に係る復旧処理は起動処理のバックグラウンドで並列に処理するように制御される。従って、本実施形態では、組み込みコントローラ１１３内のＣＰＵ１１５と、システム制御部２０７０内のＣＰＵ１０１が、同時にフラッシュメモリ１１４へアクセスを行う可能性がある。フラッシュメモリ１１４へアクセスを行う信号線は各ＣＰＵに対して共有している場合がほとんどであるため、フラッシュメモリ１１４へのアクセスが競合することが想定される。そこで、本実施形態に係る復旧処理では、フラッシュメモリ１１４へのアクセスを正常に行うため、このようなアクセスの競合を防止する。
【００３３】
Ｓ５０１で、ＣＰＵ１１５は、ＣＰＵ１０１がフラッシュメモリ１１４へアクセス中であるか否かを確認する。アクセス中であるか否かについては、ＣＰＵ１０１とＣＰＵ１１５の両方から参照可能なＲＡＭ１０３に対してＣＰＵ１０１からアクセス中であるか、アクセス終了したかを示す情報を更新するようにし、それをＣＰＵ１１５が参照すればよい。当該情報はフラグ情報として設けられてもよい。
【００３４】
Ｓ５０１でＣＰＵ１１５がアクセス中であると判定した場合には再度Ｓ５０１に戻り、ＣＰＵ１０１がフラッシュメモリ１１４へアクセス中であるかを確認する（リトライ処理）。当該リトライ処理については、所定時間間隔で定期的に行うように制御してもよい。ＣＰＵ１１５がアクセスを終了したと判定した場合にはＳ５０２に進む。
【００３５】
Ｓ５０２で、ＣＰＵ１１５は、ブートプログラム（ｂｏｏｔ２）２０２０の内容で、ブートプログラム（ｂｏｏｔ１）２０１０の内容を上書きすることで、Ｓ３０１で異常と判断したブートプログラム２０１０の復旧処理を行う。上書きが完了すると、本フローチャートの処理を終了する。
【００３６】
図５に示す復旧処理はブートプログラムと並列でバックグラウンド処理として実施することで説明した。しかし、機能構成によっては、システムの起動（起動処理）が完全に完了して、複合機１００のスキャンやプリントといった一般的な機能が動作するようになった後に、復旧処理を実行するように制御してもよい。ただし、起動処理中にシステムが停止した場合や電源不良等が発生した場合には、２つのブートプログラムを正常な状態に保つことが難しくなるので、できるだけ速やかに復旧処理を実行することが望ましい。
【００３７】
以上説明したように、本実施形態の情報処理装置は、複数のブートプログラムを記憶する記憶部と、ブートプログラムの正当性を検証する第１制御部と、正常と判断されたブートプログラムを用いて当該情報処理装置の起動処理を実行する第２制御部とを備える。また、第１制御部（ＣＰＵ１１５）は、複数のブートプログラムのうち、第１ブートプログラムを異常と判断した後に、第２ブートプログラムを正常と判断すると、第２制御部（ＣＰＵ１０１）による起動処理を第２ブートプログラムを用いて開始させる。さらに、第１制御部は、第２制御部が起動処理を開始した後に、上記記憶部（フラッシュメモリ１１４）において、正常と判断した第２ブートプログラムで、異常と判断した第１ブートプログラムを上書きする復旧処理を実行する。このように、本情報処理装置は、２つあるブートプログラムの一方の不正を検知した際に、もう一方のブートプログラムが正常であれば、そちらをシステム起動に用いる。これにより、ブートプログラムの不正を検知した際にも、正常にかつ速やかに起動処理を実行することができる。また、正常と判断されたブートプログラムを用いてシステムの起動処理を開始後に、バックグラウンドで異常と検知されたブートプログラムの復旧処理を実行するため、システム起動時間が長くなることを防止することができる。よって、本実施形態によれば、複数のブートプログラムの何れかに異常があったとしても、正常なブートプログラムでの起動をユーザの利便性を損なうことなく好適に行うことができる。さらには、異常があったブートプログラムを起動処理に影響を与えることなく復旧（更新）することができる。
【００３８】
本発明は上記実施形態に限らず様々な変形が可能である。例えば、上記実施形態では電源投入時に組み込みコントローラ１１３だけが動作を開始し、図３に示す選択処理を行った後にシステム制御部２０７０が動作を開始する一例を説明した。しかしながら、本発明はこのような制御に限定されず、例えば組み込みコントローラ１１３を搭載せずに、システム制御部２０７０内のＣＰＵ１０１が図３に示す選択処理を行ってもよい。この場合、図３に示す処理をＲＯＭ１０２に格納し、ＣＰＵ１０１が動作開始したときに当該処理を必ず実行するように構成しておけば同様の効果が得ることができる。
【００３９】
また、上記実施形態ではブートプログラムが２つの場合についての処理を説明したが３つ以上の場合にも適用可能である。このように構成することで、さらに耐性を向上させることが可能になる。複数あるブートプログラムのすべての正当性を検証することで、システム起動に用いる必要のないブートプログラムの不正な変化に気づけないことを防止できる。
【００４０】
また、正常と判断されたブートプログラムを用いてシステムの動作を開始後に、他のブートプログラムについて、バックグラウンドで正当性の確認を行ってもよい。バックグラウンド処理において異常の検知と復旧処理とを実行するため、システム起動時間が長くなることを防止することができる。このように、ユーザの利便性を損なうことなく、不揮発性メモリのデータの不正な変化に対する耐性を向上させることが可能になる。
【００４１】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４２】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００４３】
１００：複合機、１０１：ＣＰＵ、１０２：ＲＯＭ、１０３：ＲＡＭ、１０４：ＨＤＤ、１０５：ネットワークＩ／Ｆ制御部、１０６：スキャナＩ／Ｆ制御部、１０７：プリンタＩ／Ｆ制御部、１０８：パネル制御部、１０９：バス、１１０：操作パネル、１１１：スキャナ、１１２：プリンタ、１１３：組み込みコントローラ、１１４：フラッシュメモリ、１１５：ＣＰＵ、１１６：ＲＡＭ、１１８：ＲＯＭ、１１９：ネットワーク
【図１】
2020160747.tif 000003
【図２】
2020160747.tif 000004
【図３】
2020160747.tif 000005
【図４】
2020160747.tif 000006
【図５】
2020160747.tif 000007