(57)【要約】【課題】情報処理装置に対する不適合な起動プログラムの適用を抑制する。【解決手段】第１の起動プログラムを実行することにより行なわれる情報処理装置１の起動プロセスをシミュレートし、起動プロセスにおいてデバイス１３に対して行なわれるデータアクセスについての第１履歴情報２０１ａを記録する第１履歴情報記録部１０３と、第１履歴情報２０１と、情報処理装置１において第２の起動プログラム５０を実行することにより行なわれた実起動プロセスにおいて、デバイス１３に対して行なわれたデータアクセスについての第２履歴情報２０１とが不一致である場合に、第１の起動プログラム５０による第２の起動プログラム５０の書き換えを抑止する抑止部とを備える。【選択図】図１
2018128719.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置において、
１つ以上のデバイスと、
第１の起動プログラムを実行することにより行なわれる当該情報処理装置の起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録する第１履歴情報記録部と、
前記第１履歴情報と、当該情報処理装置において第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する抑止部と
を備えることを特徴とする、情報処理装置。
【請求項２】
前記第１の起動プログラムおよび前記第２の起動プログラムが、前記デバイスに対してデータアクセスを行なう度に、当該データアクセスの履歴を出力するアクセス情報記録モジュールを備える
ことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記第１履歴情報および前記第２履歴情報が、アクセス先アドレスおよびデータアクセス種別をそれぞれ備え、
前記第１履歴情報の前記アクセス先アドレスおよび前記データアクセス種別において、前記第２履歴情報の前記アクセス先アドレスおよび前記データアクセス種別と相違するものがある場合に、前記第１履歴情報と前記第２履歴情報とが不一致であると判定する判定部を備える
ことを特徴とする、請求項１または２記載の情報処理装置。
【請求項４】
１つ以上のデバイスを備えるコンピュータに、
第１の起動プログラムを実行することにより行なわれる当該コンピュータの起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録し、
前記第１履歴情報と、当該コンピュータにおいて第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する
処理を実行させることを特徴とする、制御プログラム。
【請求項５】
１つ以上のデバイスを備える情報処理装置において、
第１の起動プログラムを実行することにより行なわれる当該情報処理装置の起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録する処理と、
前記第１履歴情報と、当該情報処理装置において第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する処理と
を備えることを特徴とする、起動プログラム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，制御プログラムおよび起動プログラム制御方法に関する。
【背景技術】
【０００２】
情報処理装置の起動プロセスにおいては、当該情報処理装置に実装されたデバイスに対してＢＩＯＳ（Basic Input Output System）による設定処理が行なわれる。
【０００３】
ＢＩＯＳは、装置に搭載されたデバイスのレジスタに予め用意された制御値を書き込むことで、デバイスの設定を行ない、その後、ＯＳ（Operating System）を起動させる。
ＯＳの起動が完了した情報処理装置においては、その後、アプリケーションが実行され、各種機能を実現する。
【０００４】
また、例えば、ＯＳのバージョンアップ等による情報処理装置に対する機能追加や、サポート部品の追加等のアップグレードを行なうために、ＢＩＯＳの書き換えが行なわれる場合がある。
【０００５】
従来の情報処理装置においてＢＩＯＳの更新を行なう場合には、先ず、情報処理装置のメーカ等が新しいＢＩＯＳ（更新用ＢＩＯＳ）を用意する。そして、例えば、メーカのＣＥ（Customer Engineer）が情報処理装置の設置場所まで行き、更新用ＢＩＯＳを使用してＢＩＯＳの書き換えを行なう。また、ユーザが更新用ＢＩＯＳのデータを使用してＢＩＯＳの書き換えを行なう場合もある。
なお、以下、更新用ＢＩＯＳを用いてＢＩＯＳの書き換えを行なってＢＩＯＳを更新することを、更新用ＢＩＯＳを適用すると表現する場合がある。
【０００６】
更新用ＢＩＯＳを適用するに際して、情報処理装置に対して、他の情報処理装置用に用意された、当該情報処理装置に適合しない更新用ＢＩＯＳを誤って書き込まないようにすることが望ましい。例えば、各情報処理装置に対して固有のＩＤ（identification）を設定するとともに、更新用ＢＩＯＳに対して、対応する情報処理装置のＩＤを対応付ける。そして、情報処理装置に対して、そのＩＤに対応する更新用ＢＩＯＳのみの書き込みを許可し、対応しないＩＤの更新用ＢＩＯＳの書き込みを抑止することで、更新用ＢＩＯＳの誤適用を防止する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−２８６９９６号公報
【特許文献２】特開平１０−１５４０７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような従来の更新用ＢＩＯＳの誤適用防止方法においては、メーカが提供する更新用ＢＩＯＳのデータが誤っている場合には、更新用ＢＩＯＳの誤適用を防ぐことができない。
【０００９】
例えば、メーカにおいて、ある情報処理装置（装置Ａとする）用の更新用ＢＩＯＳに、この装置Ａとは異なる情報処理装置（装置Ｂとする）のＩＤを間違えて設定してしまった場合に、装置Ｂに対して装置Ａ用の更新用ＢＩＯＳが更新されるおそれがある。
【００１０】
他の情報処理装置用のＢＩＯＳが書き込まれた情報処理装置においては、ＯＳ起動（以下、ブートという場合がある）ができなくなり、当該情報処理装置が動作不能の状態となる。
【００１１】
そして、ＢＩＯＳが誤適用されて起動不可の状態になった情報処理装置を復旧させるためには、例えば、メーカによる原状復帰作業が必要となる。原状復帰作業においては、例えば、ＩＣを外してＢＩＯＳの書き換えを直接行なうことや情報処理装置の交換が行なわれ、このために時間やコストを費やすことになる。
１つの側面では、本発明は、情報処理装置に対する不適合な起動プログラムの適用を抑制することを目的とする。
【課題を解決するための手段】
【００１２】
このため、この情報処理装置は、１つ以上のデバイスと、第１の起動プログラムを実行することにより行なわれる当該情報処理装置の起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録する第１履歴情報記録部と、前記第１履歴情報と、当該情報処理装置において第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する抑止部とを備える。
【発明の効果】
【００１３】
一実施形態によれば、情報処理装置に対する不適合な起動プログラムの適用を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態の一例としての情報処理装置の構成を模式的に示す図である。
【図２】実施形態の一例としての情報処理装置の機能構成を示す図である。
【図３】実施形態の一例としての情報処理装置におけるアクセス情報を例示する図である。
【図４】実施形態の一例としての情報処理装置におけるＢＩＯＳの構成を例示する図である。
【図５】実施形態の一例としての情報処理装置における装置構成情報を例示する図である。
【図６】実施形態の一例としての情報処理装置における電源投入時の処理を説明するフローチャートである。
【図７】実施形態の一例としての情報処理装置におけるアクセス情報記録部の処理を説明するフローチャートである。
【図８】実施形態の一例としての情報処理装置におけるＢＩＯＳ確認部による処理の概要を説明するフローチャートである。
【図９】実施形態の一例としての情報処理装置におけるＢＩＯＳ確認部によるアクセス情報の比較手法を説明するフローチャートである。
【図１０】実施形態の一例としての情報処理装置におけるＢＩＯＳ確認部によるフラグの初期化処理を説明するフローチャートである。
【図１１】実施形態の一例としての情報処理装置における完了処理部の処理を説明するフローチャートである。
【図１２】実施形態の一例としての情報処理装置における装置構成情報作成部による処理を説明するフローチャートである。
【図１３】実施形態の一例としての情報処理装置におけるＢＩＯＳ確認部によるアクセス情報の比較手法の他の例を説明するフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本情報処理装置，制御プログラムおよび起動プログラム制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態及び各変形例を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１６】
（Ａ）構成
図１は実施形態の一例としての情報処理装置１の構成を模式的に示す図である。
【００１７】
情報処理装置１は、図１に示すように、ＣＰＵ（Central Processing Unit）１０，メモリ１１，フラッシュメモリ１２および１つ以上（図１に示す例では４つ）のデバイス１３−１〜１３−４を備える。
【００１８】
フラッシュメモリ１２は、種々のデータやプログラムを格納する記憶装置である。このフラッシュメモリ１２にはＢＩＯＳ（第２の起動プログラム）５０が格納される。また、このフラッシュメモリ１２に格納されたＢＩＯＳ５０は、後述の如く、新たに作成されたＢＩＯＳ５０（以下、更新用ＢＩＯＳ５０，新ＢＩＯＳ５０という場合がある：第１の起動プログラム）によって書き換えられることで更新される。
【００１９】
メモリ１１はＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）を含む記憶メモリである。メモリ１１のＲＯＭには、本情報処理装置１における各種の制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。
【００２０】
メモリ１１上のソフトウェアプログラムは、ＣＰＵ１０に適宜読み込まれて実行される。又、メモリ１１のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。例えば、ＯＳや制御プログラム（ＢＩＯＳ書き込み制御プログラム）は、メモリ１１のＲＡＭ上に展開されてＣＰＵ１０に実行される。
また、メモリ１１のＲＡＭには、後述するアクセス情報記録部１０１，１０１ａ（図２参照）としての機能により、アクセス情報が格納される。
【００２１】
本情報処理装置１は、図示しないインタフェースを備え、このインタフェースを介して、更新用ＢＩＯＳ５０が入力される。インタフェースは、例えば、ネットワークインタフェースであってもよく、このネットワークインタフェースを介して更新用ＢＩＯＳ５０が外部ファイルとして入力されてもよい。また、インタフェースは、ＵＳＢ（Universal Serial Bus）等のバスインタフェースであってもよく、このバスインタフェースに接続された記録媒体読取装置を介して更新用ＢＩＯＳ５０が外部ファイルとして入力されてもよい。
【００２２】
フラッシュメモリ１２に格納されているＢＩＯＳ５０は、更新用ＢＩＯＳ５０によって上書きされる。すなわち、フラッシュメモリ１２に格納されているＢＩＯＳ５０は、更新用ＢＩＯＳ５０によって更新されるものであり、被更新ＢＩＯＳ５０といってもよい。
【００２３】
以下、フラッシュメモリ１２に格納されているＢＩＯＳ５０を単にＢＩＯＳ５０という。更新用ＢＩＯＳ５０はフラッシュメモリ１２に格納された時点でＢＩＯＳ５０として取り扱われる。従って、ＢＩＯＳ５０と更新用ＢＩＯＳ５０とは同様の構成を有する。
【００２４】
記録媒体読取装置は、例えば、フレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体から更新用ＢＩＯＳ５０を読み出す装置であってもよい。また、記録媒体読取装置は、ＵＳＢメモリ等の記録媒体から更新用ＢＩＯＳ５０を読み出してもよい。
記録媒体を介した本情報処理装置１への更新用ＢＩＯＳ５０の入力は、例えば、ＣＥや本情報処理装置１のユーザによって行なわれる。
デバイス１３−１〜１３−４は、本情報処理装置１に内蔵もしくは外付けされる電子部品もしくは電子機器である。
【００２５】
例えば、デバイス１３−１はＤＤＲ（Double Data Rate）３コントローラであり、デバイス１３−２はＳＡＳ（Serial Attached Small Computer System Interface）コントローラである。また、デバイス１３−３はＩ２Ｃ（Inter-Integrated Circuit）センサであり、デバイス１３−４はＰＣＩｅ（Peripheral Component Interconnect Express）スイッチである。
【００２６】
なお、以下、デバイスを示す符号としては、複数のデバイスのうち１つを特定する必要があるときには符号１３−１〜１３−４を用いるが、任意のデバイスを指すときには符号１３を用いる。
【００２７】
デバイス１３は、上述の如きＤＤＲ３コントローラやＳＡＳコントローラ，Ｉ２ＣセンサおよびＰＣＩｅスイッチに限定されるものではなく、他の種々の電子部品もしくは電子機器であってもよい。
ＣＰＵ１０は、種々の制御や演算を行なう処理装置であり、メモリ１１に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。
【００２８】
図２は実施形態の一例としての情報処理装置１の機能構成を示す図である。この図２に示すように、ＣＰＵ１０は、アクセス情報記録部１０１，装置構成情報作成部１０４，ＢＩＯＳ確認部１０２，装置エミュレータ１０３および完了処理部１０５としての機能を実現する。
【００２９】
具体的には、情報処理装置１のＣＰＵ１０が、ＢＩＯＳ５０を実行することによりアクセス情報記録部１０１として機能する。また、ＣＰＵ１０がＢＩＯＳ書き込み制御プログラム（制御プログラム）を実行することにより、装置構成情報作成部１０４，ＢＩＯＳ確認部１０２，装置エミュレータ１０３および完了処理部１０５として機能する。
【００３０】
なお、これらのアクセス情報記録部１０１，装置構成情報作成部１０４，ＢＩＯＳ確認部１０２，装置エミュレータ１０３および完了処理部１０５としての機能を実現するためのプログラム（ＢＩＯＳおよびＢＩＯＳ書き込み制御プログラム）は、例えばフレキシブルディスク，ＣＤ，ＤＶＤ，ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００３１】
アクセス情報記録部１０１，装置構成情報作成部１０４，ＢＩＯＳ確認部１０２，装置エミュレータ１０３および完了処理部１０５としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ１１のＲＡＭやＲＯＭ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１０）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
なお、装置構成情報作成部１０４，ＢＩＯＳ確認部１０２および装置エミュレータ１０３としての機能を、ＢＩＯＳ書き込みツール１００という場合がある。
【００３２】
ＢＩＯＳ書き込みツール１００は、ＣＰＵ１０がＢＩＯＳ書き込み制御プログラムを実行することにより実現され、本情報処理装置１のフラッシュメモリ１２に更新用ＢＩＯＳ５０の書き込みを行なう。フラッシュメモリ１２にＢＩＯＳ５０が既に書き込まれている場合には、ＢＩＯＳ書き込みツール１００は、更新用ＢＩＯＳ５０を用いてフラッシュメモリ１２のＢＩＯＳ５０を書き換える。
【００３３】
［アクセス情報記録部１０１］
アクセス情報記録部１０１は、本情報処理装置１の起動時にＢＩＯＳ５０もしくは更新用ＢＩＯＳ５０が実行される際に、デバイス１３−１〜１３−４のレジスタ（図示省略）に対して行なわれるデータアクセスの履歴を示すアクセス情報２０１を記録する。
図３は実施形態の一例としての情報処理装置１におけるアクセス情報２０１を例示する図である。
【００３４】
アクセス情報２０１は、ＢＩＯＳ５０の実行過程において生じるデバイス１３のレジスタへのデータアクセス（以下、デバイスアクセスもしくはＢＩＯＳコンフィギュレーションアクセスという場合がある）の履歴を示す。アクセス情報２０１には、デバイスアクセスの履歴が時系列で記録される。アクセス情報２０１は、本情報処理装置１の起動時（立ち上げ時）における各実デバイス１３へのアクセス履歴である。
【００３５】
図３に例示するアクセス情報２０１は、項目index，dev_id，offset，attributeおよびvalを関連付けることにより構成されている。
【００３６】
indexは、デバイスアクセスに対して発生順に付されるユニークな番号であり、デバイスアクセスの識別に用いることができる。図３に示す例においては、アクセス情報２０１に１７個（index1〜17）のデバイスアクセスが記録されており、個々のindexが１アクセス分のＢＩＯＳコンフィギュレーションアクセスを示す。
【００３７】
なお、アクセス情報２０１の最終行は、indexを含む全ての項目に0が設定された目印行となっており、アクセス情報２０１の最後尾を特定するために便宜上に備えられている。
【００３８】
dev_idは、デバイス１３を特定するための識別ＩＤ（identification）である。本実施形態においては、デバイス１３が接続されているバスの識別情報が用いられている。offsetは、ＢＩＯＳがアクセスするデバイス１３のレジスタ（図示省略）のオフセット（レジスタオフセット）である。これらのdev_idおよびoffsetは、ＢＩＯＳ５０からのデータアクセス先（ライト先，リード元）であるデバイス１３のレジスタのアクセス先アドレスであり、上位アドレスおよび下位アドレスを示す。
【００３９】
attributeは、データアクセスの種別を表すものであり、具体的には、リードアクセス（read）であるか、ライトアクセス（write）であるかを示す情報が記録される。attributeに登録された情報は、アクセス先であるレジスタに対するアクセス方向を示す。
【００４０】
valは、レジスタに対してリードもしくはライトされた制御値を示す。具体的には、ＢＩＯＳがレジスタにリードアクセスを行なった場合にはリードした値が、また、ＢＩＯＳがレジスタにライトアクセスを行なった場合にはライトした値が、それぞれ記録される。
【００４１】
図３に示す例において、例えば、index“1〜5”は、BUS#0によって特定される一のデバイス１３に対して行なわれたＢＩＯＳコンフィギュレーションアクセスについて示す。
【００４２】
アクセス情報２０１は、例えば、メモリ１１やフラッシュメモリ１２，図示しない記憶装置等における所定の記憶領域に記録される。以下、アクセス情報２０１が記録される記憶領域を、アクセス情報保存領域２０という。
アクセス情報記録部１０１としての機能は、ＢＩＯＳ５０に埋め込まれたアクセス情報記録モジュールによって実現される。
【００４３】
図４は実施形態の一例としての情報処理装置１におけるＢＩＯＳ５０の構成を例示する図である。なお、上述の如く更新用ＢＩＯＳ５０も、このＢＩＯＳ５０と同様の構成を有する。
【００４４】
ＢＩＯＳ５０は、デバイス１３のレジスタに制御値を書き込む処理や、デバイス１３を起動させる処理をＣＰＵ１０に実行させる。また、ＢＩＯＳ５０は、書き込んだ制御値をレジスタから読み出すことができるかを確認することでデバイスに異常がないことを確認する処理もＣＰＵ１０に実行させる。
以下、ＢＩＯＳ５０がＣＰＵ１０に処理を実行させることを、便宜上、ＢＩＯＳ５０が処理を行なうと表現する場合がある。
ＢＩＯＳ５０は、図４に示すように、ＢＩＯＳベース部５１とリード／ライト関数５２とを備える。
【００４５】
リード／ライト関数５２は、ＢＩＯＳベース部５１の外部に設けられた外部関数であり、ライト関数５２１およびリード関数５２２を有する。ライト関数５２１は、デバイス１３のレジスタに制御値を書き込む。リード関数５２２は、デバイス１３のレジスタから制御値を読み出す。
【００４６】
ＢＩＯＳベース部５１においては、ＢＩＯＳ５０として行なう処理が実行される順に登録されている。すなわち、ＢＩＯＳ５０は、このＢＩＯＳベース部５１に登録された処理をその先頭から順番に実行することで本情報処理装置１の設定（入出力設定）を完了させる。
【００４７】
また、ＢＩＯＳベース部５１に規定された処理においては、必要に応じて、リード／ライト関数５２に登録されたライト関数５２１やリード関数５２２を読み出して実行する。
【００４８】
図４に示す例においては、ＢＩＯＳベース部５１において、ＤＤＲコントローラデバイス１３−１の設定を行なった後に、ＳＡＳコントローラデバイス１３−２の設定が行なわれることが規定されている。
【００４９】
ＤＤＲコントローラデバイス１３−１の設定においては、先ず、ＤＤＲコントローラデバイス１３−１の図示しないレジスタに制御値の書き込み（設定書き込み）を行なう。この際、ＢＩＯＳベース部５１からライト関数５２１が読み出されて実行される（図４中の符号Ｐ１参照）。また、この際、ＢＩＯＳベース部５１は、ライト先のアドレス（Address）やライトデータ（Data）をライト関数５２１に引き渡す。
【００５０】
ＳＡＳコントローラデバイス１３−２の設定においては、先ず、ＳＡＳコントローラデバイス１３−２の図示しないレジスタに制御値の書き込み（設定書き込み）を行なう。これにより、ＢＩＯＳベース部５１からライト関数５２１が読み出されて実行される（図４中の符号Ｐ２参照）。また、この際、ＢＩＯＳベース部５１は、ライト先のアドレス（Address）やライトデータ（Data）をライト関数５２１に引き渡す。
【００５１】
その後、ＳＡＳコントローラデバイス１３−２のレジスタへの制御値の書き込みが正常に行なわれたかの確認（SAS Deviceの確認）を行なう。この際、ＢＩＯＳベース部５１からリード関数５２２が読み出されて実行される（図４中の符号Ｐ３参照）。その後、ＳＡＳコントローラデバイス１３−２が起動される。また、この際、ＢＩＯＳベース部５１は、リード先のアドレス（Address）をリード関数５２２に引き渡す。
【００５２】
本情報処理装置１において、リード／ライト関数５２において、ライト関数５２１は、アクセス情報２０１にデバイス１３のレジスタに対するライトアクセスの履歴を記録させる機能を有する。
【００５３】
図４に例示するライト関数５２１において、“アクセス情報[idx]. Address = Address”は、データアクセス先（ライト先）のデバイス１３のレジスタの位置情報をアクセス情報２０１に記録させるプログラム文である。
【００５４】
ここで、“idx”は図３に例示するアクセス情報２０１におけるindexに対応する。従って、プログラム文“アクセス情報[idx]. Address = Address”は、図３に例示するアクセス情報２０１におけるidxの値で特定されるindexに対応させて、dev_idおよびattributeにライト先のAddressの情報を記録させる。なお、Addressは、ＢＩＯＳ５０からのデータアクセス先（ライト先，リード元）であるデバイス１３のレジスタのアドレスの上位アドレスおよび下位アドレスを示す。
【００５５】
また、図４に例示するライト関数５２１において、“アクセス情報[idx]. Data = Data”は、アクセス情報２０１に、データアクセス先（ライト先）のデバイス１３のレジスタの制御値（ライト値）を記録させるプログラム文である。
【００５６】
プログラム文“アクセス情報[idx]. Data = Data”は、図３に例示するアクセス情報２０１におけるidxの値で特定されるindexに対応させて、valに制御値であるDataを記録させる。
【００５７】
さらに、図４に例示するライト関数５２１において、“アクセス情報[idx]. RW = W”は、アクセス情報２０１に、データアクセスがライトアクセスであることを記録させるプログラム文である。
【００５８】
プログラム文“アクセス情報[idx]. RW = W”は、図３に例示するアクセス情報２０１におけるidxの値で特定されるindexに対応させて、attributeにライトアクセスであることを示すW（Write）を記録させる。
【００５９】
また、本情報処理装置１において、リード／ライト関数５２において、リード関数５２２も、アクセス情報２０１にデバイス１３のレジスタに対するリードアクセスの履歴を記録させる機能を有する。
【００６０】
図４に例示するリード関数５２２において、“アクセス情報[idx]. Address = Address”は、データアクセス先（リード元）のデバイス１３のレジスタの位置情報をアクセス情報２０１に記録させるプログラム文である。
【００６１】
すなわち、プログラム文“アクセス情報[idx]. Address = Address”は、図３に例示するアクセス情報２０１におけるidxの値で特定されるindexに対応させて、dev_idおよびattributeにリード元のAddress（上位アドレス，下位アドレス）の情報を記録させる。
【００６２】
また、図４に例示するリード関数５２２において、“アクセス情報[idx]. Data = Data”は、アクセス情報２０１に、データアクセス先（リード元）のデバイス１３のレジスタの制御値（リード値）を記録させるプログラム文である。
【００６３】
プログラム文“アクセス情報[idx]. Data = Data”は、図３に例示するアクセス情報２０１におけるidxの値で特定されるindexに対応させて、valに制御値であるDataを記録させる。
【００６４】
さらに、図４に例示するリード関数５２２において、“アクセス情報[idx]. RW = R”は、アクセス情報２０１に、データアクセスがリードアクセスであることを記録させるプログラム文である。
【００６５】
プログラム文“アクセス情報[idx]. RW = R”は、図３に例示するアクセス情報２０１におけるidxの値で特定されるindexに対応させて、attributeにリードアクセスであることを示すR（Read）を記録させる。
【００６６】
このように、ＢＩＯＳ５０においては、ライト関数５２１がライト処理を行なう毎、およびリード関数５２２によりリード処理を行なう毎に、それぞれアクセス情報２０１にデバイス１３へのデータアクセスの履歴が記録される。アクセス情報２０１は、ＣＰＵ１０がＢＩＯＳ５０を実行することにより実際に行なわれた起動プロセス（実起動プロセス）において、デバイス１３に対して行なわれた実データアクセス（実データアクセス）についての履歴情報を記録するものである。
【００６７】
そして、ＢＩＯＳ５０のライト関数５２１およびリード関数５２２における、プログラム文“アクセス情報[idx]. Address = Address”，“アクセス情報[idx]. Data = Data”，“アクセス情報[idx]. RW = W”，“アクセス情報[idx]. RW = R”が、ＢＩＯＳ５０に埋め込まれたアクセス情報記録モジュールに相当し、アクセス情報記録部１０１としての機能を実現する。これらのアクセス情報記録モジュールを成すプログラム文は、デバイス１３に対するデータアクセスを行なう度に、そのデータアクセスの履歴を出力する。
【００６８】
［装置構成情報作成部１０４］
装置構成情報作成部１０４は、アクセス情報記録部１０１によってアクセス情報保存領域２０に格納されたアクセス情報２０１に基づき、装置構成情報３０１を作成する。
図５は実施形態の一例としての情報処理装置１における装置構成情報３０１を例示する図である。
【００６９】
装置構成情報３０１は、indexによって特定される各データアクセスについて、それぞれのアクセス先であるデバイス１３やレジスタについて表す情報である。図５に例示する装置構成情報３０１は、indexに対して、バス番号，Device番号，Function番号，I/O Start，I/O End，Memory Start，Memory End，INTおよびEtcを関連付けて構成されている。なお、Etcにおいては、デバイス１３の名前やSubsystem名，revision等が含まれる。なお、装置構成情報３０１に記録されるこれらの情報は既知であるので、その説明は省略する。
【００７０】
この装置構成情報３０１を参照することで、データアクセス先に関する情報を容易に得ることができる。本情報処理装置１においては、装置構成情報３０１は、後述する完了処理部１０５によって用いられる。
装置構成情報３０１は、例えば、メモリ１１やフラッシュメモリ１２，図示しない記憶装置等における所定の記憶領域に記録される。
【００７１】
装置構成情報作成部１０４は、各デバイス１３について、ＯＳに登録されている実デバイス情報から、例えば、デバイス名，バス種，レジスタサイズを取得する。
また、装置構成情報作成部１０４は、アクセス情報保存領域２０に記録されたアクセス情報２０１を取得する。
【００７２】
そして、装置構成情報作成部１０４は、アクセス情報保存領域２０から取得した全アクセス情報２０１と、実デバイス情報から取得した各情報とをマージすることで、装置構成情報３０１を作成する。
【００７３】
［装置エミュレータ１０３］
装置エミュレータ１０３は、本情報処理装置１の処理をエミュレートするものであり、本情報処理装置１の模倣を行ない、本情報処理装置１が起動時にＢＩＯＳ５０を実行することによって行なう各処理のシミュレーションを行なう。
【００７４】
装置エミュレータ１０３としての機能は、例えば、ＣＰＵ１０がエミュレーションプログラムを実行することで実現される。なお、装置エミュレータ１０３による本情報処理装置１のエミュレートは既知の手法を用いて実現することができ、その詳細な説明は省略する。
【００７５】
装置エミュレータ１０３は、情報処理装置１をエミュレートすることより、ＣＰＵ１０，メモリ１１，フラッシュメモリ１２，デバイス１３−１〜１３−４を備える情報処理装置１を仮想的に再現する。
【００７６】
図１においては、情報処理装置１を仮想的に再現したものを情報処理装置１ａとして示している。この情報処理装置１ａは、ＣＰＵ１０ａ，メモリ１１ａ，フラッシュメモリ１２ａ，デバイス１３ａ−１〜１３ａ−４を備える。
【００７７】
これらのＣＰＵ１０ａ，メモリ１１ａ，フラッシュメモリ１２ａ，デバイス１３ａ−１〜１３ａ−４は、情報処理装置１のＣＰＵ１０，メモリ１１，フラッシュメモリ１２，デバイス１３−１〜１３−４を仮想的に再現したものである。
そして、装置エミュレータ１０３は、この仮想的に再現した情報処理装置１ａを、ＢＩＯＳ５０の更新に使用前の更新用ＢＩＯＳ５０を用いて起動させるシミュレーションを行なう。
【００７８】
この更新用ＢＩＯＳ５０も、図４に示したように、リード／ライト関数５２のライト関数５２１およびリード関数５２２に、プログラム文“アクセス情報[idx]. Address = Address”，“アクセス情報[idx]. Data = Data”，“アクセス情報[idx]. RW = W”，“アクセス情報[idx]. RW = R”を有している。
【００７９】
従って、装置エミュレータ１０３が更新用ＢＩＯＳ５０を用いて情報処理装置１ａを起動させることで、アクセス情報２０１ａにデバイス１３ａのレジスタに対するデータアクセスの履歴が記録される。
【００８０】
このように、装置エミュレータ１０３が更新用ＢＩＯＳ５０を用いて情報処理装置１ａを起動させることで、ＣＰＵ１０がアクセス情報記録部１０１ａとして機能する。
【００８１】
装置エミュレータ１０３は、更新用ＢＩＯＳ５０を実行中のＣＰＵ１０の動作をエミュレーションすることで、アクセス情報２０１ａをエミュレーション結果として生成する。装置エミュレータ１０３は、更新用ＢＩＯＳ５０を用いた本情報処理装置１の起動プロセスのシミュレーションを行ない、このシミュレーションにおいて生じたデバイス１３ａへの仮想的なデータアクセス履歴をアクセス情報２０１ａとして記録させる。
【００８２】
なお、この装置エミュレータ１０３がアクセス情報記録部１０１ａとしての機能を実現することにより作成されるアクセス情報２０１ａは、例えば、メモリ１１やフラッシュメモリ１２，図示しない記憶装置等における、前述したアクセス情報２０１とは異なる所定の記憶領域に記録される。以下、アクセス情報２０１ａが記録される記憶領域を、アクセス情報保存領域２０ａという。
【００８３】
［ＢＩＯＳ確認部１０２］
ＢＩＯＳ確認部１０２は、アクセス情報記録部１０１によってアクセス情報保存領域２０に格納されたアクセス情報２０１を取得する。この取得したアクセス情報２０１は、例えば、メモリ１１等の所定の記憶領域に格納される。
【００８４】
また、ＢＩＯＳ確認部１０２は、アクセス情報記録部１０１ａ（装置エミュレータ１０３）によってアクセス情報保存領域２０ａに格納されたアクセス情報２０１ａを取得する。この取得したアクセス情報２０１ａは、例えば、メモリ１１等の所定の記憶領域に格納される。
そして、ＢＩＯＳ確認部１０２は、これらのアクセス情報２０１とアクセス情報２０１ａとを比較する。
【００８５】
具体的には、ＢＩＯＳ確認部１０２は、例えば、アクセス情報２０１の全てのindexにおけるdev_id，offsetおよびattributeの各値が、アクセス情報２０１ａの全てのindexにおけるdev_id，offsetおよびattributeの各値と一致するかを確認する。
【００８６】
そして、ＢＩＯＳ確認部１０２は、アクセス情報２０１とアクセス情報２０１ａとの間において、dev_id，offsetおよびattributeの少なくともいずれか１つが不一致のindexが１つでもあれば、そのアクセス情報２０１ａの記録に用いられた更新用ＢＩＯＳが当該情報処理装置１に不適合であると判定する。
【００８７】
ＢＩＯＳ確認部１０２は、不適合であると判定した更新用ＢＩＯＳ５０については、この更新用ＢＩＯＳ５０を用いたＢＩＯＳ５０の更新の実行を抑止する。例えば、ＢＩＯＳ確認部１０２は、更新用ＢＩＯＳ５０によるフラッシュメモリ１２のＢＩＯＳ５０の書き換えを阻止し、また、更新用ＢＩＯＳ５０が不適合でありＢＩＯＳ更新が未完了である旨のメッセージを、図示しないディスプレイ等に出力させる。
【００８８】
アクセス情報２０１とアクセス情報２０１ａとの間において、全てのindexについて、dev_id，offsetおよびattributeの各値が一致した場合には、ＢＩＯＳ確認部１０２は、そのアクセス情報２０１ａの記録に用いられた更新用ＢＩＯＳ５０が当該情報処理装置１に適合すると判定する。
ＢＩＯＳ確認部１０２は、判定の結果を完了処理部１０５に通知する。
【００８９】
［完了処理部１０５］
完了処理部１０５は、ＢＩＯＳ５０による情報処理装置１の設定を完了させる。完了処理部１０５は、ＢＩＯＳ確認部１０２により更新用ＢＩＯＳが当該情報処理装置１に適合するものであると判定された場合に、この更新用ＢＩＯＳ５０を用いて、フラッシュメモリ１２に格納されているＢＩＯＳ５０を上書き更新することで、ＢＩＯＳ５０の書き換えを行なう。
【００９０】
また、完了処理部１０５は、フラッシュメモリ１２のＢＩＯＳ５０を更新用ＢＩＯＳ５０で書き換えた後に、図示しないディスプレイ等に、本情報処理装置１の再起動を行なわせる指示を出力する。この指示を見たＣＥやユーザが本情報処理装置１を再起動させることで、この再起動の過程において更新用ＢＩＯＳ５０で書き換えられたＢＩＯＳ５０が用いられ、情報処理装置１の各デバイス１３の設定が行なわれる。
【００９１】
また、ＢＩＯＳ確認部１０２により、更新用ＢＩＯＳが当該情報処理装置１に適合するものではないと判定された場合には、完了処理部１０５は、図示しないディスプレイ等に、更新用ＢＩＯＳ５０が本情報処理装置１に適合するものでないことを示すメッセージ等を出力する。
【００９２】
（Ｂ）動作
上述の如く構成された実施形態の一例としての情報処理装置１における電源投入時の処理を、図６に示すフローチャート（ステップＡ１〜Ａ１５）に従って説明する。
【００９３】
先ず、ステップＡ１において、アクセス情報保存領域２０の初期化が行なわれた後、ステップＡ２において、フラッシュメモリ１２に格納されているＢＩＯＳ５０が起動される。
【００９４】
ステップＡ３において、ＢＩＯＳ５０が、デバイス１３へのアクセス操作を開始する。ステップＡ４において、アクセス情報記録部１０１がアクセス情報２０１にデータアクセスの履歴を記録する。すなわち、ＢＩＯＳ５０がデバイス１３のレジスタに制御値のライトやリードを行なう毎に、ライト関数５２１やリード関数５２２に埋め込まれたアクセス情報記録モジュールが、アクセス情報２０１にデータアクセスの履歴を記録する。なお、このアクセス情報記録部１０１による処理の詳細については図７を用いて後述する。
【００９５】
ステップＡ５において、ＢＩＯＳ５０がデバイス１３へのデータアクセス操作中状態管理情報１１３を完了すると、ステップＡ６において、ＯＳの起動が行なわれ、ＯＳの起動が完了する。
【００９６】
ステップＡ７において、装置構成情報作成部１０４が装置構成情報３０１を作成する。この装置構成情報作成部１０４による処理の詳細については、図１２を用いて後述する。
ステップＡ８において、ＣＥやユーザにより、更新用ＢＩＯＳ５０を用いたＢＩＯＳ更新操作が開始される。
【００９７】
ステップＡ９において、装置エミュレータ１０３が起動され、更新用ＢＩＯＳ５０についてのアクセス情報２０１ａの記録が行なわれる。そして、ＢＩＯＳ確認部１０２が、アクセス情報２０１とアクセス情報２０１ａとを比較する。このＢＩＯＳ確認部１０２による処理の詳細については図８〜図１０を用いて後述する。
【００９８】
ステップＡ１０において、ＢＩＯＳ確認部１０２は、更新用ＢＩＯＳが当該情報処理装置１に適合するものであるかを判定する。判定の結果、更新用ＢＩＯＳが当該情報処理装置１に適合するものである場合には（ステップＡ１０のＹＥＳルート参照）、ステップＡ１１に移行する。
【００９９】
ステップＡ１１においては、完了処理部１０５が、更新用ＢＩＯＳ５０を用いてＢＩＯＳ５０の更新を行なう。すなわち、フラッシュメモリ１２に格納されているＢＩＯＳ５０を更新用ＢＩＯＳ５０を用いて上書き更新する。
ステップＡ１２において、完了処理部１０５は、更新用ＢＩＯＳによるＢＩＯＳ更新が完了した旨のメッセージを、図示しないディスプレイ等に出力させる。
【０１００】
ステップＡ１３において、図示しないディスプレイ等に、本情報処理装置１の再起動を行なわせる指示を出力して、ＣＥやユーザに本情報処理装置１の再起動を実施させる。その後、処理はステップＡ８に戻る。
【０１０１】
一方、ステップＡ１０における判定の結果、更新用ＢＩＯＳが当該情報処理装置１に適合するものでない場合には（ステップＡ１０のＮＯルート参照）、ステップＡ１４に移行する。
【０１０２】
ステップＡ１４においては、完了処理部１０５は、ディスプレイ等に、更新用ＢＩＯＳ５０が本情報処理装置１に適合するものでないことを示すメッセージ等を出力する。
【０１０３】
また、ステップＡ１５において、ＢＩＯＳ５０の更新が未完了であることを示すメッセージ等をディスプレイ等に出力する。その後、処理はステップＡ８に戻る。
【０１０４】
次に、実施形態の一例としての情報処理装置１におけるアクセス情報記録部１０１の処理を、図７に示すフローチャート（ステップＢ１〜Ｂ４）に従って説明する。以下の処理は、図６のステップＡ４の処理の詳細に相当する。
ステップＢ１において、ＢＩＯＳ５０が設定を行なう対象のデバイス１３のレジスタにアクセスして、制御値のライトやリードを行なう。
【０１０５】
ステップＢ２において、ＢＩＯＳ５０（アクセス情報記録部１０１）は、バスを流れるデータから、アクセス対象のデバイス１３（レジスタ）についてのバス番号やレジスタオフセット，アクセス種別およびアクセス値を取得する。
【０１０６】
なお、これらのバス番号，レジスタオフセット．アクセス種別およびアクセス値が、それぞれ、前述したdev_id，offset，attributeおよびvalに相当する。ステップＢ３において、アクセス情報記録部１０１は、これらの取得した情報をアクセス情報２０１に記録する。
【０１０７】
ステップＢ４において、ＢＩＯＳ５０は、全てのデバイス１３に対する設定が完了したかを確認する。未設定のデバイス１３が残っている場合には（ステップＢ４のＮＯルート参照）、ステップＢ１に戻る。
また、全てのデバイス１３の設定が完了した場合には（ステップＢ４のＹＥＳルート参照）、処理を終了し、図６のステップＡ５に移行する。
【０１０８】
次に、実施形態の一例としての情報処理装置１におけるＢＩＯＳ確認部１０２による処理の概要を、図８に示すフローチャート（ステップＣ１〜Ｃ４）に従って説明する。以下の処理は、主に図６のステップＡ９の処理の詳細に相当する。
【０１０９】
ステップＣ１において、ＢＩＯＳ確認部１０２は、装置エミュレータ１０３を起動させ、更新用ＢＩＯＳ５０をＢＩＯＳとして用いて情報処理装置１ａを起動させるシミュレーションを開始する。
ステップＣ２において、装置エミュレータ１０３が更新用ＢＩＯＳ５０を用いて起動処理のシミュレーションを行なうことで、アクセス情報２０１ａが作成される。
ステップＣ３において、ＢＩＯＳ確認部１０２は、装置エミュレータ１０３によって作成されたアクセス情報２０１ａを取得する。
【０１１０】
ステップＣ４において、アクセス情報保存領域２０に格納されたアクセス情報２０１と、アクセス情報保存領域２０ａに格納されたアクセス情報２０１ａとを比較する。
【０１１１】
この比較の結果、アクセス情報２０１とアクセス情報２０１ａとの間において、アクセス先アドレスやデータアクセス種別に不一致がある場合には、ＢＩＯＳ確認部１０２は、そのアクセス情報２０１ａの記録に用いられた更新用ＢＩＯＳが当該情報処理装置１に不適合であると判定する。
【０１１２】
一方、アクセス情報２０１とアクセス情報２０１ａとの間において、アクセス先アドレスおよびデータアクセス種別が一致する場合には、ＢＩＯＳ確認部１０２は、そのアクセス情報２０１ａの記録に用いられた更新用ＢＩＯＳが当該情報処理装置１に適合すると判定する。
【０１１３】
次に、実施形態の一例としての情報処理装置１におけるＢＩＯＳ確認部１０２によるアクセス情報の比較手法を、図９に示すフローチャート（ステップＤ１〜Ｄ９）に従って説明する。
【０１１４】
本処理においては、アクセス情報２０１に記録された各情報とアクセス情報２０１ａに記録された各情報とを、それぞれの先頭のindexから末尾のindexに到達するまで順番に読み出して比較する。
【０１１５】
ステップＤ１において、ＢＩＯＳ確認部１０２は、本処理において用いるフラグ（NotFound[r_index]，Not_Complete）の初期化を行なう。これらのフラグは、ＢＩＯＳ確認部１０２によるアクセス情報２０１とアクセス情報２０１ａとの一致／不一致の確認に用いられるものである。なお、これらのフラグの初期化処理の詳細については、図１０を用いて後述する。
【０１１６】
ステップＤ２において、ＢＩＯＳ確認部１０２は、変数r_indexに１を設定する（r_index=1）。ＢＩＯＳ確認部１０２は、アクセス情報２０１のデータを読み込むためにindexを1にセットするのである。変数r_indexは、アクセス情報２０１，２０１ａのindexに対応するものであり、アクセス情報２０１，２０１ａにおける位置（確認箇所）を示す。
【０１１７】
ステップＤ３において、ＢＩＯＳ確認部１０２は、変数r_indexがr_index_MAXより大きいか（r_index > r_index_MAX）を確認する。ここで、r_index_MAXはアクセス情報２０１のindexの最大値である。図３に例示するアクセス情報２０１においてはr_index_MAX=17である。
変数r_indexがr_index_MAX以下である場合には（ステップＤ３のＮＯルート参照）、ステップＤ４に移行する。
【０１１８】
ステップＤ４において、ＢＩＯＳ確認部１０２は、アクセス情報２０１から変数r_indexの値に等しいindexに対応する各値を読み出す。以下、アクセス情報２０１における、変数r_indexの値に等しいindexに対応する各値をアクセス情報（Ａ）という場合がある。
アクセス情報（Ａ）は、本情報処理装置１の起動時にＢＩＯＳ５０が実際に各デバイス１３の設定を行なったことにより生成された実アクセス履歴情報である。
【０１１９】
また、ステップＤ５において、ＢＩＯＳ確認部１０２は、アクセス情報２０１ａから変数r_indexの値に等しいindexに対応する各値を読み出す。以下、アクセス情報２０１ａにおける、変数r_indexの値に等しいindexに対応する各値をアクセス情報（Ｂ）という場合がある。
【０１２０】
アクセス情報（Ｂ）は、装置エミュレータ１０３が、本情報処理装置１のエミュレーションを行なうことで仮想的に設けられた情報処理装置１ａを、更新用ＢＩＯＳ５０を用いて起動させるシミュレーションを行ない、各デバイス１３ａの設定を行なう過程で記録される仮想アクセス履歴情報である。
【０１２１】
ステップＤ６において、ＢＩＯＳ確認部１０２は、アクセス情報（Ｂ）のデータが０であるかを確認する。アクセス情報（Ｂ）のデータが０でない場合には（ステップＤ６のＮＯルート参照）、ステップＤ７に移行する。
ステップＤ７において、ＢＩＯＳ確認部１０２は、アクセス情報（Ａ）とアクセス情報（Ｂ）とが一致するかを確認する。
【０１２２】
確認の結果、アクセス情報（Ａ）とアクセス情報（Ｂ）とが不一致の場合には（ステップＤ７のＮＯルート参照）、ステップＤ８において、変数r_indexをインクリメント（r_index++）した後、ステップＤ３に戻る。
【０１２３】
一方、ステップＤ６における確認の結果、アクセス情報（Ｂ）のデータが０である場合には（ステップＤ６のＹＥＳルート参照）、ステップＤ９において、フラグNotFound[r_index]およびフラグNot_Complete）に、それぞれ1を設定し（NotFound[r_index]=1，フラグNot_Complete=1）、処理を終了する。すなわち、図６のフローチャートのステップＡ１０に戻る。
【０１２４】
また、ステップＤ７における確認の結果、アクセス情報（Ａ）とアクセス情報（Ｂ）とが一致する場合にも（ステップＤ７のＹＥＳルート参照）、ステップＤ９に移行する。
【０１２５】
なお、フラグNotFound[r_index]は、アクセス情報２０１において、r_indexによって特定されるindexの各情報が、アクセス情報２０１ａにおける同じindexの各情報と一致するかを示す。アクセス情報２０１とアクセス情報２０１ａとが同じであるindexについては、NotFound[r_index]=1が設定される。
【０１２６】
フラグNot_Completeは、アクセス情報２０１についてアクセス情報２０１ａとの比較が完了したか否かを示すフラグであり、アクセス情報２０１の末尾までアクセス情報２０１ａとの比較が完了した場合に、Not_Complete=1が設定される。
【０１２７】
また、ステップＤ３における比較の結果、変数r_indexがr_index_MAXより大きい場合には（ステップＤ３のＹＥＳルート参照）、そのまま処理を終了する。すなわち、図６のフローチャートのステップＡ１０に戻る。
【０１２８】
次に、実施形態の一例としての情報処理装置１０におけるＢＩＯＳ確認部１０２によるフラグの初期化処理を、図１０に示すフローチャート（ステップＥ１〜Ｅ６）に従って説明する。以下の処理は、図９のステップＤ１の処理の詳細に相当する。
【０１２９】
ステップＥ１において、ＢＩＯＳ確認部１０２は変数r_indexに１を設定する（r_index=1）。その後、ステップＥ２において、ＢＩＯＳ確認部１０２は、アクセス情報２０１（アクセス情報（Ａ））におけるr_indexの値に相当するindexについての情報を読み出す。
【０１３０】
ステップＥ３において、ＢＩＯＳ確認部１０２は、読み出したデータの値が0であるかを確認する。確認の結果、読み出したデータが0でない場合には（ステップＥ３のＮＯルート参照）、ステップＥ４に移行する。
【０１３１】
ステップＥ４において。ＢＩＯＳ確認部１０２は、フラグNotFound[r_index]およびフラグNot_Completeに、それぞれ0を設定し（NotFound[r_index]=0，フラグNot_Complete=0）する。これにより、これらのフラグNotFound[r_index]およびフラグNot_Completeが初期化される。
ステップＥ５において、ＢＩＯＳ確認部１０２は、変数r_indexをインクリメント（r_index++）した後、ステップＥ２に戻る。
【０１３２】
また、ステップＥ３における確認の結果、読み出したデータが0である場合には（ステップＥ３のＹＥＳルート参照）、ステップＥ６において、r_index_MAXに（r_index-1）を設定する。r_indexから1を減算するのは、図３に示すように、アクセス情報２０１の最終行は、全ての項目に0が登録された目印行となっており、この目印行をindexの総数から減算することで、indexの総数を正すためである。
その後、処理を終了し、図９のフローチャートのステップＤ２に移行する。
次に、実施形態の一例としての情報処理装置１における完了処理部１０５の処理を、図１１に示すフローチャート（ステップＦ１〜Ｆ１０）に従って説明する。
なお、以下に示す処理は、図６に示したフローチャートにおけるステップＡ１０〜Ａ１５の処理に相当する。
【０１３３】
ステップＦ１においては、完了処理部１０５は、変数r_indexに１を設定する（r_index=1）とともに、フラグNotFoundFlagに0を設定する（NotFoundFlag=0）ことで初期化を行なう。なお、フラグNotFoundFlagは、アクセス情報２０１とアクセス情報２０１ａとの間において、全てのindexについて情報が一致するかを示す。アクセス情報２０１とアクセス情報２０１ａとの間において、全てのindexについて情報が一致する場合にのみ0が設定される。
【０１３４】
ステップＦ２において、完了処理部１０５は、r_indexがr_index_MAXより大きいか（r_index > r_index_MAX）を確認する。すなわち、完了処理部１０５は、r_indexがアクセス情報２０１の最終行に到達したかを確認する。
【０１３５】
ステップＦ２における確認の結果、r_indexがr_index_MAX以下の場合には（ステップＦ２のＮＯルート参照）、ステップＦ３において、完了処理部１０５は、フラグNotFound[r_index]に１が設定されているかを確認する。なお、フラグNotFound[r_index ]は、図９に示したフローチャートのステップＤ９において設定される。
【０１３６】
ステップＦ３における確認の結果、フラグNotFound[r_index]に１が設定されている場合には（ステップＦ３のＹＥＳルート参照）、ステップＦ４において、フラグNotFoundFlagに１が設定される（NotFoundFlag=1）。
【０１３７】
その後、ステップＦ５において、完了処理部１０５は、装置構成情報３０１から、r_indexの値のindexに対応する情報（デバイス１３の情報）を読み出す。完了処理部１０５は、この装置構成情報３０１から読み出したデバイス１３に関する情報を、当該デバイス１３に対してリード／ライトを行なうことができない旨のエラーメッセージを、図示しないディスプレイ等に出力させる。
その後、ステップＦ６において、r_indexの値をインクリメントして（r_index++）、ステップＦ２に戻る。
【０１３８】
また、ステップＦ３における確認の結果、フラグNotFound[r_index]に１が設定されていない場合には（ステップＦ３のＮＯルート参照）、ステップＦ６に移行する。
【０１３９】
さらに、ステップＦ２における確認の結果、r_indexがr_index_MAXより大きい場合には（ステップＦ２のＹＥＳルート参照）、ステップＦ７に移行する。
【０１４０】
ステップＦ７において、完了処理部１０５は、フラグNotFoundFlagに１が設定されているか（NotFoundFlag=1）を確認する。フラグNotFoundFlagに１が設定されていない場合には（ステップＦ７のＮＯルート参照）、アクセス情報２０１とアクセス情報２０１ａとの間において、全てのindexについて情報が一致することを示す。
【０１４１】
ステップＦ８において、完了処理部１０５は、行進用ＢＩＯＳ５０を、フラッシュメモリ１２に書き込むことで、更新用ＢＩＯＳ５０を用いてＢＩＯＳ５０を上書き更新する。
ステップＦ９において、完了処理部１０５は、ディスプレイ等に、更新用ＢＩＯＳ５０を用いてＢＩＯＳ５０が更新されたことを出力し、処理を終了する。
【０１４２】
また、ステップＦ７における確認の結果、フラグNotFoundFlagに１が設定されている場合には（ステップＦ７のＹＥＳルート参照）、ステップＦ１０に移行する。
【０１４３】
ステップＦ１０において、完了処理部１０５は、ディスプレイ等に、更新用ＢＩＯＳ５０が本情報処理装置１に適合するものでないことを示すメッセージ等を出力する。
【０１４４】
次に、実施形態の一例としての情報処理装置１における、装置構成情報作成部１０４による処理を、図１２に示すフローチャート（ステップＨ１〜Ｈ３）に従って説明する。
【０１４５】
ステップＨ１においては、装置構成情報作成部１０４は、ＯＳに登録されている実デバイス情報から、本情報処理装置１に備えられた各デバイス１３の、例えば、デバイス名，バス種，レジスタサイズを取得する。
ステップＨ２において、装置構成情報作成部１０４は、アクセス情報保存領域２０に記録されたアクセス情報２０１を取得する。
【０１４６】
ステップＨ３において、装置構成情報作成部１０４は、アクセス情報保存領域２０から取得した全アクセス情報２０１と、実デバイス情報から取得した各情報とをマージすることで、装置構成情報３０１を作成し、処理を終了する。すなわち、図６に示すステップＡ８に移行する。
【０１４７】
（Ｃ）効果
このように、実施形態の一例としての情報処理装置１によれば、ＢＩＯＳ５０が実際に各デバイス１３に対して行なうデータアクセスをアクセス情報２０１として記録する。
【０１４８】
また、装置エミュレータ１０３が、本情報処理装置１０を仮想的に再現した情報処理装置１ａを、更新用ＢＩＯＳ５０を用いて起動させるシミュレーションを行なう。これにより、アクセス情報２０１ａにデバイス１３ａのレジスタに対するデータアクセスの履歴がアクセス情報２０１ａに記録される。
【０１４９】
そして、ＢＩＯＳ確認部１０２が、アクセス情報２０１とアクセス情報２０１ａとを比較し、これらが一致する場合に、更新用ＢＩＯＳ５０が本情報処理装置１に適合すると判定し、このように適合と判定した更新用ＢＩＯＳ５０についてのみ、ＢＩＯＳ５０の更新への使用を許可する。
【０１５０】
すなわち、本情報処理装置１の起動に実際に使用されたＢＩＯＳ５０と同様のデータアクセスを実現する更新用ＢＩＯＳ５０だけがＢＩＯＳ５０の更新に用いられる。本情報処理装置１に適合すると判定された更新用ＢＩＯＳ５０は、本情報処理装置１を確実に起動させることができる。
【０１５１】
これにより、本情報処理装置１を確実に起動させることができる更新用ＢＩＯＳ５０だけがＢＩＯＳ５０の更新に用いられ、本情報処理装置１に適合しないＢＩＯＳ５０が適用されることがなく、信頼性を向上させることができる。
【０１５２】
（Ｄ）その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１５３】
例えば、上述した実施形態において、ＢＩＯＳ確認部１０２は、アクセス情報２０１の全てのindexについてのdev_id，offsetおよびattributeの各値がアクセス情報２０１ａの全てのindexについてのdev_id，offsetおよびattributeの各値と一致するかを確認しているが、これに限定されるものではない。例えば、これらのdev_id，offsetおよびattributeの各値に加えてvalの値がアクセス情報２０１とアクセス情報２０１ａとの間で一致するかを判断してもよい。
【０１５４】
また、上述した実施形態においては、ＢＩＯＳ確認部１０２は、アクセス情報２０１とアクセス情報２０１ａとを、これらの先頭から順番に同一のindexについてのdev_id，offsetおよびattributeの各値を比較して、互いに一致するかを判断しているが、これに限定されるものではない。
【０１５５】
例えば、アクセス情報２０１の各indexにおける各値と、アクセス情報２０１ａの各indexにおける各値を総当りで比較することで、互いに一致するかを判断してもよい。
【０１５６】
実施形態の一例としての情報処理装置１におけるＢＩＯＳ確認部１０２によるアクセス情報の比較手法の他の例を、図１３に示すフローチャート（ステップＧ１〜Ｇ１１）に従って説明する。
本処理においては、アクセス情報２０１に記録された各情報とアクセス情報２０１ａに記録された各情報とを、総当りで比較する。
【０１５７】
ステップＧ１において、ＢＩＯＳ確認部１０２は、本処理において用いるフラグ（NotFound[r_index]，Not_Complete）の初期化を行なう。なお、このフラグの初期化処理の詳細については、図９に示した処理と同様である。
【０１５８】
ステップＧ２において、ＢＩＯＳ確認部１０２は、変数r_indexに１を設定する（r_index=1）。ＢＩＯＳ確認部１０２は、アクセス情報２０１のデータを読み込むためにindexを1にセットするのである。
【０１５９】
ステップＧ３において、ＢＩＯＳ確認部１０２は、変数r_indexがr_index_MAXより大きいか（r_index > r_index_MAX）を確認する。ここで、r_index_MAXはアクセス情報２０１のindexの最大値である。図３に例示するアクセス情報２０１においてはr_index_MAX=17である。
変数r_indexがr_index_MAX以下である場合には（ステップＧ３のＮＯルート参照）、ステップＧ４に移行する。
【０１６０】
ステップＧ４において、ＢＩＯＳ確認部１０２は、アクセス情報２０１から変数r_indexの値に等しいindexに対応する各値を読み出す。以下、アクセス情報２０１における、変数r_indexの値に等しいindexに対応する各値をアクセス情報（Ａ）という場合がある。
【０１６１】
また、ステップＧ５において、ＢＩＯＳ確認部１０２は、変数v_indexに１を設定する（v_index=1）。ＢＩＯＳ確認部１０２は、アクセス情報２０１ａのデータを読み込むためにindexを1にセットするのである。
【０１６２】
その後、ステップＧ６において、ＢＩＯＳ確認部１０２は、アクセス情報２０１ａから変数v_indexの値に等しいindexに対応する各値を読み出す。以下、アクセス情報２０１ａにおける、変数v_indexの値に等しいindexに対応する各値をアクセス情報（Ｂ）という場合がある。
【０１６３】
ステップＧ７において、ＢＩＯＳ確認部１０２は、アクセス情報（Ｂ）のデータが０であるかを確認する。アクセス情報（Ｂ）のデータが０でない場合には（ステップＧ７のＮＯルート参照）、ステップＧ１０に移行する。
ステップＧ１０において、ＢＩＯＳ確認部１０２は、アクセス情報（Ａ）とアクセス情報（Ｂ）とが一致するかを確認する。
【０１６４】
確認の結果、アクセス情報（Ａ）とアクセス情報（Ｂ）とが一致する場合には（ステップＧ１０のＹＥＳルート参照）、ステップＧ９において、変数r_indexをインクリメント（r_index++）した後、ステップＧ３に戻る。
【０１６５】
一方、ステップＧ１０における確認の結果、アクセス情報（Ａ）とアクセス情報（Ｂ）とが不一致である場合には（ステップＧ１０のＮＯルート参照）、ステップＧ１１において、変数v_indexをインクリメント（v_index++）した後、ステップＧ６に戻る。
【０１６６】
また、ステップＧ７における確認の結果、アクセス情報（Ｂ）のデータが０である場合には（ステップＧ７のＹＥＳルート参照）、ステップＧ８において、フラグNotFound[r_index]およびフラグNot_Complete）に、それぞれ1を設定し（NotFound[r_index]=1，フラグNot_Complete=1）、ステップＧ９に移行する。
【０１６７】
また、ステップＧ３における確認の結果、変数r_indexがr_index_MAXより大きい場合には（ステップＧ３のＹＥＳルート参照）、処理を終了する。すなわち、図６のフローチャートのステップＡ１０に戻る。
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１６８】
（Ｅ）付記
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
情報処理装置において、
１つ以上のデバイスと、
第１の起動プログラムを実行することにより行なわれる当該情報処理装置の起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録する第１履歴情報記録部と、
前記第１履歴情報と、当該情報処理装置において第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する抑止部と
を備えることを特徴とする、情報処理装置。
【０１６９】
（付記２）
前記第１の起動プログラムおよび前記第２の起動プログラムが、前記デバイスに対してデータアクセスを行なう度に、当該データアクセスの履歴を出力するアクセス情報記録モジュールを備える
ことを特徴とする、付記１記載の情報処理装置。
【０１７０】
（付記３）
前記第１履歴情報および前記第２履歴情報が、アクセス先アドレスおよびデータアクセス種別をそれぞれ備え、
前記第１履歴情報の前記アクセス先アドレスおよび前記データアクセス種別において、前記第２履歴情報の前記アクセス先アドレスおよび前記データアクセス種別と相違するものがある場合に、前記第１履歴情報と前記第２履歴情報とが不一致であると判定する判定部を備える
ことを特徴とする、付記１または２記載の情報処理装置。
【０１７１】
（付記４）
１つ以上のデバイスを備えるコンピュータに、
第１の起動プログラムを実行することにより行なわれる当該コンピュータの起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録し、
前記第１履歴情報と、当該コンピュータにおいて第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する
処理を実行させることを特徴とする、制御プログラム。
【０１７２】
（付記５）
前記第１の起動プログラムおよび前記第２の起動プログラムが、前記デバイスに対してデータアクセスを行なう度に、当該データアクセスの履歴を出力するアクセス情報記録モジュールを備える
ことを特徴とする、付記４記載の制御プログラム。
【０１７３】
（付記６）
前記第１履歴情報および前記第２履歴情が、アクセス先アドレスおよびデータアクセス種別をそれぞれ備え、
前記第１履歴情報の前記アクセス先アドレスおよび前記データアクセス種別において、前記第２履歴情報の前記アクセス先アドレスおよび前記データアクセス種別と相違するものがある場合に、前記第１履歴情報と前記第２履歴情報とが不一致であると判定する
処理を、前記コンピュータに実行させることを特徴とする、付記４または５記載の制御プログラム。
【０１７４】
（付記７）
１つ以上のデバイスを備える情報処理装置において、
第１の起動プログラムを実行することにより行なわれる当該情報処理装置の起動プロセスをシミュレートし、前記起動プロセスにおいて前記デバイスに対して行なわれるデータアクセスについての第１履歴情報を記録する処理と、
前記第１履歴情報と、当該情報処理装置において第２の起動プログラムを実行することにより行なわれた実起動プロセスにおいて、前記デバイスに対して行なわれたデータアクセスについての第２履歴情報とが不一致である場合に、前記第１の起動プログラムによる前記第２の起動プログラムの書き換えを抑止する処理と
を備えることを特徴とする、起動プログラム制御方法。
【０１７５】
（付記８）
前記第１の起動プログラムおよび前記第２の起動プログラムが、前記デバイスに対してデータアクセスを行なう度に、当該データアクセスの履歴を出力するアクセス情報記録モジュールを備える
ことを特徴とする、付記７記載の起動プログラム制御方法。
【０１７６】
（付記９）
前記第１履歴情報および前記第２履歴情が、アクセス先アドレスおよびデータアクセス種別をそれぞれ備え、
前記第１履歴情報の前記アクセス先アドレスおよび前記データアクセス種別において、前記第２履歴情報の前記アクセス先アドレスおよび前記データアクセス種別と相違するものがある場合に、前記第１履歴情報と前記第２履歴情報とが不一致であると判定する処理
を備えることを特徴とする、付記７または８記載の起動プログラム制御方法。
【符号の説明】
【０１７７】
１    情報処理装置
１０    ＣＰＵ
１１    メモリ
１２    フラッシュメモリ
１３−１〜１３−４，１３    デバイス
２０    アクセス情報保存領域
５０    ＢＩＯＳ，更新用ＢＩＯＳ
５１    ＢＩＯＳベース部
５２    リード／ライト関数
５２１    ライト関数
５２２    リード関数
１００    ＢＩＯＳ書き込みツール
１０１    アクセス情報記録部
１０２    ＢＩＯＳ確認部
１０３    装置エミュレータ
１０４    装置構成情報作成部
１０５    完了処理部
２０１    アクセス情報
３０１    装置構成情報
【図１】
2018128719.tif 000003
【図２】
2018128719.tif 000004
【図３】
2018128719.tif 000005
【図４】
2018128719.tif 000006
【図５】
2018128719.tif 000007
【図６】
2018128719.tif 000008
【図７】
2018128719.tif 000009
【図８】
2018128719.tif 000010
【図９】
2018128719.tif 000011
【図１０】
2018128719.tif 000012
【図１１】
2018128719.tif 000013
【図１２】
2018128719.tif 000014
【図１３】
2018128719.tif 000015