(57)【要約】    【課題】上位装置のＢＯＩＳや記憶媒体のＬＢＡ０の起動セクタを変更することなく、ＯＳ起動に先立ってセキュリティ等の任意のプログラムを実行可能とする。    【解決手段】起動前処理部５４は、上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ８４に代えて任意プログラム９０を格納した仮起動セクタ８５を読出し応答して任意プログラムを実行させる。起動部５６は、任意のプログラム９０の実行に基づく上位装置からの次の読込み要求に対し起動セクタ８４を読出し応答して起動プログラムの実行によりＯＳを起動させる。任意プログラムを格納した仮起動セクタ８５は、ＯＳがアクセスできない記憶媒体の特殊領域、デバイスのみがアクセス可能な記憶媒体のシステム領域又はデバイスに設けた不揮発性メモリの領域に配置される。    【選択図】      図１
2006236193.tif 000002
【特許請求の範囲】
【請求項１】
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりＯＳを起動させる起動ステップと、
を備えたことを特徴とする起動プログラム実行方法。
【請求項２】
請求項１記載の起動プログラム実行方法に於いて、前記任意プログラムを格納した仮起動セクタは、ＯＳがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とする起動プログラム実行方法。
【請求項３】
上位装置からの指示により記憶媒体にアクセスするデバイスに於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりＯＳを起動させる起動部と、
を備えたことを特徴とするデバイス。
【請求項４】
上位装置の指示を受けてデバイスによりアクセスされる記憶媒体に於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする記憶媒体。
【請求項５】
上位装置の指示を受け記憶媒体にアクセスするデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりＯＳを起動させる起動ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブートプロセスによりＯＳを起動する起動プログラム実行方法、デバイス、記憶媒体及びプログラムに関し、特に、ＯＳの起動前に任意のプログラムを実行する起動プログラム実行方法、デバイス、記憶媒体及びプログラムに関する。
【背景技術】
【０００２】
従来、ＰＣ／ＡＴ互換機のパーソナルコンピュータにあっては、図２６に示すように、パーソナルコンピュータ２００にハードディクスドライブ２０２を内蔵すると共に、外部に必要に応じてフロッピィ（Ｒ）ディスクドライブ２０４、光磁気ディスクドライブ２０６、ＣＤ−ＲＯＭドライブ２０８、ＵＳＢメモリ２１０等を接続してる。
【０００３】
図２７は従来のハードディクスドライブのディスクレイアウトであり、ディスクの先頭論理ブロックアドレスＬＢＡ０となる先頭セクタにマスタブートレコード（ＭＢＲ）２１２が存在し、ここにブートストラップローダ、パーティションテーブル及びブートシグニチャを格納している。また特定のパーティションの先頭セクタとなるブートセクタ２１４にはブートプログラムが格納されている。
【０００４】
図２８は起動用のフロッピィ（Ｒ）ディスクのディスクレイアウトであり、ブートストラップローダは存在せず、ブートセクタ２１６にブートプログラムが存在する。ＭＯ、ＣＤ−ＲＯＭ、ＵＳＢメモリなどは、図２７又は図２８のどちらかの形式で記録されている。
【０００５】
図２９は図２７のディスクレイアウトを対象としたブートプロセスのフローチャートである。図２９において、ステップＳ１で電源を投入すると、ステップＳ２でプロセッサの自己診断を行った後、ステップＳ３でＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）が起動し、ステップＳ４でＢＩＯＳはディスクのＬＢＡ０の先頭セクタに記録されている内容を、セクタ長分、一般的には５１２バイト読み込み、ステップＳ５でパーソナルコンピュータの主記憶として機能するメモリに格納する。
【０００６】
次に、ステップＳ６でＢＩＯＳは格納されたデータの先頭位置に制御を移す。制御を移すと、その位置に格納されたプログラムが実行される。ハードディスクドライブの場合は、ＬＢＡ０の先頭からブートストラップローダが記録されているため、ブートストラップローダが動作してブートセクタがロードされ、ブートプログラムが実行される。ブートプログラムはディスクに格納されているＯＳをメモリにロードして実行し、ＯＳが起動する。
【０００７】
尚、フロッピィ（Ｒ）ディスクの場合はＬＢＡ０の先頭からブートプログラムが記録されているため、最初からブートプログラムが実行される。
【０００８】
ところで近年にあっては、パーソナルコンピュータのセキュリティを高めるため、ＯＳを起動した後にアプリケーションによって記憶媒体アクセスに対しパスワード認証を要求するようにしている。しかし、アプリケーションレベルで対策するよりは、コンピュータの電源を投入してＯＳが起動する前にパスワード認証処理等が実行できれば、極めて高いセキュリティを確保することができる。
【特許文献１】特開２０００−２１５０６５号公報
【特許文献２】特開２００３−１５０４５５号公報
【特許文献３】特開昭６３−１７５９５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来のブートプロセスにあっては、電源投入時にＢＩＯＳがディスクドライブの先頭セクタ（ＬＢＡ０）を読み出してメモリに格納し、格納した内容に先頭位置に制御を移してブートストラップローダを動作するようにしているため、起動時に任意のプログラムを実行したい場合は、ＢＩＯＳを変更するか、ブートストラップローダを変更するかのどちらかを行わなければならない。尚、フロッピィ（Ｒ）ディスクの場合はブートストラップローダは存在しないのでブートプログラムを変更する必要がある。
【００１０】
しかし、ＢＩＯＳの変更はＢＩＯＳメーカーに依頼する必要があり、コストの問題がある。また、先頭セクタ（ＬＢＡ０）の内容変更はＯＳの起動に影響を与えるためリスクが高いという問題がある。
【００１１】
本発明は、上位装置のＢＯＩＳや記憶媒体の起動セクタ（ＬＢＡ０）を変更することなく、ＯＳ起動に先立ってセキュリティ等の任意のプログラムを実行可能とする起動プログラム実行方法、デバイス、記憶媒体及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
図１は本発明の原理説明図である。
【００１３】
本発明は起動プログラム実行方法を提供する。本発明の起動プログラム実行方法は、
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ８４ａに代えて任意プログラム９０を格納した仮起動セクタ８５ちを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりＯＳを起動させる起動ステップと、
を備えたことを特徴とする。
【００１４】
ここで、任意プログラムは、実行終了時に起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納する。任意プログラムを格納した仮起動セクタは、ＯＳがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置される。
【００１５】
起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムである。
【００１６】
起動前処理ステップは、デバイスの単一領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、仮起動セクタの配置数を管理し、上位装置からの複数回の読出し要求に対し配置数分の仮起動セクタを順次読出し応答して任意プログラムを実行させる。
【００１７】
起動前処理ステップは、デバイスの異なる領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、仮起動セクタの順番を管理し、電源投入後の上位装置からの複数回の読出し要求に対し複数の仮起動セクタを管理された順番に従って読出し応答して任意プログラムを実行させる。
【００１８】
起動前処理ステップは、更に、デバイスの異なる領域毎に複数の仮起動セクタを配置して配置数を管理し、上位装置からの複数回の読出し要求に対し異なる配置領域毎に配置数分の仮起動セクタを順次読出し応答して任意プログラムを実行させる。
【００１９】
複数の仮起動セクタに格納された任意プログラムは、１つの任意プログラムの分割プログラム、または複数種類の任意プログラムである。
【００２０】
複数の仮起動セクタに分けて任意プログラムを格納した場合、任意プログラムは実行終了時に起動セクタの読出しを要求するコマンドＡを発行し、起動ステップは、起動前処理ステップによる読出し応答後に上位装置からコマンドＡを受信した際に、前記起動セクタを読出し応答して前記起動プログラムを実行させる。
【００２１】
複数の仮起動セクタに分けて任意プログラムを格納した場合、任意プログラムは実行終了時に次の仮起動セクタの読出しを要求するコマンドＢを発行し、
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、上位装置からコマンドＢを受信した際に次の仮起動セクタを読出し応答し、
起動ステップは、コマンドＢを受信した際に次の仮起動セクタが存在しないことを判別して前記起動セクタを読出し応答する。
【００２２】
複数の仮起動セクタに分けて任意プログラムを格納した場合、最後を除く複数の任意プログラムは実行終了時に次の任意プログラムの読出しを要求する第１コマンドＢを発行し、最後の任意プログラムは実行終了時に起動セクタの読出しを要求する第２コマンドＡを発行し、
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、上位装置から第１コマンドＢを受信した際に次の仮起動セクタを読出し応答し、
起動ステップは、起動前処理ステップによる読出し応答に対し上位装置から第２コマンドＡを受信した際に前記起動セクタを読出し応答する。
【００２３】
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し任意のプログラムを格納した仮起動セクタを読出し応答する際に、起動セクタからパーティションテーブルをコピーして応答する。ドライブは、ディスクドライブ、メモリドライブを含む。
【００２４】
本発明は、上位装置からの指示により記憶媒体にアクセスするデバイスを提供する。本発明のデバイスは、上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりＯＳを起動させる起動部とを備えたことを特徴とする。
【００２５】
本発明は上位装置の指示を受けてデバイスによりアクセスされる記憶媒体を提供する。本発明の記憶媒体は、上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする。
【００２６】
本発明は、上位装置の指示を受けて記憶媒体にアクセスするデバイスのコンピュータにより実行されるプログラムを提供する。本発明のプログラムは、上位装置に接続されたデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりＯＳを起動させる起動ステップと、
を実行させることを特徴とする。
【発明の効果】
【００２７】
本発明によれば、上位装置のＢＩＯＳや記憶媒体の起動セクタ、例えば先頭セクタ（ＬＢＡ０）の内容を変更することなく、上位装置の電源投入後のブートプロセスにより任意プログラムを格納した仮起動セクタを読出し応答して任意プログラムを実行させることにより、ＯＳを起動する前に任意のプログラムを実行することができる。
【００２８】
つまり、上位装置のブートプロセスによりＯＳを起動する前に、上位装置のＢＩＯＳや記憶媒体の起動セクタの内容を変更することなく、起動ドライブ自身で単独に任意のプログラムを読出し、任意のプログラムを上位装置に実行させることができる。
【００２９】
また仮起動セクタを複数配置することで、セクタサイズを越える任意プログラムを分割して格納することができ、任意のプログラムのサイズを自由にきめることができるし、複数種類の任意のプログラムを格納してＯＳ起動前に実行することもできる。
【発明を実施するための最良の形態】
【００３０】
図２は本発明の起動プログラム実行処理が適用されるパーソナルコンピュータのブロック図である。図２において、ＣＰＵ１０のバス１１に対しては、電源投入時にＯＳを起動するためのＢＩＯＳ１２が設けられ、また主記憶として機能するＲＡＭ１４が設けられている。
【００３１】
ＣＰＵ１０に対する入出力デバイスとしてハードディスクドライブ１６が設けられ、ハードディスクドライブ１６はディスク記憶媒体１８を備えている。この例では、起動ドライブとしてハードディスクドライブ１６を使用する場合を例にとっている。
【００３２】
またバス１１に対しては、フロッピィ（Ｒ）ディスクドライブ２０、ＭＯディスクドライブ２４、ＣＤ−ＲＯＭドライブ２８、ＵＳＢドライブ３２が設けられ、それぞれ記憶媒体としてフロッピィ（Ｒ）ディスク２２、ＭＯカートリッジ記憶媒体２６、ＣＤ−ＲＯＭ記憶媒体３０及びＵＳＢメモリ３４を使用する。
【００３３】
更にバス１１に対しては、マウスコントローラ３６を介してマウス３８が接続され、キーボードコントローラ４０を介してキーボード４２が接続され、ディスプレイコントローラ４４を介してディスプレイ４６が接続され、更に通信ボート４８を介してＬＡＮなどのネットワーク接続が行われる。
【００３４】
起動ディスクとして動作するハードディスクドライブのディスク記憶媒体１８には、ＯＳを起動するための起動プログラム５０と、ＯＳの起動前に実行される任意プログラム５２が格納されている。
【００３５】
任意プログラム５２としては、後の説明で明らかにするように、セキュリティ用の各種のプログラムやウィルスチェックプログラムなど、コンピュータのＯＳ起動前の段階で実行を必要とする任意のプログラムが格納できる。
【００３６】
ハードディスクドライブ１６には起動前応答部５４と起動応答部５６の機能が設けられている。起動前応答部５４は、パーソナルコンピュータ１００の電源投入後のＢＩＯＳ１２による最初の読込み要求に対し、ディスク記憶媒体１８に格納された先頭論理ブロックアドレスＬＢＡ０で指定される起動プログラム５０を格納した起動セクタに代えて、任意のプログラムが格納された仮起動セクタを読出し応答してＲＡＭ１４に格納し、その内容に制御を移して任意プログラムをＣＰＵ１０により実行させる。
【００３７】
起動応答部５６は、ＣＰＵ１０による任意プログラムの実行に基づく次の起動セクタの読込み要求に対し、ディスク記憶媒体１８の起動プログラム５０が格納されたＬＢＡ０の起動セクタを読出し応答してＲＡＭ１４に格納し、その先頭に制御を移すことで起動プログラム５０を実行して、ディスク記憶媒体１８よりＯＳをロードして、ＯＳを起動させる。
【００３８】
ここで起動プログラム５０を格納した起動セクタとしてＬＢＡ０の先頭セクタを例にとっているが、ＢＩＯＳによっては先頭セクタ以外の例えばＬＢＡ１を起動セクタとする場合もあり、起動セクタは必ずしもＬＢＡ０の先頭セクタには限定されない。
【００３９】
図３は図２で起動ドライブとして使用されるハードディスクドライブのブロック図である。図３において、ハードディスクドライブ１６は、回路ボード５８とディスクエンクロージャ６０で構成される。回路ボード５８にはＭＰＵ６２、インターフェース６４、ハードディスクコントローラ６６、リードチャネル６８、サーボ制御部７０、バッファメモリ７２及び不揮発メモリ７４が設けられる。ディスクエンクロージャ６０には、リード／ライトアンプ７６、ヘッドアッセンブリィ７８、ボイスコイルモータ８０及びスピンドルモータ８２が設けられる。
【００４０】
スピンドルモータ８２の回転軸には図示しないディスク記憶媒体が装着され、一定速度で回転される。ヘッドアッセンブリィ７８はヘッドアクチュエータのアーム先端に支持されており、ヘッドアクチュエータをボイスコイルモータ８０により駆動することで、ヘッドアッセンブリィ７８のリードヘッドとライトヘッドを備えた複合ヘッドを磁気ディスク記憶媒体の記憶媒体面に対し位置決めを行う。
【００４１】
ＭＰＵ６２には、ＯＳ起動前に任意のプログラムを実行するため、起動前応答部５４、起動応答部５６、更に起動前応答部５４で複数の任意プログラムを実行させる際に必要な情報を管理する管理テーブル７５を設けている。
【００４２】
図４はＯＳ起動前に実行する任意プログラムを格納したディスクレイアウトの説明図である。図４において、ハードディスクドライブ１６のディスク記憶媒体１８の論理ブロックアドレスＬＢＡ０で指定される起動セクタ８４には起動プログラムとしてマスタブートレコード８３が記録され、また任意のパーティションの起動セクタにブートセクタ８６を記録している。
【００４３】
このようなマスタブートレコード８４とブートセクタ８６から構成される起動プログラムに対し本発明にあっては、ＯＳがアクセスできないＯＳ非アクセスセクタ８８を論理ブロックアドレスＬＢＡｘｘｘｘの仮起動セクタ８５とし、仮起動セクタ８５にＯＳ起動前に実行される任意プログラム９０を格納している。
【００４４】
図５は図４の任意プログラムを記録する仮起動セクタの内容を、起動プログラムを格納した起動セクタと対比して示した説明図である。
【００４５】
図５（Ａ）は起動プログラムが格納された起動セクタ８４であり、パーソナルコンピュータ１００を起動した際のＢＩＯＳ１２の読出しを受けてＲＡＭ１４にロードされる。この起動セクタ８４は４４６バイトのプログラム領域１０２と６４バイトのパーティション領域１０４に分けられており、プログラム領域１０２にはブートストラップローダ１０６が格納され、パーティション領域１０４は４つの領域に分けられてパーティションテーブル１０８−１〜１０８−４を格納している。最後の４バイトの領域にはブートシグニチャ１１０が格納される。この起動セクタ８４のサイズは、ＰＣ−ＡＴ互換機の場合は５１２バイトのサイズである。
【００４６】
起動セクタ８４を使用したＯＳの起動は、ＢＩＯＳ１２によって、起動ドライブであるハードディスクドライブ１６のＬＢＡ０の起動セクタ８４の読出しでマスタブートレコード８３がＲＡＭ１４にロードされる。ＲＡＭ１４にマスタブートレコード８３がロードされると、図５（Ａ）のブートストラップローダ１０６に制御を移す。ブートストラップローダ１０６は例えば次の手順でな起動プログラムを実行する。
【００４７】
（１）パーティションテーブル１０８−１〜１０８−４を検査し、起動フラグの立ったパーティション領域がないかを探す。
（２）起動フラグの立ったパーティション領域が見つかると、そのパーティション領域の起動セクタのアドレスをテーブルから取得する。
（３）ＢＩＯＳ１２にパーティション先頭アドレスを示し、パーティション起動セクタ即ちブートセクタ８６をロードさせる。
（４）ロードしたパーティション起動セクタ、即ちブートセクタに制御を移す。
【００４８】
起動セクタ８４の最後のブートシグニチャ１１０はマジックナンバーと呼ばれる「０ｘＡＡ５５」という値が入っており、このマジックナンバーが入っていることで、マスタブートレコード８４が有効なものとして起動処理が行われる。
【００４９】
図５（Ｂ）は、本発明においてＯＳ起動前に実行される任意プログラム９０を格納した仮起動セクタ８５の内容である。仮起動セクタ８５は起動プログラムを格納した起動セクタ８４と同じ５１４バイトのサイズであり、セクタ内のフォーマット構造も起動セクタ８４と同じであり、４４６バイトのプログラム領域１０２と６４バイトのパーティション領域１０４、更に最後の４バイトを使用して、ブートシグニチャ１１０を記録している。
【００５０】
このような仮起動セクタ８４につき、４４６バイトのプログラム領域１０２にＯＳ起動前に実行させる任意プログラム９０を格納している。プログラム領域１０２に格納した任意プログラム９０は、プログラムの最後にＬＢＡ０読出コード１１２を格納している。このため任意プログラム９０が実行されると、最後にＬＢＡ０読出コード１１２が実行され、これによって、ハードディスクドライブ１６に対しＬＢＡ０を指定した起動セクタの読出し要求が行われることになる。
【００５１】
パーティション領域１０４については、電源投入後のＢＩＯＳ１２からの最初の読出し要求がブートストラップローダ１０６の実行のためではなく、パーティション領域１０４の読出し要求であった場合には、パーティション領域１０４に起動セクタ８４におけるパーティション領域１０４のパーティションテーブル１０８−１〜１０８−４のコピーを行って、仮起動セクタ８５を返すようにしている。
【００５２】
もちろん、ＢＩＯＳ１２からの最初の読出し要求がブートストラップローダ１０６の実行である場合には、パーティションテーブル１０８−１〜１０８−４をコピーして返す必要なく、この場合にはパーティション領域１０４についても任意プログラム９０を格納するプログラム領域１０２として使用することが可能である。
【００５３】
このように本発明にあっては、ハードディスクドライブ１６において通常アクセスできない特殊領域、例えばＯＳがアクセスできないＯＳ非アクセス領域８８に、図４のようにＬＢＡ０で指定される起動セクタ８４と同じ５１４バイトのセクタ長を持つ仮起動セクタ８５を設け、ここに図５（Ｂ）に示したように任意プログラム９０を格納しておくことで、電源投入後のＢＩＯＳ１２による起動ディスクの起動セクタに対する最初の読出し要求に対し、起動セクタ８４に代えて、例えばＯＳ非アクセス領域８８に準備された仮起動セクタ８５を読出し応答してＲＡＭ１４にロードして、その内容である任意プログラム９０の先頭に制御を移すことで、ＯＳの起動プログラムであるブートストラップローダ１０６の実行前に任意プログラム９０を実行することができる。
【００５４】
任意プログラム９０が実行されると、図５（Ｂ）に示したように、任意プログラム９０の最後にはＬＢＡ０読出コード１１２が格納されているため、このＬＢＡ０読出コード１１２の実行でハードディスクドライブ１６に対し２回目のＬＢＡ０の起動セクタ８４に対する読出し要求が行われる。
【００５５】
２回目の読出し要求に対しては実際の起動セクタ８４がＲＡＭ１４にロードされ、読み込んだ内容の先頭、即ち図５（Ａ）に示す起動セクタ８４のブートストラップローダ１０６に制御を移すことで起動処理を実行し、起動フラグの立っているパーティションのパーティション起動セクタからブートセクタ８６をロードし、ブートセクタ８６の内容に格納されている初期プログラムロードのプログラムコードの実行でファイルシステムをハードディスクドライブから次々とロードし、ＯＳを起動することになる。
【００５６】
図６はＯＳ起動前に実行する任意プログラムを格納した仮起動セクタの他のディスクレイアウトの説明図である。図６にあっては、ハードディスクドライブ１６におけるディスク記憶媒体１８の通常はアクセスできないセクタ、即ちドライブのみがアクセス可能なシステム領域９４に仮起動セクタ８５を配置して、任意プログラム９０を格納している。
【００５７】
図７はＯＳ起動前に実行する任意プログラムの仮起動セクタを不揮発メモリに格納したハードディスクドライブの説明図である。図７において、ハードディスクドライブ１６には不揮発メモリ７４が設けられていることから、この実施形態にあっては仮起動セクタ８５を不揮発メモリ７４の領域に配置して、そこに任意プログラム９０を格納するようにしている。図６及び図７のいずれの任意プログラム９０についても、その格納領域となる仮起動セクタ８５の構成は図５（Ｂ）に示したと同じになる。
【００５８】
図８はＯＳ起動前に任意のプログラムを実行する本発明による制御処理のタイムチャートであり、上位装置として機能するパーソナルコンピュータ１００と、起動ドライブであるハードディスクドライブ１６との処理を示している。図８において、パーソナルコンピュータ１００の電源をステップＳ１で投入すると、ステップＳ２でプロセッサの自己診断を行った後、ステップＳ３でＢＩＯＳ１２が起動する。
【００５９】
起動したＢＩＯＳ１２は、まず起動ドライブを検索する。これはＢＩＯＳ１２のブートシーケンスの設定に依存しており、通常、ディフォルトでは「Ａ  ｔｈｅｎ  Ｃ」となっており、フロッピィ（Ｒ）が最初で次にハードディスクとなっており、この場合、フロッピィ（Ｒ）は挿入されていないことから、ハードディスクが起動ドライブとして検索される。
【００６０】
起動ドライブが決定すると、ステップＳ４でハードディスクドライブ１６のＬＢＡ０を指定した起動セクタの読出し要求が行われる。この読出し要求を受けてハードディスクドライブ１６は、ステップＳ１０１で電源投入後の最初の起動セクタ読出しを判別し、この場合には、例えば図４に示したように、ＯＳ非アクセスセクタ８８の任意プログラム９０を格納した仮起動セクタ８５を読み出して応答する。
【００６１】
パーソナルコンピュータ１００は、ステップＳ５で読出し内容をＲＡＭで構成されるメモリに格納した後、ステップＳ６でメモリに格納された内容の先頭、即ち任意プログラム９０の先頭に制御を移す。そしてステップＳ７で任意プログラム９０を実行する。任意プログラム９０の実行が済むと、図５（Ｂ）のように、任意プログラム９０の最後に設けられたＬＢＡ０読出コード１１２の実行により、ステップＳ８で任意プログラムがＬＢＡ０の起動セクタ８４の読出し要求を発行する。
【００６２】
これを受けてハードディスクドライブ１６は、ステップＳ１０２で電源投入後の２回目のＬＢＡ読出し、即ち起動セクタ読出しを判別し、起動セクタ８４を読み出して応答する。
【００６３】
パーソナルコンピュータ１００は、ステップＳ９でＬＢＡ０の起動セクタ８４の読出し内容であるマスタブートレコード８４をメモリに格納した後、ステップＳ１０でメモリに格納された内容の先頭、即ち図５（Ａ）に示すブートストラップローダ１０６の先頭に制御を移す。
【００６４】
これによって、ステップＳ１１でブートストラップローダ１０６が実行され、起動フラグの立ったパーティション起動セクタの読出しをハードディスクドライブ１６に要求し、ハードディスクドライブ１６はステップＳ１０３で起動フラグの立ったパーティション起動セクタからブートセクタ８６を読み出して応答する。
【００６５】
パーソナルコンピュータ１００は、ステップＳ１２で読出し内容をメモリに格納してブートプログラムを実行し、これによりファイルシステムが次々とロードされ、ステップＳ１３でＯＳが起動する。
【００６６】
図９は図８の制御処理に対応したハードディスクドライブ１６のドライブ処理のフローチャートである。図９において、ハードディスクドライブ１６は、ステップＳ１でＬＢＡ０の指定による起動セクタの読出し要求をチェックしており、起動セクタの読出し要求があると、ステップＳ２で電源投入後またはバスリセット後の最初の要求か否かチェックし、最初の要求であれば、ステップＳ３で任意プログラムを格納した仮起動セクタを読み出して応答する。
【００６７】
２回目の起動セクタの読出し要求があった場合には、ステップＳ２で２回目以降であることが判別されてステップＳ４に進み、マスタブートレコードである起動セクタを読み出して応答する。この状態で、ステップＳ５でブートセクタ読出し要求を判別すると、ステップＳ６でブートセクタを読み出して応答する。
【００６８】
続いてステップＳ７でＯＳ読出し要求、即ちファイル読出し要求があれば、ステップＳ８で要求のあったＯＳ領域を読み出して応答し、これによってＯＳが起動される。起動後は、ステップＳ９でＯＳ配下の入出力処理を行う。即ち、ライトコマンドによりディスク記憶媒体に対するデータの書込み、リードコマンドによるディスク記憶媒体からのデータの読出し応答を行う。このような処理を、ステップＳ１０で停止指示があるまで繰り返す。
【００６９】
図１０は本発明のＯＳ起動前に実行される任意プログラムとして暗号生成処理プログラムを実行した場合のフローチャートである。図１０において、パスワード認証処理は、ステップＳ１でパスワード認証画面を表示し、この状態で、ステップＳ２でキーボード入力をパスワードとして読み込み、ステップＳ３でハードディスクドライブのパスワード照合機能を呼び出し、登録済のパスワードと入力されたパスワードとを照合して、ステップＳ４でパスワードの一致の有無を判定し、パスワード一致であれば、ステップＳ５でパスワード認証処理を終了し、ＬＢＡ０の起動セクタの読出し要求を行ってＯＳ起動後の処理に移行する。
【００７０】
一方、ステップＳ４でパスワードが不一致であった場合には、ステップＳ６でエラーメッセージを表示して処理を終了し、この場合にはＬＢＡ０の起動セクタの読出し要求は行われないことから、ＯＳは起動することなく、パーソナルコンピュータ自体をロックすることができる。
【００７１】
図１１はＯＳ起動前に実行される暗号鍵生成処理プログラムのフローチャートである。図１１において、暗号鍵生成処理は、ステップＳ１でパスワード入力画面を表示し、ステップＳ２でキーボード入力をパスワードとして読み込み、ステップＳ３でパスワードをハードディスクドライブにセットして暗号鍵の生成を指示する。
【００７２】
ステップＳ４で暗号鍵生成完了通知があれば、ステップＳ５でＬＢＡ０で指定される起動セクタの読出し要求を行った後、ＯＳ起動後の処理に移行する。ステップＳ４で暗号鍵生成完了通知がなかった場合には、ステップＳ６でエラーメッセージを表示し、この場合にはＯＳが起動しないことから、コンピュータそのものがロックされることになる。
【００７３】
なお暗号鍵生成処理にあっては、ステップＳ４、ステップＳ６の処理は行わず、単にハードディスクドライブにパスワードをセットして暗号鍵を生成させるだけでもよい。この場合、パスワードが誤っていた場合には正しい暗号鍵が生成されないため、誤った暗号鍵ではハードディスクドライブに対するデータの暗号復号化ができず、結果としてディスク内容に対するアクセスができないことで、ロックを掛けることができる。
【００７４】
図１２はＯＳ起動前に実行される生体認証処理プログラムのフローチャートである。図１２の生体認証処理にあっては、例えばパーソナルコンピュータに指紋読取デバイスや整脈読取デバイスなどが備えられている。このため、ステップＳ１で生体認証デバイスから情報を読み込んだ後、ステップＳ２で登録生体情報と読込情報とを照合し、ステップＳ３で生体情報が一致していれば、ステップＳ４でＬＢＡ０で指定される起動セクタの読出し要求を行ってＯＳを起動することになる。
【００７５】
一方、ステップＳ３で生体情報が不一致であった場合には、ステップＳ５でハードディスクドライブをアクセス不可にセットした後、ステップＳ６でエラーメッセージを表示し、ＯＳを起動せずにコンピュータをロックすることになる。
【００７６】
図１３はハードディスクドライブ側に任意プログラムの格納先管理テーブルを設けた場合のディスクレイアウトの説明図である。図４、図６、図７の仮起動セクタ８５は、ＬＢＡ０の起動セクタと同じ５１２バイトとなる１セクタのサイズであり、１セクタを超える任意プログラムについては複数の仮起動セクタを設けることで格納することができる。
【００７７】
図１３はディスク記憶媒体１８のＯＳ非アクセスセクタ８８に２セクタの仮起動セクタ８５−１，８５−２を設け、それぞれ任意プログラム９０−１，９０−２を格納した場合である。このように複数の仮起動セクタ８５−１，８５−２に任意プログラム９０−１，９０−２を格納した場合には、ハードディスクドライブ１６に格納先管理テーブル９５を配置し、仮起動セクタ８５−１の論理ブロックアドレスＬＢＡｘｘｘｘとセクタ数＝２を管理する。
【００７８】
この場合、パーソナルコンピュータの電源投入で最初にＬＢＡ０の起動セクタ８４の読出し要求を受けた際に格納先管理テーブル９５を参照し、仮起動セクタのセクタ数が２セクタであることを認識し、最初の起動セクタ８４の読み出し要求に対しては任意プログラム９０−１を格納した１番目の仮起動セクタ８５−１を読み出し応答し、２回目の起動セクタの読み出し要求に対しては任意プログラム９０−２を格納した２番目の仮起動セクタ８５−２を読み出し応答する。
【００７９】
図１４はディスク記憶媒体１８のシステム領域９４に2つの仮起動セクタ８５−１，８５−２を準備し、そこに任意プログラム９０−１，９０−２を格納した場合であり、この場合についても格納先管理テーブル９５に通常アクセスできないセクタとしてシステム領域９４とそのセクタ数＝２を登録して管理する。
【００８０】
図１５は任意プログラムの仮起動セクタを不揮発性メモリ７４に配置した場合である。この場合には不揮発性メモリ７４に２セクタ分の仮起動セクタ８５−１，８５−２を配置して任意プログラム９０−１，９０−２を格納し、格納先管理テーブル９５に格納先が不揮発性メモリ７４であり、セクタ数＝２を登録して管理する。
【００８１】
図１６はディスク記憶媒体１８のＯＳ非アクセスセクタ８８、システム領域９４さらに不揮発性メモリ７４に仮起動セクタ８５−１〜８５−７を配置し、それぞれに任意プログラム９０−１〜９０−７を格納した場合である。この場合には順序管理テーブル９６をハードディスクドライブ１６に配置し、任意プログラムの格納先の順番を登録する。同時に格納先管理テーブル９５を設け位置の異なる領域ごとに領域９５−１〜９５−３を設け、格納先毎の配置セクタ数を登録する。
【００８２】
このような順序管理テーブル９６と格納先管理テーブル９５を組み合わせることで例えば３つの異なる領域について例えば仮起動セクタ８５−１〜８５−７を準備し、この例では７セクタ分の任意プログラムを格納し、ＯＳ起動前に順次読み出して実行することができる。
【００８３】
図１７はハードディスクドライブ１６に格納先と順序を示す順序管理テーブルを設けたディスクレイアウトの説明図である。図１７においてハードディスクドライブ１６にあってはディスク記憶媒体１８のＯＳ非アクセスセクタ８８に２セクタ、システム領域９４に１セクタさらに不揮発メモリに３セクタ、任意プログラムを格納する仮起動セクタを準備し、任意プログラム９０−１〜９０−６を格納している。
【００８４】
このような任意プログラム９０−１〜９０−６の格納状態につき、順序管理テーブル９８が準備されている。順序管理テーブル９８は格納順番領域９８−１〜９８−６を有し、それぞれ格納先と該当するセクタ数が登録されている。即ち、テーブル項目９８−１にあっては不揮発性メモリ７４の第１仮起動セクタの任意プログラム９０−１が最初であることを示し、順序管理テーブル９８−２にあっては通常アクセスできないセクタであるシステム領域９４の第１仮起動セクタにある任意プログラム９０−２が２番目であることを示し、以下任意プログラム９０−３〜９０−６につき登録が行われる。
【００８５】
図１３〜図１７の複数の仮起動セクタに任意プログラムを格納してＯＳ起動前に実行する場合には、ＬＢＡ０の起動セクタの読出し要求を受けるごとに格納先管理テーブル９５、順序管理テーブル９６又は９８を参照し、最後の任意プログラムの読み出し応答が終了するまで仮起動セクタの読み出し応答を繰り返し、次の読出しの済んでいない仮起動セクタがなくなった場合に、そのときの起動セクタの読出し要求に対し、本来のＬＢＡ０の起動セクタからマスタブードレコードを読出し応答することになる。
【００８６】
ここで任意プログラムを複数の仮起動セクタに格納する場合は、１つの任意プログラムを複数の仮起動セクタに分割して格納する場合と、複数種類の任意プログラムを複数の仮起動セクタに分けて格納する場合とある。
【００８７】
１つのプログラムを複数の仮起動セクタに分割できることで起動プログラムを格納した起動セクタのサイズ、即ち５１４バイトを越える任意プログラムについてもＯＳ前に実行可能となる。また図１０、図１１、図１２に示したようなパスワード認証プログラム、暗号鍵生成プログラム、生体認証プログラムといった異なったプログラムを複数の仮起動セクタに分けて格納してＯＳ起動前に実行させることもできる。
【００８８】
図１８は仮起動セクタから本来の起動セクタの読み出しに切り替えるコマンドＡを発行するためのコードを備えた任意プログラムの説明図である。ＯＳ起動前に任意プログラムを実行する場合、ＢＩＯＳ１２によっては任意のプログラムが実行される前に数回のＬＢＡ０の起動セクタの読み込みを行う場合がある。
【００８９】
このような場合、複数セクタに分けて任意プログラムを格納していると、２回目以降の起動セクタの読み出し要求に対し本来のＬＢＡ０の起動セクタを読出し応答が行われると、任意のプログラムが実行できない可能性がある。これを防止するため、図１８のように任意プログラム９０の最後にコマンドＡ発行コード１１４を設け、このコマンドＡ発行コード１１４の実行で仮起動セクタから実際の起動セクタに切り替えるコマンドＡを発行し、任意プログラムが実行されてコマンドＡ発行コード１１４に基づきコマンドＡが発行された段階でハードディスクドライブ側は実際のＬＢＡ０の起動セクタのデータを返すようにすることができる。
【００９０】
図１９はコマンドＡにより任意プログラムの読出しから本来のＬＢＡ０の起動セクタの読出しに切り替える本発明による制御のフローチャートである。図１９において、パーソナルコンピュータ１００のステップＳ１〜Ｓ７及びハードディスクドライブ１６のステップＳ１０１の処理は図８のタイムチャートと同じであるが、ステップＳ７で任意プログラムを実行して最後に図１８のコマンドＡ発行コード１１４を実行し、ステップＳ８で任意プログラムがコマンドＡを発行する。
【００９１】
このコマンドＡの発行に対しハードディスクドライブ１６はステップＳ１０２でコマンドＡの発行を判別し、ＬＢＡ０の起動セクタのマスタブードレコードを読み出して応答することになる。尚、ステップＳ９以降の処理は図８と同じである。
【００９２】
図２０は図１９の制御処理に応じたハードディスクドライブの制御処理のフローチャートである。図２０において、ステップＳ１でＬＢＡ０の起動セクタの読出し要求を判別すると、ステップＳ２で仮起動セクタから任意プログラムを読み出して応答する処理を繰り返している。
【００９３】
このときステップＳ３でコマンドＡの発行を判別するとステップＳ４に進み、ＬＢＡ０の起動セクタからマスタブードレコードを読み出して応答することになる。ステップＳ５〜Ｓ１０の処理は図９のステップＳ５〜Ｓ１０と同じである。
【００９４】
図２１は複数セクタに任意プログラムを格納している場合に２番目以降の仮起動セクタによる任意プログラムの読み出しについて専用のコマンドＢを発行するようにした任意プログラムの説明図である。
【００９５】
図２１において、仮起動セクタ８５のプログラム領域１０２に格納された任意プログラム９０は最後にコマンドＢ発行コード１１６を格納している。コマンドＢ発行コード１１６は任意プログラム９０をメモリに読み出して実行した際にハードディスクドライブに対しコマンドＢを発行し、このコマンドＢは次の仮起動セクタの読み出し応答を指示する専用のコマンドである。このコマンドＢを図１８に示したコマンドＡと組み合わせることで複数の仮起動セクタに格納した任意プログラムの読み出しを確実に行うことができる。
【００９６】
即ち複数の仮起動セクタに格納した複数の任意プログラムにつき、最後の１つを除く任意プログラムには図２１のようにコマンドＢ発行コード１１６を格納し、最後の任意プログラムには図１８のコマンドＡの発行コード１１４を格納する。
【００９７】
これによって複数の仮起動セクタの読み出して任意プログラムを実行する毎に、コマンドＢ発行コード１１６に基づきコマンドＢが発行されて次の任意プログラムを格納した仮起動セクタの読み出し応答が行われ、最後の任意コマンドが実行されるとコマンドＡが発行され、コマンドＡの発行に基づき本来のＬＢＡ０の起動セクタのマスタブートレコードの読出し応答を行うことができる。
【００９８】
図２２はコマンドＢにより次の任意プログラムを格納した仮起動セクタを読み出し、コマンドＡにより本来のＬＢＡ０の起動セクタの読み出しに切り替える本発明による制御処理のタイムチャートである。
【００９９】
図２２において、パーソナルコンピュータ１００におけるステップＳ１〜Ｓ７及びハードディスクドライブ１６におけるステップＳ１０１の処理は図８のタイムチャートと同じである。しかしながら、ステップＳ１０１で読出し応答した最初り仮起動セクタの任意プログラムの最後には図２１のようにコマンドＢ発行コード１１６が含まれている。このため、ステップＳ７でコマンドＢ発行コード１１６を最後に実行すると、ステップＳ８で任意プログラムがコマンドＢを発行する。
【０１００】
ハードディスクドライブ１６はステップＳ１０２でコマンドＢの発行を判別し、次の任意プログラムを格納した仮起動セクタを読み出して応答する。この任意プログラムには図１８のようにコマンドＡ発行コード１１４が記述されていたとすると、ステップＳ９で読み出し内容をメモリに格納して実行した後、最後にコマンドＡを実行することでステップＳ１０においてコマンドＡを発行する。
【０１０１】
ハードディスクドライブ１６はステップＳ１０３でコマンドＡの発行を判別して本来のＬＢＡ０のマスタブードレコードを格納した起動セクタを読み出して応答する。そしてステップＳ７でメモリに格納されたマスタブートレコード、即ちブードストラップローダの先頭に制御を移し、ステップＳ１２でブードストラップローダを実行し、以後、図８のステップＳ１２，Ｓ１３に示したようにＯＳの起動が行われる。
【０１０２】
図２３は図２２の制御処理に対応したハードディスクドライブのドライブ処理のフローチャートである。図２３において、ドライブ処理はステップＳ１でＬＢＡ０の起動セクタの読出し要求を判別すると、ステップＳ２で任意プログラムを格納した仮起動セクタを読み出して応答する。続いてステップＳ３でコマンドＢの発行の有無をチェックしており、コマンドＢの発行を判別するとステップＳ４で次の任意のプログラムを格納した仮起動セクタを読み出して応答する。
【０１０３】
ステップＳ３でコマンドＢの発行がない場合にはステップＳ５でコマンドＡの判別をしており、もしコマンドＡの発行を判別するとステップＳ６に進み、本来のＬＢＡ０のマスタブードレコードを格納している起動セクタを読み出して応答し、ＯＳを起動させることになる。尚、ステップＳ７〜Ｓ１２は図９のステップＳ５〜Ｓ１０と同じである。
【０１０４】
図２４はコマンドＢのみにより次の任意プログラムを格納した仮起動セクタを読み出し、任意プログラムを格納した仮起動セクタが読み出し終了となると、本来のＬＢＡ０の起動セクタの読み出しに切り替える本発明の制御処理のフローチャートである。
【０１０５】
図２４において、パーソナルコンピュータ１００のステップＳ１〜Ｓ１０及びハードディスクドライブ１６のステップＳ１０１，１０２は図２２と同じである。すなわちステップＳ７で任意プログラムを実行すると最後のコマンドＢ発行コード１１６に基づいてステップＳ８で任意プログラムがコマンドＢを発行し、ハードディスクドライブ１６がステップＳ１０２で次の任意プログラムを格納した仮起動セクタを読み出して応答する。
【０１０６】
これを受けてパーソナルコンピュータ１００はステップＳ９で読み出し内容をメモリに格納して任意プログラムを実行し、最後のコマンドＢ発行コード１１６に基づきステップＳ１０で任意プログラムからコマンドＢを発行する。ハードディスクドライブ１６はステップＳ１０３でコマンドＢの発行を判別するが、次の任意プログラムを格納した仮起動セクタが存在しなかったとすると、これを判別し、本来のＬＢＡ０のマスタブートレコードを格納した起動セクタを読出して応答する。
【０１０７】
このような処理により、コマンドＢのみで任意プログラムを格納した仮起動セクタの読出しとＬＢＡ０のマスタブートレコードを格納した本来の起動セクタの読み出しを切り替えることができる。尚、ステップＳ１１以降の任意プログラムによるＯＳの起動は図８のステップＳ１２，Ｓ１３の処理と同じになる。
【０１０８】
図２５は図２３の制御処理に対応したハードディスクドライブのドライブ処理のフローチャートである。図２５において、ＬＢＡ０の起動セクタの読出し要求を判別すると、ステップＳ２で任意のプログラムを格納した仮起動セクタを読み出して応答する。続いてステップＳ３でコマンドＢの発行をチェックしており、コマンドＢの発行を判別するとステップＳ４に進み、次の仮起動セクタが存在するか否かチェックする。
【０１０９】
次の仮起動セクタが存在すればステップＳ５に進み、そこから次の任意プログラムを格納した仮起動セクタを読み出して応答する。ステップＳ４で次の仮起動セクタが存在しないことが判別されるとステップＳ６に進み、本来のＬＢＡ０のマスタブートレコードを格納した起動セクタを読み出して応答する。ステップＳ７〜Ｓ１２は図９のステップＳ５〜Ｓ１０と同じである。
【０１１０】
また本発明のディスク記憶媒体あるいは不揮発性メモリに格納した仮起動セクタに書込こまれた任意プログラムについては、容易に書き換えられないようにすることが望ましい。これを実現するためにはハードディスクドライブ１６において、仮起動セクタに対する通常の書き込み要求についてはこれを失敗させるように処理する。この場合、仮起動セクタに書き込むための専用のコマンドを準備しておき、この専用のコマンドを通知した書き込みのみを許可するようにし、仮起動セクタに格納した任意プログラムが容易に書き換えることができないようにすることができる。
【０１１１】
更に本発明は、ハードディクスドライブ１６のプロセッサ６２で実行されるプログラムを提供するものであり、図９、図２０、図２３又は図２５のフローチャートの内容となる。
【０１１２】
尚、上記の実施形態は起動ドライブとしてハードディスクドライブ１６を例にとるものであったが、これ以外に図２のパーソナルコンピュータ１００に設けている入出力デバイスであるフロッピィ（Ｒ）ディスクドライブ２０、ＭＯディスクドライブ２４、ＣＤ−ＲＯＭドライブ２８もしくはＵＳＢドライブ３２のいずれかを起動ドライブとして指定してもよい。
【０１１３】
例えば起動ディスクとしてフロッピィ（Ｒ）ディスクドライブ２０を指定した場合には、フロッピィ（Ｒ）ディスクのＬＢＡ０の起動セクタをブートセクタとしているが相違し、それ以外の仮起動セクタの配置によるＯＳ起動前の任意プログラムの実行についてはハードディスクドライブの場合と同じである。
【０１１４】
またＭＯディスクドライブ２４、ＣＤ−ＲＯＭドライブ２８、ＵＳＢドライブ３２のいずれかを起動ドライブとして指定した場合には、ハードディスクドライブと同じ起動プログラムの配置もしくはフロッピィ（Ｒ）ディスクドライブと同じ起動プログラムの配置のいずれかを採用することができ、この場合についてもＯＳ起動前の任意プログラムの実行をハードディスクドライブの場合と同様にして実現することができる。
【０１１５】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、さらに上記の実施形態に示した数値による限定は受けない。
【０１１６】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
【０１１７】
（付記１）
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりＯＳを起動させる起動ステップと、
を備えたことを特徴とする起動プログラム実行方法。（１）
【０１１８】
（付記２）
付記１記載の起動プログラム実行方法に於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とする起動プログラム実行方法。（２）
【０１１９】
（付記３）
付記１記載の起動プログラム実行方法に於いて、前記任意プログラムを格納した仮起動セクタは、ＯＳがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とする起動プログラム実行方法。
【０１２０】
（付記４）
付記１記載の起動プログラム実行方法に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする起動プログラム実行方法。
【０１２１】
（付記５）
付記１記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、前記デバイスの単一領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、前記仮起動セクタの配置数を管理し、上位装置からの複数回の読出し要求に対し前記配置数分の仮起動セクタを順次読出し応答して前記任意プログラムを実行させることを特徴とする起動プログラム実行方法。
【０１２２】
（付記６）
付記１記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、前記デバイスの異なる領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、前記仮起動セクタの順番を管理し、電源投入後の前記上位装置からの複数回の読出し要求に対し前記複数の仮起動セクタを管理された順番に従って読出し応答して前記任意プログラムを実行させることを特徴とする起動プログラム実行方法。
【０１２３】
（付記７）
付記６記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、更に、前記デバイスの異なる領域毎に複数の仮起動セクタを配置して配置数を管理し、前記上位装置からの複数回の読出し要求に対し異なる配置領域毎に配置数分の仮起動セクタを順次読出し応答して前記任意プログラムを実行させるることを特徴とする起動プログラム実行方法。
【０１２４】
（付記８）
付記５乃至７のいずれかに記載の起動プログラム実行方法に於いて、前記複数の仮起動セクタに格納された任意プログラムは、１つの任意プログラムの分割プログラム、または複数種類の任意プログラムであることを特徴とする起動プログラム実行方法。
【０１２５】
（付記９）
付記１記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
前記任意プログラムは実行終了時に前記起動セクタの読出しを要求するコマンドを発行し、
前記起動ステップは、前記起動前処理ステップによる読出し応答後に上位装置から前記コマンドを受信した際に、前記起動セクタを読出し応答して前記起動プログラムを実行させることを特徴とする起動プログラム実行方法。
【０１２６】
（付記１０）
付記１記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
前記任意プログラムは実行終了時に次の仮起動セクタの読出しを要求するコマンドを発行し、
前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、前記上位装置から前記コマンドを受信した際に次の仮起動セクタを読出し応答し、
前記起動ステップは、前記コマンドを受信した際に次の仮起動セクタが存在しないことを判別して前記起動セクタを読出し応答することを特徴とする起動プログラム実行方法。
【０１２７】
（付記１１）
付記１記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
最後を除く複数の任意プログラムは実行終了時に次の任意プログラムの読出しを要求する第１コマンドを発行し、最後の任意プログラムは実行終了時に前記起動セクタの読出しを要求する第２コマンドを発行し、
前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、前記上位装置から前記第１コマンドを受信した際に次の仮起動セクタを読出し応答し、
前記起動ステップは、前記起動前処理ステップによる読出し応答に対し上位装置から前記第２コマンドを受信した際に前記起動セクタを読出し応答することを特徴とする起動プログラム実行方法。
【０１２８】
（付記１２）
付記１記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し前記任意のプログラムを格納した仮起動セクタを読出し応答する際に、前記起動セクタからパーティションテーブルをコピーして応答することを特徴とする起動プログラム実行方法。
【０１２９】
（付記１３）
付記１記載の起動プログラム実行方法に於いて、前記ドライブは、ディスクドライブ、メモリドライブを含むことを特徴とする起動プログラム実行方法。
【０１３０】
（付記１４）
上位装置からの指示により記憶媒体にアクセスするデバイスに於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりＯＳを起動させる起動部と、
を備えたことを特徴とするデバイス。（３）
【０１３１】
（付記１５）
付記１記載のデバイスに於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とするデバイス。
【０１３２】
（付記１６）
付記１記載のデバイスに於いて、前記任意プログラムを格納した仮起動セクタは、ＯＳがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とするデバイス。
【０１３３】
（付記１７）
上位装置の指示を受けてデバイスによりアクセスされる記憶媒体に於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする記憶媒体。（４）
【０１３４】
（付記１８）
付記１７記載の記憶媒体に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする記憶媒体。
【０１３５】
（付記１９）
上位装置の指示を受け記憶媒体にアクセスするデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりＯＳを起動させる起動ステップと、
を実行させることを特徴とするプログラム。（５）
【０１３６】
（付記２０）
付記１９記載のプログラムに於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とするプログラム。
【図面の簡単な説明】
【０１３７】
【図１】本発明の原理説明図
【図２】本発明の起動プログラム実行処理が適用されるパーソナルコンピュータのブロック図
【図３】図２のハードディスクドライブのブロック図
【図４】ＯＳ起動前に実行する任意プログラムを格納した仮起動ディスクのディスクレイアウトの説明図
【図５】図２の任意プログラムを記録する仮起動セクタの内容を起動セクタと対比して示した説明図
【図６】ＯＳ起動前に実行する任意プログラムを格納した仮起動セクタの他のディスクレイアウトの説明図
【図７】ＯＳ起動前に実行する任意プログラムを格納した仮起動セクタを不揮発性メモリに配置したハードディスクドライブの説明図
【図８】ＯＳ起動前に任意のプログラムを実行する本発明による制御処理のタイムチャート
【図９】図８の制御処理に対応したドライブ処理のフローチャート
【図１０】ＯＳ起動前に実行されるパスワード認証処理のフローチャート
【図１１】ＯＳ起動前に実行される暗号鍵生成処理のフローチャート
【図１２】ＯＳ起動前に実行される生体認証処理のフローチャート
【図１３】ドライブに格納先管理テーブルを設けたディスクレイアウトの説明図
【図１４】ドライブに格納先管理テーブルを設けた他のディスクレイアウトの説明図
【図１５】ドライブに格納先管理テーブルを設けた他のディスクレイアウトの説明図
【図１６】ドライブに格納先管理テーブルと順序管理テーブルを設けたディスクレイアウトの説明図
【図１７】ドライブに格納先と順序を示す順序管理テーブルを設けたディスクレイアウトの説明図
【図１８】コマンドＡ発行コードを備えた任意プログラムの説明図
【図１９】コマンドＡにより仮起動セクタの読出しからＬＢＡ０の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図２０】図１９の制御処理に対応したドライブ処理のフローチャート
【図２１】コマンドＢ発行コードを備えた任意プログラムの説明図
【図２２】コマンドＢにより次の仮起動セクタを読出し、コマンドＡによりＬＢＡ０の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図２３】図２２の制御処理に対応したドライブ処理のフローチャート
【図２４】コマンドＢのみにより次の仮起動セクタを読出し、ＬＢＡ０の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図２５】図２３の制御処理に対応したドライブ処理のフローチャート
【図２６】従来のマイクロコンピュータの説明図
【図２７】ブートプロセスを実行する従来のハードディスクドライブのディスクレイアウトの説明図
【図２８】ブートプロセスを実行する従来のフロッピィ（Ｒ）ドライブのディスクレイアウトの説明図
【図２９】従来のブート処理のフローチャート
【符号の説明】
【０１３８】
１０：ＣＰＵ
１１：バス
１２：ＢＩＯＳ
１４：ＲＡＭ
１６：ハードディスクドライブ
１８：ディスク記憶媒体
２０：フロッピィ（Ｒ）ディスクドライブ
２２：フロッピィ（Ｒ）ディスク
２４：ＭＯディスクドライブ
２６：ＭＯカートリッジ記憶媒体
２８：ＣＤ−ＲＯＭドライブ
３０：ＣＤ−ＲＯＭ記憶媒体
３２：ＵＳＢドライブ
３４：ＵＳＢメモリ
３６：マウスコントローラ
３８：マウス
４０：キーボードコントローラ
４２：キーボード
４４：ディスプレイコントローラ
４６：ディスプレイ
４８：通信ボード
５０：起動プログラム
５２：任意プログラム
５４：起動前応答部
５６：起動応答部
５８：回路ボード
６０：ディスクエンクロージャ
６２：ＭＰＵ
６４：インタフェース
６６：ハードディスクコントローラ（ＨＤＣ）
６８：リードチャネル（ＲＤＣ）
７０：サーボ制御部
７２：バッファメモリ
７４：不揮発性メモリ
７５：管理テーブル
７６：リード／ライトアンプ
７８：ヘッドアッセンブリィ
８０：ボイスコイルモータ
８２：スピンドルモータ
８３：マスタブートレコード
８４：起動セクタ
８５，８５−１，８５−２：仮起動セクタ
８６：ブートセクタ
８８：ＯＳ非アクセスセクタ
９０，９０−１〜９０−７：任意プログラム
９２：ＬＢＡ０読出コード
９４：システム領域
９５，９５−１〜９５−４：格納先管理テーブル
９６，９８：順序管理テーブル
１００：パーソナルコンピュータ
１０２：プログラム領域
１０４：パーティション領域
１０６：ブートストラップローダ
１０８−１〜１０８−４：パーティションテーブル
１１０：ブートシグニチャ
１１２：ＬＢＡ０読出コード
１１４：コマンドＡ発行コード
１１６：コマンドＢ発行コード
【図１】
2006236193.tif 000003
【図２】
2006236193.tif 000004
【図３】
2006236193.tif 000005
【図４】
2006236193.tif 000006
【図５】
2006236193.tif 000007
【図６】
2006236193.tif 000008
【図７】
2006236193.tif 000009
【図８】
2006236193.tif 000010
【図９】
2006236193.tif 000011
【図１０】
2006236193.tif 000012
【図１１】
2006236193.tif 000013
【図１２】
2006236193.tif 000014
【図１３】
2006236193.tif 000015
【図１４】
2006236193.tif 000016
【図１５】
2006236193.tif 000017
【図１６】
2006236193.tif 000018
【図１７】
2006236193.tif 000019
【図１８】
2006236193.tif 000020
【図１９】
2006236193.tif 000021
【図２０】
2006236193.tif 000022
【図２１】
2006236193.tif 000023
【図２２】
2006236193.tif 000024
【図２３】
2006236193.tif 000025
【図２４】
2006236193.tif 000026
【図２５】
2006236193.tif 000027
【図２６】
2006236193.tif 000028
【図２７】
2006236193.tif 000029
【図２８】
2006236193.tif 000030
【図２９】
2006236193.tif 000031
【手続補正書】
【提出日】平成17年5月20日(2005.5.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明は、上位装置のＢＩＯＳや記憶媒体の起動セクタ（ＬＢＡ０）を変更することなく、ＯＳ起動に先立ってセキュリティ等の任意のプログラムを実行可能とする起動プログラム実行方法、デバイス、記憶媒体及びプログラムを提供することを目的とする。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
本発明は起動プログラム実行方法を提供する。本発明の起動プログラム実行方法は、
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ８４に代えて任意プログラム９０を格納した仮起動セクタ８５ちを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりＯＳを起動させる起動ステップと、
を備えたことを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、ブートストラップローダにより指定されるパーティション起動セクタに格納されたブートプログラム、または、起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
このようなマスタブートレコード８３とブートセクタ８６から構成される起動プログラムに対し本発明にあっては、ＯＳがアクセスできないＯＳ非アクセスセクタ８８を論理ブロックアドレスＬＢＡｘｘｘｘの仮起動セクタ８５とし、仮起動セクタ８５にＯＳ起動前に実行される任意プログラム９０を格納している。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
このような仮起動セクタ８５につき、４４６バイトのプログラム領域１０２にＯＳ起動前に実行させる任意プログラム９０を格納している。プログラム領域１０２に格納した任意プログラム９０は、プログラムの最後にＬＢＡ０読出コード１１２を格納している。このため任意プログラム９０が実行されると、最後にＬＢＡ０読出コード１１２が実行され、これによって、ハードディスクドライブ１６に対しＬＢＡ０を指定した起動セクタの読出し要求が行われることになる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
図１２はＯＳ起動前に実行される生体認証処理プログラムのフローチャートである。図１２の生体認証処理にあっては、例えばパーソナルコンピュータに指紋読取デバイスや静脈読取デバイスなどが備えられている。このため、ステップＳ１で生体認証デバイスから情報を読み込んだ後、ステップＳ２で登録生体情報と読込情報とを照合し、ステップＳ３で生体情報が一致していれば、ステップＳ４でＬＢＡ０で指定される起動セクタの読出し要求を行ってＯＳを起動することになる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
これによって複数の仮起動セクタの読み出して任意プログラムを実行する毎に、コマンドＢ発行コード１１６に基づきコマンドＢが発行されて次の任意プログラムを格納した仮起動セクタの読み出し応答が行われ、最後の任意プログラムが実行されるとコマンドＡが発行され、コマンドＡの発行に基づき本来のＬＢＡ０の起動セクタのマスタブートレコードの読出し応答を行うことができる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
ハードディスクドライブ１６はステップＳ１０３でコマンドＡの発行を判別して本来のＬＢＡ０のマスタブードレコードを格納した起動セクタを読み出して応答する。そしてステップＳ１１でメモリに格納されたマスタブートレコード、即ちブードストラップローダの先頭に制御を移し、ステップＳ１２でブードストラップローダを実行し、以後、図８のステップＳ１２，Ｓ１３に示したようにＯＳの起動が行われる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
（付記４）
付記１記載の起動プログラム実行方法に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに格納されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする起動プログラム実行方法。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１３１
【補正方法】変更
【補正の内容】
【０１３１】
（付記１５）
付記１４記載のデバイスに於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とするデバイス。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１３２
【補正方法】変更
【補正の内容】
【０１３２】
（付記１６）
付記１４記載のデバイスに於いて、前記任意プログラムを格納した仮起動セクタは、ＯＳがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とするデバイス。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１３４
【補正方法】変更
【補正の内容】
【０１３４】
（付記１８）
付記１７記載の記憶媒体に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに格納されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする記憶媒体。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１３６
【補正方法】変更
【補正の内容】
【０１３６】
（付記２０）
付記１９記載のプログラムに於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたＰＣ／ＡＴ互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに格納されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とするプログラム。