(57)【要約】【課題】取り外し可能な第２の記憶装置が取り外されていることかを起動時に検出し、検出結果を記録すること。【解決手段】オペレーティングシステムと、前記オペレーティングシステムを起動するためのオペレーティングシステム起動コードと、所定のログ情報を格納する処理と前記オペレーティングシステム起動コードを呼び出す処理とを実行するための第１のブートローダと、前記第１のブートローダを呼び出す処理を実行するための第１の起動コードとを格納する第１の記憶装置と、前記情報処理装置の起動時に前記第１の起動コードを実行することによって、第２の記憶装置が前記情報処理装置に接続されているか否かを判定し、前記第２の記憶装置が前記情報処理装置に接続されていない場合、前記第２の起動コードによって前記第１のブートローダを呼び出して前記第１のブートローダを実行する、プロセッサとを具備する。【選択図】    図１
2012216033.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
オペレーティングシステムと、前記オペレーティングシステムを起動するためのオペレーティングシステム起動コードと、所定のログ情報を格納する処理と前記オペレーティングシステム起動コードを呼び出す処理とを実行するための第１のブートローダと、前記第１のブートローダを呼び出す処理を実行するための第１の起動コードとを格納する第１の記憶装置と、
前記情報処理装置の起動時に前記第１の起動コードを実行することによって、第２の記憶装置が前記情報処理装置に接続されているか否かを判定し、前記第２の記憶装置が前記情報処理装置に接続されていない場合、前記第２の起動コードによって前記第１のブートローダを呼び出して前記第１のブートローダを実行する、
プロセッサとを具備する情報処理装置。
【請求項２】
前記第２の記憶装置が前記情報処理装置に接続されている場合、前記プロセッサは、前記第１の起動コードによって、前記第２の記憶装置に格納され、前記オペレーティングシステムを起動するための第２のブートローダを呼び出して前記第２のブートローダを実行する
請求項１に記載の情報処理装置。
【請求項３】
前記第２の記憶装置を前記第１の記憶装置のキャッシュとして用いるキャッシュ制御手段を更に具備する請求項１に記載の情報処理装置。
【請求項４】
前記オペレーティングシステムの起動後、前記プロセッサは、監視プログラムファイルによって、前記第１の起動コードおよび前記ログ情報の改変を禁止する処理を実行する
請求項１に記載の情報処理装置。
【請求項５】
前記第２の記憶装置が前記情報処理装置に接続されていない場合、前記プロセッサは、前記監視プログラムファイルによって、前記第２の記憶装置が取り外されていることを通知する処理を実行する
請求項４に記載の情報処理装置。
【請求項６】
オペレーティングシステムと、前記オペレーティングシステムを起動するためのオペレーティングシステム起動コードと、所定のログ情報を格納する処理と前記オペレーティングシステム起動コードを呼び出す処理とを実行するための第１のブートローダと、前記第１のブートローダを呼び出す処理を実行するための第１の起動コードとを格納する第１の記憶装置と、プロセッサとを有する情報処理装置の起動方法であって、
前記情報処理装置の起動時に、前記プロセッサが、前記第１の起動コードによって、第２の記憶装置が前記情報処理装置に接続されているか否かを判定する処理を実行し、
前記第２の記憶装置が前記情報処理装置に接続されていない場合、前記プロセッサが、前記第２の起動コードによって、前記第１のブートローダを呼び出す処理を実行する、
情報処理装置の起動方法。
【請求項７】
前記第２の記憶装置が前記情報処理装置に接続されている場合、前記プロセッサが、前記第１の起動コードによって、前記第２の記憶装置に格納され、前記オペレーティングシステムを起動するための第２のブートローダを呼び出す処理を実行する
請求項６に記載の情報処理装置の起動方法。
【請求項８】
前記情報処理装置は、前記第２の記憶装置を前記第１の記憶装置のキャッシュとして用いる請求項６に記載の情報処理装置の起動方法。
【請求項９】
前記オペレーティングシステムの起動後、前記プロセッサは、監視プログラムファイルによって、前記第１の起動コードおよび前記ログ情報の改変を禁止する処理を実行する
請求項６に記載の情報処理装置の起動方法。
【請求項１０】
前記第２の記憶装置が前記情報処理装置に接続されていない場合、前記プロセッサは、前記監視プログラムファイルによって、前記第２の記憶装置が取り外されていることを通知する処理を実行する
請求項９に記載の情報処理装置の起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置が取り外し可能な情報処理装置および情報処理装置の起動方法に関する。
【背景技術】
【０００２】
現在、コンピュータにおいて、取り外し可能な記憶装置をＨＤＤのキャッシュメモリとして用いることが提案されている。
【０００３】
起動時に記憶装置が取り外されているかを検出することは行われていなかった。そのため、記憶装置が取り外されている場合に、システムが記憶装置内のキャッシュデータを読み出そうとして、システムに不具合が生じる恐れがある。
【０００４】
また、取り外し可能な記憶装置がキャッシュメモリとして用いられていなくても、システムの実行に関連するデータが格納されている取り外し可能な記憶装置が取り外されている場合、システムが、記憶装置内のデータを読み出そうとした場合に、システムに不具合が生じる恐れがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０００−５１１３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
起動時に記憶装置が取り外されている場合、システムが記憶装置内のデータを読み出そうとすると、不具合が生じる恐れがあるので、起動時に記憶装置が取り外されているかを判定し、判定結果を記録することが望まれている。
【０００７】
本発明の目的は、起動時に記憶装置が取り外されているかを判定し、判定結果を記録することが可能な情報処理装置および情報処理装置の起動方法を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、情報処理装置は、第１の記憶装置と、プロセッサとを具備する。第１の記憶装置は、オペレーティングシステムと、前記オペレーティングシステムを起動するためのオペレーティングシステム起動コードと、所定のログ情報を格納する処理と前記オペレーティングシステム起動コードを呼び出す処理とを実行するための第１のブートローダと、前記第１のブートローダを呼び出す処理を実行するための第１の起動コードとを格納する。プロセッサは、前記情報処理装置の起動時に前記第１の起動コードを実行することによって、第２の記憶装置が前記情報処理装置に接続されているか否かを判定し、前記第２の記憶装置が前記情報処理装置に接続されていない場合、前記第２の起動コードによって前記第１のブートローダを呼び出して前記第１のブートローダを実行する。
【図面の簡単な説明】
【０００９】
【図１】実施形態の情報処理装置の構成を示すブロック図。
【図２】実施形態の情報処理装置のハードディスクドライブに格納されるデータの構成を示す図。
【図３】実施形態の情報処理装置によって実行される起動プロセス変更プログラムの構成を示すブロック図。
【図４】実施形態の情報処理装置によって実行される起動プロセス変更プログラムが、カーネル起動コードを実行させるまでのプロセスを変更するための手順を示すフローチャート。
【図５】実施形態の情報処理装置によって実行される第１連続領域を確保する手順を示すフローチャート。
【図６】実施形態の情報処理装置のハードディスクドライブの状態を示す図。
【図７】実施形態の情報処理装置のハードディスクドライブの状態を示す図。
【図８】実施形態の情報処理装置のハードディスクドライブの状態を示す図。
【図９】実施形態の情報処理装置のハードディスクドライブの状態を示す図。
【図１０】実施形態の情報処理装置によって実行される第２連続領域を確保する手順を示すフローチャート。
【図１１】実施形態の情報処理装置のＳＳＤの状態を示す図。
【図１２】実施形態の情報処理装置のＳＳＤの状態を示す図。
【図１３】実施形態の情報処理装置のハードディスクドライブの状態を示す図。
【図１４】実施形態の情報処理装置のＳＳＤの状態を示す図。
【図１５】実施形態の情報処理装置のハードディスクドライブの状態を示す図。
【図１６】実施形態の情報処理装置が書き替え起動コードを実行することによって行われる処理の手順を示すフローチャート。
【図１７】実施形態の情報処理装置がキャッシュ有り用ブートローダを実行することによって行われる処理の手順を示すフローチャート。
【図１８】図１７のフローチャートにおけるリクエスト監視ルーチンによって行われる処理の手順を示すフローチャート。
【図１９】実施形態の情報処理装置がログ記録用ブートローダを実行することによって行われる処理の手順を示すフローチャート。
【図２０】オペレーティングシステムの起動中に実行される処理を説明するための図。
【図２１】オペレーティングシステムの起動後に実行される処理を説明するための図。
【図２２】実施形態の情報処理装置によって実行される管理アプリケーションプログラムの構成を示すブロック図。
【図２３】実施形態の情報処理装置が管理アプリケーションプログラムを実行することによって行われる処理の手順を示すフローチャート。
【図２４】実施形態の情報処理装置が管理アプリケーションプログラムを実行することによって行われる処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、実施の形態について図面を参照して説明する。
【００１１】
図１は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータ１０として実現されている。
【００１２】
図１に示すように、本情報処理装置１０は、ＣＰＵ（Central processing unit）１１、ＭＣＨ（Memory controller hub）１２、メインメモリ１３、ＩＣＨ（I/o controller hub）１４、ＧＰＵ（Graphics processing unit）１５、ビデオメモリ（ＶＲＡＭ）１５Ａ、サウンドコントローラ１６、ＢＩＯＳ−ＲＯＭ（Read only memory）１７、第１の記憶装置としてのハードディスクドライブ（ＨＤＤ）１８、ＯＤＤ（Optical disc drive）１９、各種周辺機器２１、ＥＥＰＲＯＭ（Electrically erasable programmable ROM）２２、ＥＣ／ＫＢＣ（Embedded controller/keyboard controller）２３等を備えている。
【００１３】
ＣＰＵ１１は、本情報処理装置の動作を制御するプロセッサであり、ＨＤＤ１８やＯＤＤ１９からメインメモリ１３にロードされる各種プログラムを実行する。このＣＰＵ１１によって実行される各種プログラムの中には、リソース管理を司るオペレーティングシステム（ＯＳ）１１０や、当該ＯＳ１１０の配下で動作する、キャッシュドライバ１２０および各種アプリケーションプログラム１３０等が存在する。
【００１４】
また、ＣＰＵ１１は、ＢＩＯＳ−ＲＯＭ１７に格納されたＢＩＯＳも実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。以下では、ＢＩＯＳ−ＲＯＭ１７の格納物であるＢＩＯＳ自体についてもＢＩＯＳ１７と表記することがある。
【００１５】
ＭＣＨ１２は、ＣＰＵ１１とＩＣＨ１４との間を接続するブリッジとして動作すると共に、メインメモリ１３をアクセス制御するメモリコントローラとして動作する。また、ＭＣＨ１２は、ＧＰＵ１５との通信を実行する機能を有している。
【００１６】
ＧＰＵ１５は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。ＧＰＵ１５は、ＶＲＡＭ１５Ａを有し、また、各種プログラムが表示しようとする画像をＣＰＵ１１に代わって描画するアクセラレータを搭載している。
【００１７】
ＩＣＨ１４は、ＨＤＤ１８、およびＯＤＤ１９を制御するためのＩＤＥ（Integrated device electronics）コントローラを内蔵する。ＩＣＨ１４は、ＰＣＩ（Peripheral component interconnect）バスに接続された各種周辺機器２１の制御も行う。また、ＩＣＨ１４は、サウンドコントローラ１６との通信機能も有している。
【００１８】
また、ＩＣＨ１４は、コンピュータ本体から取り外し可能な、第２の記憶装置としてのＳＳＤ（Solid State Drive）３１と通信を行うＵＳＢコントローラ１４Ａを内蔵する。なお、ＳＳＤ３１は、ＨＤＤ１８よりもランダムアクセス速度が高速で、取り外し可能な不揮発メモリである。
【００１９】
キャッシュドライバ１２０は、ＨＤＤ１８とＳＳＤ３１とを制御するプログラムである。本情報処理装置は、ＳＳＤ３１の一部または全部をＨＤＤ１８のキャッシュとして利用することで、ＳＳＤ３１に対するアクセスの高速化を図る。キャッシュドライバ１２０は、そのための仕組みを備えたものである。
【００２０】
サウンドコントローラ１６は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれ、または、外部接続されるスピーカ等に出力する。
【００２１】
ＥＥＰＲＯＭ２２は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、ＥＣ／ＫＢＣ２３は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された１チップＭＰＵ（Micro processing unit）である。
【００２２】
ＨＤＤに一般的に格納されるデータの構成について図２を参照して説明する。ＨＤＤ１８の先頭は、ブートセクタ２００と言われる。一般にＨＤＤ１８は複数の領域パーティション（またはボリューム）に分割して管理されている。図２に示す例では、第１パーティション２１０および第２パーティション２２０が設定されている。ＨＤＤ１８の各パーティションを管理するための管理情報はブートセクタ２００内にレイアウト情報（パーティションテーブル）２０２として格納されている。管理可能なパーティションの数は有限である。各々のパーティションはファイルシステムによってさらに細かい単位で管理される。
【００２３】
また、ブートセクタ２００には、ＢＩＯＳによって実行が開始される、第１の起動コードとしての起動コード２０１が格納されている。起動コード２０１は、第１パーティション２１０の先頭ブロックに格納されている、オペレーティングシステム起動コードとしてのカーネル起動コード２１１を実行させる。カーネル起動コード２１１は、オペレーティングシステム１１０のカーネルを実行させる機能を有する。
【００２４】
一般的なオペレーティングシステム１１０の起動について説明する。電源をオンした後、またはリセットされた場合、ＣＰＵ１１によってＢＩＯＳが実行される。ＢＩＯＳはPower On Self Test（ＰＯＳＴ）処理を実行することによって、オペレーティングシステム１１０の起動に必要な機器が正常に動作するかをチェックする。また、同時にそれら周辺機器の初期化も行う。次にＢＩＯＳは、ブート可能なデバイスを探す。ＢＩＯＳがブート可能デバイス（ＨＤＤ１８）を検出すると、ＢＩＯＳは検出されたデバイス（ＨＤＤ１８）のブートセクタに格納されている起動コード２０１をメモリ１３にロードし、起動コード２０１をＣＰＵ１１に実行させる。起動コード２０１はレイアウト情報２０２からＨＤＤ１８内のアクティブなパーティション（第１パーティション２１０）を検出する。アクティブなパーティションを検出すると、起動コード２０１は、アクティブなパーティション（第１パーティション２１０）の先頭に格納されている、オペレーティングシステム１１０のカーネルを実行させるためのカーネル起動コード２１１をメモリ１３にロードし、ロードされたカーネル起動コード２１１をＣＰＵ１１に実行させる。
【００２５】
ところで、本装置は、ＳＳＤ３１をキャッシュメモリとして利用する。ＳＳＤ３１は、取り外し可能なメディアであるので、オペレーティングシステムの起動時に取り外されている場合がある。上述した一般的な起動プロセスでは、ＳＳＤ３１の有無を検出するようなことを行っていない。
【００２６】
以下では、オペレーティングシステムの起動時にＳＳＤ３１が取り外されている場合に、ＳＳＤ３１が取り外されていることが記述されているログを記録することが可能なように、ＨＤＤ１８に格納されている起動コード２０１を変更する例について説明する。
【００２７】
ログを記録するために、ＣＰＵ１１によって実行される起動プロセス変更プログラムによって、ＨＤＤ１８内の起動コード２０１の書き替え、およびログの記録を行うログ起動用ブートローダの書き込み、ＳＳＤ３１へのキャッシュ有り用ブートローダの書き込み等が行われる。
【００２８】
図３を参照して、起動プロセス変更プログラムの構成を説明する。  
起動プロセス変更プログラム３００は、第１連続領域確保部３０１、第２連続領域確保部３０２、および起動コード／ブートローダ変更部３０３等を備えている。
【００２９】
第１連続領域確保部３０１は、ＨＤＤ１８にログ起動用ブートローダを書き込むための第１連続領域を確保する処理を行う。第２連続領域確保部３０２は、ＳＳＤ３１内にキャッシュ有り用ブートローダを書き込まれると共に、キャッシュデータが格納される第２連続領域を確保する処理を行う。起動コード／ブートローダ変更部３０３は、第１連続領域および第２連続領域の確保後、第１連続領域にログ記録用ブートローダ７３１を格納する処理と、第２連続領域にキャッシュ有り用ブートローダを格納する処理と、起動コード２０１を別の起動コードによって書き替える処理とを行う。
【００３０】
先ず、起動プロセス変更プログラム３００が、カーネル起動コード２１１を実行させるまでのプロセスを変更するための手順を図４を参照して説明する。
【００３１】
先ず、起動プロセス変更プログラム３００の第１連続領域確保部３０１は、ＨＤＤ１８内に第１連続領域を確保する（ステップ４０１）。図５を参照して、起動プロセス変更プログラムが、第１連続領域を確保する処理の手順を説明する。
【００３２】
第１連続領域確保部３０１は、ＨＤＤ１８のブートセクタ２００からレイアウト情報２０２を読み出す。第１連続領域確保部３０１は、読み出されたレイアウト情報２０２に基づいてＨＤＤ１８に設定されているパーティションの数が最大数未満であるかを判定する（ステップ５０１）。
【００３３】
設定されているパーティションの数が最大数未満であると判定した場合（ステップ５０１のＹｅｓ）、第１連続領域確保部３０１は、ＨＤＤ１８に第１連続領域を生成するために必要な容量より大きく、パーティションが割り当てられていない領域があるかを判定する（ステップ５０２）。ＨＤＤ１８に第１連続領域を生成するために必要な容量より大きく、パーティションが割り当てられていない領域がないと判定した場合（ステップ５０２のＮｏ）、第１連続領域確保部３０１は、オペレーティングシステム１１０にサイズを縮小することが可能なパーティションがあるかを問い合わせる。第１連続領域確保部３０１は、問い合わせに対するオペレーティングシステムからの応答に応じて、サイズを縮小することが可能なパーティションがあるかを判定する（ステップ５０３）。
【００３４】
例えば、ＨＤＤ１８の状態が図６に示す状態であり、第２パーティション２２０のサイズが縮小可能であり、第２パーティション２２０のサイズを縮小することが可能であると判定した場合（ステップ５０３のＹｅｓ）、第１連続領域確保部３０１は、第２パーティション２２０を選択する（ステップ５０４）。サイズを縮小することが可能なパーティションが複数ある場合、最もサイズを縮小することが可能なパーティションを選択する。
【００３５】
第１連続領域確保部３０１は、選択したパーティション（第２パーティション２２０）のサイズを縮小するための縮小処理を行う（ステップ５０５）。例えば、図７に示すように、第１連続領域確保部３０１は、第２パーティション２２０のサイズを縮小し、パーティションが設定されていない未管理領域２３０を生成する。この縮小処理は、オペレーティングシステムが提供している機能を使用しても良いし、第１連続領域確保部３０１が縮小処理を行う機能を有していても良い。
【００３６】
縮小処理後、第１連続領域確保部３０１は、未管理領域２３０が第１連続領域を生成するために必要な容量を有するかを判定する（ステップ５０６）。未管理領域２３０が第１連続領域を生成するために必要な容量を有すると判定した場合（ステップ５０６のＹｅｓ）、またはステップ５０２においてＨＤＤ１８が図７に示す状態であり、ＨＤＤ１８に第１連続領域を生成するために必要な容量より大きい、パーティションが割り当てられていない未管理領域２３０があると判定した場合（ステップ５０２のＹｅｓ）、第１連続領域確保部３０１は、図８に示すように、第１連続領域を確保するために必要な容量を有するパーティション（第３パーティション２３１）を作成する（ステップ５０７）。第３パーティション２３１の作成後、第１連続領域確保部３０１は、第３パーティション２３１に固定データを書き込むことによって、第３パーティション２３１を初期化する（ステップ５０８）。初期化後、第１連続領域確保部３０１は、初期化されているかを確認する。
【００３７】
ステップ５０１において設定されているパーティションの数が最大数未満ではないと判定した場合（ステップ５０１のＮｏ）、ステップ５０３においてパーティションのサイズを縮小することができないと判定した場合（ステップ５０３のＮｏ）、または第１連続領域を確保するために必要な容量を有する、パーティションが設定されていない領域がないと判定した場合（ステップ５０６のＮｏ）、第１連続領域確保部３０１は、ＨＤＤ１８内に既知のファイルシステムによって管理され、第１連続領域を確保するために必要な容量を有する空き領域を作成可能であるかを判定する（ステップ５０９）。
【００３８】
空き領域を作成可能であると判定した場合（ステップ５０９のＹｅｓ）、第１連続領域確保部３０１は、ＨＤＤ１８内のデータを移動させることによって、図９に示すように、アドレスが連続する空き領域２１２を作成する（ステップ５１０）。空き領域２１２作成後、第１連続領域確保部３０１は、作成された空き領域２１２の容量が第１連続領域を確保するために必要な容量より大きいかを判定する（ステップ５１１）。空き領域２１２の容量が第１連続領域を確保するために必要な容量より大きくないと判定した場合（ステップ５１１のＮｏ）、第１連続領域確保部３０１は、第１連続領域の確保処理を終了する。空き領域２１２の容量が第１連続領域を確保するために必要な容量より大きいと判定した場合（ステップ５１１のＹｅｓ）、第１連続領域確保部３０１は、空き領域２１２に固定データを書き込むことによって、空き領域２１２を初期化する（ステップ５０８）。以上でＨＤＤ１８での連続領域の確保処理の説明を終了する。
【００３９】
ＨＤＤ１８内での第１連続領域の確保処理が終了した後、第２連続領域確保部３０２は、ＳＳＤ３１のレイアウト情報内に起動フラグの値が起動可を示しているパーティションがあるかを判定する（ステップ４０２）。起動フラグの値が起動可を示しているパーティションがあると判定した場合（ステップ４０２のＹｅｓ）、起動可を示している起動フラグの値を起動フラグの値を起動不可を示す値に書き換える（ステップ４０３）。この書き換え処理は、ユーザの承諾後に行われる。
【００４０】
起動フラグの値が起動可を示しているパーティションがないと判定した場合（ステップ４０２のＮｏ）、または起動フラグを起動フラグの値を起動不可を示す値に書き換えた後（ステップ４０３）、第２連続領域確保部３０２はＳＳＤ３１に第２連続領域を確保する確保処理を行う（ステップ４０４）。ＳＳＤ３１に第２連続領域を確保する確保処理について図１０のフローチャートを参照して説明する。
【００４１】
第２連続領域確保部３０２は、ＳＳＤ３１のブートセクタ２００からレイアウト情報２０２を読み出す。ブートローダ設定プログラムは、読み出されたレイアウト情報２０２に基づいてＳＳＤ３１に設定されているパーティションの数が最大数未満であるかを判定する（ステップ６０１）。
【００４２】
最大数未満であると判定した場合（ステップ６０１のＹｅｓ）、第２連続領域確保部３０２は、ＳＳＤ３１に第２連続領域を確保するために必要な容量より大きい、パーティションが割り当てられていない領域があるかを判定する（ステップ６０２）。ＳＳＤ３１に第２連続領域を確保するために必要な容量より大きい、パーティションが割り当てられていない未管理領域がないと判定した場合（ステップ６０２のＮｏ）、第２連続領域確保部３０２は、オペレーティングシステム１１０に対してＳＳＤ３１にサイズを縮小することが可能なパーティションがあるかを問い合わせる。第２連続領域確保部３０２は、問い合わせに対するオペレーティングシステムからの応答に応じて、ＳＳＤ３１内にサイズを縮小することが可能なパーティションがあるかを判定する（ステップ６０３）。
【００４３】
サイズを縮小することが可能であると判定した場合（ステップ６０３のＹｅｓ）、第２連続領域確保部３０２は、ＳＳＤ３１から最もサイズを縮小することが可能なパーティションを選択する（ステップ６０４）。第２連続領域確保部３０２は、選択したパーティションのサイズを縮小するための縮小処理を行う（ステップ６０５）。この縮小処理は、オペレーティングシステムが提供している機能を使用しても良いし、第２連続領域確保部３０２が縮小処理を行う機能を有していても良い。縮小処理後、第２連続領域確保部３０２は、ＳＳＤ３１に第２連続領域を生成するために必要な容量を有する、パーティションが割り当てられていない未管理領域があるかを判定する（ステップ６０６）。第１連続領域を確保するために必要な容量を有する未管理領域があると判定した場合（ステップ６０６のＹｅｓ）、または第２連続領域を確保するために必要な容量より大きい、パーティションが割り当てられていない未管理領域があると判定した場合（ステップ６０２のＹｅｓ）、第２連続領域確保部３０２は、図１１に示すように、第２連続領域を確保するために必要な容量を有する第１パーティション７１０をＳＳＤ３１に作成する（ステップ６０７）。図１１に示すように、ＳＳＤの先頭のブートセクタ７００内には、第１パーティション７１０を管理するためのレイアウト情報７０２が格納されている。
【００４４】
第１パーティション７１０作成後、第２連続領域確保部３０２は、第１パーティション７１０に固定データを書き込むことによって、第１パーティション７１０を初期化する（ステップ６０８）。以上の処理によって、第２連続領域として第１パーティション７１０が生成される。
【００４５】
ステップ６０１においてＳＳＤ３１に設定されているパーティションの数が最大数未満ではないと判定した場合（ステップ６０１のＮｏ）、ステップ６０３においてパーティションサイズを縮小することができないと判定した場合（ステップ６０３のＮｏ）、または第２連続領域を確保するために必要な容量を有する未管理領域がないと判定した場合（ステップ６０６のＮｏ）、第２連続領域確保部３０２は、第２連続領域の確保処理を終了する。以上でＳＳＤ３１での連続領域の確保処理の説明を終了する。
【００４６】
なお、以下では、図８に示すようにＨＤＤ１８に第３パーティション２３１が第１連続領域として確保され、図１１に示すようにＳＳＤ３１に第１パーティション７１０が第２連続領域として確保された場合を説明する。
【００４７】
ＳＳＤ３１内に第２連続領域を確保することができた場合（ステップ４０５のＹｅｓ）、起動コード／ブートローダ変更部３０３は、ＨＤＤ１８の個体識別番号とＨＤＤ１８が接続されたコンピュータ本体の個体識別番号を取得する（ステップ４０６）。また、起動コード／ブートローダ変更部３０３は、カーネル起動コードの位置を取得する。次いで、起動コード／ブートローダ変更部３０３は、起動コード／ブートローダ変更部３０３が有するキャッシュ有り用ブートローダのマスターコードを取得された個体識別番号およびカーネル起動コードの位置に基づいてカスタマイズする（ステップ４０７）。起動コード／ブートローダ変更部３０３は、図１２に示すように、カスタマイズされたマスターコード７１２を有するブートローダ（以下、キャッシュ有り用ブートローダ）７１１をＳＳＤ３１の第１パーティション７１０の先頭ブロックから書き込む（ステップ４０８）。キャッシュ有り用ブートローダ７１１は、連続する領域に書き込まれる。カスタマイズされたマスターコード７１２には、キャッシュ有り用ブートローダ７１１が後述するカーネル起動コードを起動して良いかを判別するための情報として、ＨＤＤ１８の個体識別番号、コンピュータの個体識別番号、カーネル起動コードの位置が記録されている。
【００４８】
起動コード／ブートローダ変更部３０３は、図１２示すように、キャッシュ有り用ブートローダ７１１が格納されている最後の領域の次の領域に、後にＨＤＤ１８のブートセクタ２００に書き込まれるデータ（以下、ブートセクタデータ）７００Ａを書き込む。ブートセクタデータ７１０Ａは、書き替え起動コード７０１Ａ、およびレイアウト情報７０２Ａを有する。なお、この時点で、レイアウト情報７０２Ａは有効な情報を有していない。
【００４９】
そして、起動コード／ブートローダ変更部３０３は、ＨＤＤ１８内のブートセクタ２００からデータを読み出し（ステップ４０９）、読み出されたブートセクタ２００に格納されていたブートセクタデータ２００Ａをブートセクタデータ７００Ａが書き込まれている領域の次の領域から書き込む（ステップ４１０）。図１２に示すように、ＳＳＤ３１に書き込まれたブートセクタデータ２００Ａは、起動コード２０１およびレイアウト情報２０２Ａのコピーである起動コード２０１Ａおよびレイアウト情報２０２Ａを有する。
【００５０】
ＨＤＤ１８内に第１連続領域（第３パーティション２３１）が正常に確保された場合（ステップ４１１のＹｅｓ）、起動コード／ブートローダ変更部３０３は、図１３に示すように、第３パーティション２３１の先頭ブロックからログ記録用ブートローダ７３１を書き込む（ステップ４１２）。起動コード／ブートローダ変更部３０３は、ＨＤＤ１８またはＳＳＤ３１からブートセクタに格納されているデータを読み出し、ログ記録用ブートローダ７３１が書き込まれている最後のブロックの次のブロックから、読み出されたブートセクタデータ２００Ｂを書き込む（図１３）。ブートセクタデータ２００Ｂは、起動コード２０１およびレイアウト情報２０２Ａのコピーである起動コード２０１Ｂおよびレイアウト情報２０２Ｂを有する。
【００５１】
第１連続領域内のログ記録用ブートローダ７３１およびブートセクタデータ２００Ｂが書き込まれていない領域の少なくとも一部はログ記録用ブートローダがログ情報を書き込むログ記録領域２３２となる。
【００５２】
起動コード／ブートローダ変更部３０３は、ＨＤＤ１８のブートセクタ２００に書き込まれているレイアウト情報２０２を読み出し、読み出されたレイアウト情報２０２によってＨＤＤ１８内のブートセクタデータ７００Ａのレイアウト情報をＳＳＤ３１内のレイアウト情報７０２Ａを上書きし、ブートセクタデータ７００Ａにレイアウト情報２０２Ｂを生成する（ステップ４１３、図１４）。また、ＳＳＤ３１内のブートセクタデータ７００Ａ内に、ＨＤＤ１８の第３パーティション２３１内のログ記録用ブートローダ７３１の位置情報（先頭アドレスおよび大きさ）、およびログ記録領域２３２の位置情報（先頭アドレスおよび大きさ）を含む位置情報７０３Ａを書き込む。
【００５３】
さらに、ブートローダ書換プログラムは、ＨＤＤ１８のブートセクタ２００に、ＳＳＤ３１内のブートセクタデータ７００Ａを書き込むことによって、起動コード２０１およびレイアウト情報を書き換え起動コード７０１Ａおよび書き替えレイアウト情報２０２Ｂによって上書きすると共に、位置情報７０３Ｂを書き込む（ステップ４１４、図１５）。ブートローダ書換プログラムは、後述する管理アプリケーションプログラムをインストールする（ステップ４１５）。
【００５４】
もし、ＨＤＤ１８内に第１連続領域を確保することができなかった場合（ステップ４１１のＮｏ）、起動コード／ブートローダ変更部３０３は、ＨＤＤ１８のブートセクタ２００に書き込まれているレイアウト情報２０２を読み出し、読み出されたレイアウト情報２０２によってＨＤＤ１８内のブートセクタデータ７００Ａのレイアウト情報をＳＳＤ３１内のレイアウト情報７０２Ａを上書きする（ステップ４１６）。そして、ＳＳＤ３１内のブートセクタデータ７００Ａ内に、ＨＤＤ１８の第３パーティション２３１内のログ記録用ブートローダ７３１の位置情報（先頭アドレスおよび大きさ）、およびログ記録領域２３２の位置情報（先頭アドレスおよび大きさ）を含む位置情報を書き込む。なお、起動コード／ブートローダ変更部３０３は、ログ記録用ブートローダ７３１の位置情報として０や１などの明らかに異常とわかる値を設定することでログ取得機能が無効にする。さらに、起動コード／ブートローダ変更部３０３は、ＨＤＤ１８のブートセクタに、ＳＳＤ３１内の連続領域の先頭ブロックアドレスが埋め込まれている新たな書き換え起動コードを有するブロックを書き込むことによって、オリジナル起動コードを書き換え起動コードによって上書きする（ステップ４１６）。  
以上で、ブートセクタの書き替えする処理、およびログ記録用ブートローダ７３１を書き込む処理の説明を終了する。
【００５５】
次に、上述したブートセクタの書き替えする処理、およびログ記録用ブートローダ７３１を書き込む処理が終了した後の本装置の起動シーケンスについて説明する。  
電源オン直後、ないしリセット後、ＣＰＵ１１は、ＢＩＯＳを実行する。ＢＩＯＳはPower On Self Test（ＰＯＳＴ）処理を実行し、必要な機器が正常に動作するかをチェックする。また、同時にそれら周辺機器の初期化も実行する。次に初期プログラムは、ブート可能なデバイスを検索する。初期プログラムがブート可能なデバイス（ＨＤＤ１８）を検出すると、検出されたデバイスのブートセクタに格納されている起動コード７０１Ａをメモリ１３にロードし、ロードされた起動コード７０１ＡがＣＰＵ１１によって実行される。
起動コード７０１Ａによって行われる処理の手順を図１６のフローチャートを参照して説明する。  
起動コード７０１Ａは、レイアウト情報２０２Ｂに基づいてＳＳＤ３１を検索する（ステップ４０１）。ＳＳＤ３１を検出した場合（ステップ８０２のＹｅｓ）、起動コード７０１Ａは、ＳＳＤ３１からキャッシュ有り用ブートローダ７１１の読み出しを試みる（ステップ８０３）。読み出しに成功した場合（ステップ８０４のＹｅｓ）、起動コード７０１Ａは、キャッシュ有り用ブートローダ７１１をメモリ１３にロードし、ＣＰＵ１１にキャッシュ有り用ブートローダ７１１を実行させる（ステップ８０５）。
【００５６】
ＳＳＤ３１を検出しなかった場合（ステップ８０２のＮｏ）、またはＳＳＤ３１からキャッシュ有り用ブートローダ７１１を読み出せなかった場合（ステップ８０４のＮｏ）、起動コード７０１Ａは、ＨＤＤ１８のブートセクタ２００内の位置情報７０３Ｂ内のログ記録用ブートローダ７３１の位置情報に基づいてログ取得機能が有効になっているかを判定する（ステップ８０６）。有効になっていると判定した場合（ステップ８０６のＹｅｓ）、起動コード７０１Ａは、ＨＤＤ１８からログ記録用ブートローダ７３１をメモリ１３にロードすることを試みる（ステップ８０７）。ログ記録用ブートローダ７３１が正常にロードされた場合（ステップ８０７のＹｅｓ）、起動コード７０１Ａは、ロードされたログ記録用ブートローダ７３１をＣＰＵ１１に実行させる（ステップ８０９）。
【００５７】
ログ取得機能が有効になっていないと判定した場合（ステップ８０６のＮｏ）、またはログ記録用ブートローダ７３１が正常に読み出されなかった場合（ステップ８０８のＮｏ）、書き替えブートローダは、レイアウト情報２０２Ｂを参照することによってオペレーティングシステムのカーネルを起動するためのカーネル起動コード２１１をメモリ１３にロードし（ステップ８１１）、読み出されたカーネル起動コード２１１をＣＰＵ１１に実行させる（ステップ８１２）。
【００５８】
次に、キャッシュ有り用ブートローダ７１１によって実行される処理を図１７のフローチャートを参照して説明する。  
キャッシュ有り用ブートローダ７１１は、ＳＳＤ３１からマスターコード７１２の読み出しを試みる（ステップ９０１）。マスターコード７１２の読み出しに成功すると（ステップ９０２のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、コンピュータに接続されている全てのＨＤＤから個体識別情報をそれぞれ読み出し、読み出された個体識別情報を有する個体識別番号テーブルを作成する（ステップ９０３）。キャッシュ有り用ブートローダ７１１は、個体識別番号テーブル内にマスターコード７１２に登録されている個体識別情報と一致する個体識別番号があるかを判定する（ステップ９０４）。
【００５９】
一致する個体識別番号があると判定した場合（ステップ９０４のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、マスターコード７１２内のコンピュータの識別番号、およびカーネル起動コード２１１の先頭位置アドレスが有効であるかを判定する（ステップ９０５）。有効であると判定した場合（ステップ９０５のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、リクエスト監視ルーチンを実行する（ステップ９０６）。リクエスト監視ルーチンについては後述する。キャッシュ有り用ブートローダ７１１は、カーネル起動コードをメモリ１３にロードする（ステップ９０７）。次ステップのカーネル起動コードがロードされたら、キャッシュ有り用ブートローダ７１１は、ＣＰＵ１１にカーネル起動コードを実行させる（ステップ９０８）。
【００６０】
構成情報の読み出しに失敗した場合（ステップ９０２のＮｏ）、一致する個体識別番号がないと判定した場合（ステップ９０４のＮｏ）、または構成情報が有効ではなかった場合（ステップ９０５のＮｏ）、キャッシュ有り用ブートローダ７１１は、位置情報７０３Ｂのログ記録用ブートローダ７３１の位置情報に基づいてログ取得機能が有効になっているかを判定する（ステップ９０９）。有効になっていると判定した場合（ステップ９０９のＹｅｓ）、キャッシュ有り用ブートローダは、ＨＤＤ１８からログ記録用ブートローダ７３１をメモリ１３にロードすることを試みる（ステップ９１０）。ログ記録用ブートローダ７３１が正常に読み出された場合（ステップ９１１のＹｅｓ）、キャッシュ有り用ブートローダは、ロードされたログ記録用ブートローダ７３１をＣＰＵ１１に実行させる（ステップ９１２）。
【００６１】
ログ取得機能が有効になっていないと判定した場合（ステップ９１１のＮｏ）、またはログ記録用ブートローダ７３１が正常に読み出されなかった場合（ステップ９０９のＮｏ）、キャッシュ有り用ブートローダ７１１は、レイアウト情報２０２Ａを参照することによってオペレーティングシステムのカーネルを起動するためのカーネル起動コード２１１をメモリ１３にロードし（ステップ９１３）、ロードされたカーネル起動コード２１１をＣＰＵ１１に実行させる（ステップ９１４）。
【００６２】
次に、ステップ９０６におけるリクエスト監視ルーチンについて図１８のフローチャートを参照して説明する。  
キャッシュ有り用ブートローダ７１１は、Ｉ／Ｏリクエストの対象が監視対象ドライブであるＨＤＤ１８であるかを判定する（ステップ１００１）。ＨＤＤ１８であると判定した場合（ステップ１００１のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、Ｉ／ＯリクエストされたデータがＳＳＤ３１にキャッシュされているかを判定する（ステップ１００２）。キャッシュされていると判定した場合（ステップ１００２のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、Ｉ／Ｏリクエストがデータの書き込みであるかを判定する（ステップ１００３）。書き込みではないと判定した場合（ステップ１００３のＮｏ）、キャッシュ有り用ブートローダ７１１は、Ｉ／Ｏリクエストを発行先に転送する（ステップ１００５）。Ｉ／Ｏリクエストの発行先がデータを転送したら、キャッシュ有り用ブートローダ７１１は、転送されたデータおよびデータの位置情報をＳＳＤ３１内に格納し、データをキャッシュする（ステップ１０１０）。
【００６３】
ステップ１００３において書き込みであると判定した場合（ステップ１００３のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、ＳＳＤ３１にキャッシュされているデータを無効にする（ステップ１００６）。そして、キャッシュ有り用ブートローダ７１１は、元のＩ／Ｏリクエスト処理を実行する（ステップ１００７）。
【００６４】
対象のデータがキャッシュされていないと判定した場合（ステップ１００２のＮｏ）、キャッシュ有り用ブートローダ７１１は、Ｉ／Ｏリクエストがデータの書き込みであるかを判定する（ステップ１００８）。書き込みであると判定した場合（ステップ１００８のＹｅｓ）、キャッシュ有り用ブートローダ７１１は、通常のデータ書き込み処理を行う（ステップ１００７）。書き込みではない判定した場合（ステップ１００８のＮｏ）、キャッシュ有り用ブートローダ７１１は、Ｉ／ＯリクエストされたデータをＨＤＤ１８から読み出し、読み出されたデータおよびアドレスをＳＳＤ３１に書き込む（ステップ１００９）。そして、キャッシュ有り用ブートローダ７１１は、元のＩ／Ｏリクエスト処理を実行する（ステップ１００７）。
【００６５】
このような処理をおこなうことで、ＨＤＤ１８のランダムリードアクセスのシークタイムを隠蔽することが可能となる。
【００６６】
ＨＤＤ１８内にキャッシュ有り用ブートローダ７１１を配置すると余計なヘッドシークが複数発生するが、ＳＳＤ３１をキャッシュ有り用ブートローダ７１１に格納することで、起動時間を短くすることが可能である。
【００６７】
次に、ログ記録用ブートローダ７３１による処理について図１９のフローチャートを参照して説明する。  
なお、起動コード７０１Ａから、ログ記録用ブートローダ７３１が読み出されるまでに発生した異常系への分岐の履歴がエラー情報としてメモリ１３内に記録されている。
【００６８】
ログ記録用ブートローダ７３１は、エラー情報をメモリ１３内から収集する（ステップ１１０１）。ログ記録用ブートローダ７３１は、キャッシュメモリとして用いられるＳＳＤ３１が接続されていないことを示す未装着情報および記録日時を有するエラーログをＨＤＤ１８内のログ記録領域に記録する（ステップ１１０２）。なお、メモリ１３内のエラー情報はログ記録用ブートローダ７３１から読み出されると消去される。
【００６９】
ログ記録用ブートローダ７３１は、カーネル起動コード２１１をメモリ１３にロードし（ステップ１１０３）、ロードされたカーネル起動コード２１１をＣＰＵ１１に実行させる（ステップ１１０４）。
【００７０】
カーネル起動コード２１１は、先ずオペレーティングシステムのカーネルを起動し、順次オペレーティングシステム１１０が実行される。
【００７１】
オペレーティングシステムの起動中に実行される処理を図２０を参照して説明する。  
図２０に示すように、オペレーティングシステムの起動中、レガシーモードで動作するプログラムによって、カーネルモードで動作するオペレーティングシステムカーネル１２０１と、カーネルＩ／Ｏ監視アプリケーションプログラム１２０２と、ディスクドライバ１２０３とが起動される。ここで、レガシーモードとは、ＢＩＯＳによって起動コードが起動されてからカーネルが起動する前までの状態である。また、カーネルモードとは、カーネル起動後の状態である。カーネルＩ／Ｏ監視アプリケーションプログラム１２０２は、オペレーティングシステムカーネル１２０１からディスクドライバ１２０３に対するリクエストをフックする。
【００７２】
次に、オペレーティングシステム起動後の実行される処理を図２１を参照して説明する。オペレーティングシステムの起動後、図２１に示すように、ユーザモードで動作する管理アプリケーションプログラム１２１１や各種アプリケーションプログラム１２１２が起動される。カーネルＩ／Ｏ監視アプリケーションプログラム１２０２は、ファイルシステム１２０４からディスクドライバ１２０３に対するリクエストをフックする。
【００７３】
なお、管理アプリケーションプログラム１２１１は、図２１に示すように、カーネルＩ／Ｏ監視プログラム１２０２が取得したログ情報をオペレーティングシステムカーネル１２０１に格納する処理を行う。
【００７４】
カーネルモードＩ／Ｏ監視アプリケーションプログラムの構成を図２２を参照して説明する。
【００７５】
カーネルモードＩ／Ｏ監視アプリケーションプログラム１２００は、ＯＳ起動停止部１３０１および保護領域保護部１３０２等を備えている。
【００７６】
ＯＳ起動停止部１３０１は、ログ記録領域２３２内のログ情報を参照し、そのまま起動すると致命的なエラー情報が含まれている（例えばＳＳＤ３１に最新のデータが含まれており、ＨＤＤ１８には含まれていない場合）ことを検出したとき、ＯＳの起動を停止する。致命的ではない場合は、そのままＯＳの起動を継続する。
【００７７】
保護領域保護部１３０２は、ログ記録用ブートローダ７３１、ログ記録領域２３２、およびキャッシュ有り用ブートローダ７１１（以下、ログ記録用ブートローダ７３１、ログ記録領域２３２、およびキャッシュ有り用ブートローダ７１１が格納されている領域を保護領域と記す）が別なデータで改変されないようにする。保護領域保護部１３０２は、保護領域内のデータが改変されないようにＩ／Ｏリクエストを監視する処理を実行する。
【００７８】
ＯＳ起動停止部１３０１によって実行される処理の手順の一例を図２３のフローチャートを参照して説明する。
【００７９】
ＯＳ起動停止部１３０１は、起動コード７０１Ａ内の位置情報７０３Ｂを参照することで、ログ記録領域２３２内のログ情報を読み出す（ステップ１４０１）。ＯＳ起動停止部１３０１は、ログ情報に基づいてログ情報が起動時にＳＳＤ３１が装着されていないことが致命的かどうか判定する（ステップ１４０２）。ＳＳＤ３１が装着されていないことが致命的な場合(ステップ１４０２のＹｅｓ)、ＯＳ起動停止部１４０１はＯＳの起動を停止させるため、Panicを発生させたり、システムを再起動をさせたりする。
【００８０】
ＳＳＤ３１が装着されていないことが致命的ではない場合（ステップ１４０２のＹｅｓ）、そのままオペレーティングシステム１１０の起動を継続される。
【００８１】
以上の処理で、オペレーティングシステムの起動中に実行されるカーネルＩ／Ｏ監視アプリケーションプログラム１２０２は、ログ記録用ブートローダ７３１によって生成されたログ情報に基づいて、ＳＳＤ３１が装着されていないことを検出することが可能になる。また、カーネルモードＩ／Ｏ監視プログラムの起動停止部によって、自動的に起動停止することで、ＳＳＤ３１が使用できないことによって生じる致命的なデータ破壊を抑制することが可能になる。
【００８２】
オペレーティングシステム起動後に実行される管理プログラムが実行される。管理プログラム１３００は、ログ管理部および保護領域保護部１３０２等を有する。
【００８３】
保護領域保護部１３０２によって実行されるＩ／Ｏリクエストを監視する処理の手順の一例を図２４のフローチャートを参照して説明する。
【００８４】
保護領域保護部１３０２は、ファイルシステム等からＨＤＤ１８に対して発行されたＩ／Ｏリクエストをフックする（ステップ１５０１）。保護領域保護部１３０２は、Ｉ／Ｏリクエストが書き込み要求であるかを判定する（ステップ１５０２）。書き込み要求であると判定した場合（ステップ１５０２のＹｅｓ）、保護領域保護部１３０２は、リクエストによってデータが書き込まれるのが保護領域を含んでいるかを判定する（ステップ１５０３）。保護領域を含んでいると判定した場合、保護領域保護部１３０２は、書き込み要求を失敗させる（ステップ１５０４）。保護領域保護部１３０２は、保護領域を含んでいないと判定した場合、Ｉ／Ｏリクエストを発行元に渡す（ステップ１５０５）。
【００８５】
以上の処理で保護領域に格納されているデータの改変を防止することができる。
【００８６】
上記実施形態では、ＳＳＤ３１がＨＤＤ１８のキャッシュメモリとして用いられる例を説明したが、通常のデータを記録するのではなく、システムの実行に関連するデータを格納するので有れば、本実施形態を適用することが可能である。
【００８７】
また、上記実施形態では、第２の記憶装置が、ＵＳＢバスによって接続されたＳＳＤ３１である例を説明したが、ＳＡＴＡ（Serial Advanced Technology Attachment）の外付け用の規格であるｅＳＡＴＡによって接続されたＳＳＤであっても良い。また、第２の記憶装置は、取り外し可能な記憶メディアであれば、ＳＳＤ以外であっても良い。例えば、第２の記憶装置がＵＳＢメモリであっても良い。
【００８８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８９】
１０…パーソナルコンピュータ（情報処理装置），１１…ＣＰＵ（プロセッサ），１３…メインメモリ，１７…ＢＩＯＳ−ＲＯＭ，１８…ＨＤＤ，３１…ＳＳＤ，１１０…オペレーティングシステム，２００…ブートセクタ，２０１…起動コード，２０１Ａ…起動コード，２３２…ログ記録領域，３００…起動プロセス変更プログラム，３０１…第１連続領域確保部，３０２…第２連続領域確保部，３０３…起動コード／ブートローダ変更部，７０１Ａ…起動コード，７１１…キャッシュ有り用ブートローダ，７３１…ログ記録用ブートローダ。
【図１】
2012216033.tif 000003
【図２】
2012216033.tif 000004
【図３】
2012216033.tif 000005
【図４】
2012216033.tif 000006
【図５】
2012216033.tif 000007
【図６】
2012216033.tif 000008
【図７】
2012216033.tif 000009
【図８】
2012216033.tif 000010
【図９】
2012216033.tif 000011
【図１０】
2012216033.tif 000012
【図１１】
2012216033.tif 000013
【図１２】
2012216033.tif 000014
【図１３】
2012216033.tif 000015
【図１４】
2012216033.tif 000016
【図１５】
2012216033.tif 000017
【図１６】
2012216033.tif 000018
【図１７】
2012216033.tif 000019
【図１８】
2012216033.tif 000020
【図１９】
2012216033.tif 000021
【図２０】
2012216033.tif 000022
【図２１】
2012216033.tif 000023
【図２２】
2012216033.tif 000024
【図２３】
2012216033.tif 000025
【図２４】
2012216033.tif 000026