起動プログラム実行方法、デバイス、記憶媒体及びプログラム
【課題】上位装置のBOISや記憶媒体のLBA0の起動セクタを変更することなく、OS起動に先立ってセキュリティ等の任意のプログラムを実行可能とする。
【解決手段】起動前処理部54は、上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ84に代えて任意プログラム90を格納した仮起動セクタ85を読出し応答して任意プログラムを実行させる。起動部56は、任意のプログラム90の実行に基づく上位装置からの次の読込み要求に対し起動セクタ84を読出し応答して起動プログラムの実行によりOSを起動させる。任意プログラムを格納した仮起動セクタ85は、OSがアクセスできない記憶媒体の特殊領域、デバイスのみがアクセス可能な記憶媒体のシステム領域又はデバイスに設けた不揮発性メモリの領域に配置される。
【解決手段】起動前処理部54は、上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ84に代えて任意プログラム90を格納した仮起動セクタ85を読出し応答して任意プログラムを実行させる。起動部56は、任意のプログラム90の実行に基づく上位装置からの次の読込み要求に対し起動セクタ84を読出し応答して起動プログラムの実行によりOSを起動させる。任意プログラムを格納した仮起動セクタ85は、OSがアクセスできない記憶媒体の特殊領域、デバイスのみがアクセス可能な記憶媒体のシステム領域又はデバイスに設けた不揮発性メモリの領域に配置される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブートプロセスによりOSを起動する起動プログラム実行方法、デバイス、記憶媒体及びプログラムに関し、特に、OSの起動前に任意のプログラムを実行する起動プログラム実行方法、デバイス、記憶媒体及びプログラムに関する。
【背景技術】
【0002】
従来、PC/AT互換機のパーソナルコンピュータにあっては、図26に示すように、パーソナルコンピュータ200にハードディクスドライブ202を内蔵すると共に、外部に必要に応じてフロッピィ(R)ディスクドライブ204、光磁気ディスクドライブ206、CD−ROMドライブ208、USBメモリ210等を接続してる。
【0003】
図27は従来のハードディクスドライブのディスクレイアウトであり、ディスクの先頭論理ブロックアドレスLBA0となる先頭セクタにマスタブートレコード(MBR)212が存在し、ここにブートストラップローダ、パーティションテーブル及びブートシグニチャを格納している。また特定のパーティションの先頭セクタとなるブートセクタ214にはブートプログラムが格納されている。
【0004】
図28は起動用のフロッピィ(R)ディスクのディスクレイアウトであり、ブートストラップローダは存在せず、ブートセクタ216にブートプログラムが存在する。MO、CD−ROM、USBメモリなどは、図27又は図28のどちらかの形式で記録されている。
【0005】
図29は図27のディスクレイアウトを対象としたブートプロセスのフローチャートである。図29において、ステップS1で電源を投入すると、ステップS2でプロセッサの自己診断を行った後、ステップS3でBIOS(Basic Input Output System)が起動し、ステップS4でBIOSはディスクのLBA0の先頭セクタに記録されている内容を、セクタ長分、一般的には512バイト読み込み、ステップS5でパーソナルコンピュータの主記憶として機能するメモリに格納する。
【0006】
次に、ステップS6でBIOSは格納されたデータの先頭位置に制御を移す。制御を移すと、その位置に格納されたプログラムが実行される。ハードディスクドライブの場合は、LBA0の先頭からブートストラップローダが記録されているため、ブートストラップローダが動作してブートセクタがロードされ、ブートプログラムが実行される。ブートプログラムはディスクに格納されているOSをメモリにロードして実行し、OSが起動する。
【0007】
尚、フロッピィ(R)ディスクの場合はLBA0の先頭からブートプログラムが記録されているため、最初からブートプログラムが実行される。
【0008】
ところで近年にあっては、パーソナルコンピュータのセキュリティを高めるため、OSを起動した後にアプリケーションによって記憶媒体アクセスに対しパスワード認証を要求するようにしている。しかし、アプリケーションレベルで対策するよりは、コンピュータの電源を投入してOSが起動する前にパスワード認証処理等が実行できれば、極めて高いセキュリティを確保することができる。
【特許文献1】特開2000−215065号公報
【特許文献2】特開2003−150455号公報
【特許文献3】特開昭63−175955号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、従来のブートプロセスにあっては、電源投入時にBIOSがディスクドライブの先頭セクタ(LBA0)を読み出してメモリに格納し、格納した内容に先頭位置に制御を移してブートストラップローダを動作するようにしているため、起動時に任意のプログラムを実行したい場合は、BIOSを変更するか、ブートストラップローダを変更するかのどちらかを行わなければならない。尚、フロッピィ(R)ディスクの場合はブートストラップローダは存在しないのでブートプログラムを変更する必要がある。
【0010】
しかし、BIOSの変更はBIOSメーカーに依頼する必要があり、コストの問題がある。また、先頭セクタ(LBA0)の内容変更はOSの起動に影響を与えるためリスクが高いという問題がある。
【0011】
本発明は、上位装置のBOISや記憶媒体の起動セクタ(LBA0)を変更することなく、OS起動に先立ってセキュリティ等の任意のプログラムを実行可能とする起動プログラム実行方法、デバイス、記憶媒体及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
図1は本発明の原理説明図である。
【0013】
本発明は起動プログラム実行方法を提供する。本発明の起動プログラム実行方法は、
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ84aに代えて任意プログラム90を格納した仮起動セクタ85ちを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりOSを起動させる起動ステップと、
を備えたことを特徴とする。
【0014】
ここで、任意プログラムは、実行終了時に起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納する。任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置される。
【0015】
起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムである。
【0016】
起動前処理ステップは、デバイスの単一領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、仮起動セクタの配置数を管理し、上位装置からの複数回の読出し要求に対し配置数分の仮起動セクタを順次読出し応答して任意プログラムを実行させる。
【0017】
起動前処理ステップは、デバイスの異なる領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、仮起動セクタの順番を管理し、電源投入後の上位装置からの複数回の読出し要求に対し複数の仮起動セクタを管理された順番に従って読出し応答して任意プログラムを実行させる。
【0018】
起動前処理ステップは、更に、デバイスの異なる領域毎に複数の仮起動セクタを配置して配置数を管理し、上位装置からの複数回の読出し要求に対し異なる配置領域毎に配置数分の仮起動セクタを順次読出し応答して任意プログラムを実行させる。
【0019】
複数の仮起動セクタに格納された任意プログラムは、1つの任意プログラムの分割プログラム、または複数種類の任意プログラムである。
【0020】
複数の仮起動セクタに分けて任意プログラムを格納した場合、任意プログラムは実行終了時に起動セクタの読出しを要求するコマンドAを発行し、起動ステップは、起動前処理ステップによる読出し応答後に上位装置からコマンドAを受信した際に、前記起動セクタを読出し応答して前記起動プログラムを実行させる。
【0021】
複数の仮起動セクタに分けて任意プログラムを格納した場合、任意プログラムは実行終了時に次の仮起動セクタの読出しを要求するコマンドBを発行し、
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、上位装置からコマンドBを受信した際に次の仮起動セクタを読出し応答し、
起動ステップは、コマンドBを受信した際に次の仮起動セクタが存在しないことを判別して前記起動セクタを読出し応答する。
【0022】
複数の仮起動セクタに分けて任意プログラムを格納した場合、最後を除く複数の任意プログラムは実行終了時に次の任意プログラムの読出しを要求する第1コマンドBを発行し、最後の任意プログラムは実行終了時に起動セクタの読出しを要求する第2コマンドAを発行し、
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、上位装置から第1コマンドBを受信した際に次の仮起動セクタを読出し応答し、
起動ステップは、起動前処理ステップによる読出し応答に対し上位装置から第2コマンドAを受信した際に前記起動セクタを読出し応答する。
【0023】
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し任意のプログラムを格納した仮起動セクタを読出し応答する際に、起動セクタからパーティションテーブルをコピーして応答する。ドライブは、ディスクドライブ、メモリドライブを含む。
【0024】
本発明は、上位装置からの指示により記憶媒体にアクセスするデバイスを提供する。本発明のデバイスは、上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりOSを起動させる起動部とを備えたことを特徴とする。
【0025】
本発明は上位装置の指示を受けてデバイスによりアクセスされる記憶媒体を提供する。本発明の記憶媒体は、上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする。
【0026】
本発明は、上位装置の指示を受けて記憶媒体にアクセスするデバイスのコンピュータにより実行されるプログラムを提供する。本発明のプログラムは、上位装置に接続されたデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりOSを起動させる起動ステップと、
を実行させることを特徴とする。
【発明の効果】
【0027】
本発明によれば、上位装置のBIOSや記憶媒体の起動セクタ、例えば先頭セクタ(LBA0)の内容を変更することなく、上位装置の電源投入後のブートプロセスにより任意プログラムを格納した仮起動セクタを読出し応答して任意プログラムを実行させることにより、OSを起動する前に任意のプログラムを実行することができる。
【0028】
つまり、上位装置のブートプロセスによりOSを起動する前に、上位装置のBIOSや記憶媒体の起動セクタの内容を変更することなく、起動ドライブ自身で単独に任意のプログラムを読出し、任意のプログラムを上位装置に実行させることができる。
【0029】
また仮起動セクタを複数配置することで、セクタサイズを越える任意プログラムを分割して格納することができ、任意のプログラムのサイズを自由にきめることができるし、複数種類の任意のプログラムを格納してOS起動前に実行することもできる。
【発明を実施するための最良の形態】
【0030】
図2は本発明の起動プログラム実行処理が適用されるパーソナルコンピュータのブロック図である。図2において、CPU10のバス11に対しては、電源投入時にOSを起動するためのBIOS12が設けられ、また主記憶として機能するRAM14が設けられている。
【0031】
CPU10に対する入出力デバイスとしてハードディスクドライブ16が設けられ、ハードディスクドライブ16はディスク記憶媒体18を備えている。この例では、起動ドライブとしてハードディスクドライブ16を使用する場合を例にとっている。
【0032】
またバス11に対しては、フロッピィ(R)ディスクドライブ20、MOディスクドライブ24、CD−ROMドライブ28、USBドライブ32が設けられ、それぞれ記憶媒体としてフロッピィ(R)ディスク22、MOカートリッジ記憶媒体26、CD−ROM記憶媒体30及びUSBメモリ34を使用する。
【0033】
更にバス11に対しては、マウスコントローラ36を介してマウス38が接続され、キーボードコントローラ40を介してキーボード42が接続され、ディスプレイコントローラ44を介してディスプレイ46が接続され、更に通信ボート48を介してLANなどのネットワーク接続が行われる。
【0034】
起動ディスクとして動作するハードディスクドライブのディスク記憶媒体18には、OSを起動するための起動プログラム50と、OSの起動前に実行される任意プログラム52が格納されている。
【0035】
任意プログラム52としては、後の説明で明らかにするように、セキュリティ用の各種のプログラムやウィルスチェックプログラムなど、コンピュータのOS起動前の段階で実行を必要とする任意のプログラムが格納できる。
【0036】
ハードディスクドライブ16には起動前応答部54と起動応答部56の機能が設けられている。起動前応答部54は、パーソナルコンピュータ100の電源投入後のBIOS12による最初の読込み要求に対し、ディスク記憶媒体18に格納された先頭論理ブロックアドレスLBA0で指定される起動プログラム50を格納した起動セクタに代えて、任意のプログラムが格納された仮起動セクタを読出し応答してRAM14に格納し、その内容に制御を移して任意プログラムをCPU10により実行させる。
【0037】
起動応答部56は、CPU10による任意プログラムの実行に基づく次の起動セクタの読込み要求に対し、ディスク記憶媒体18の起動プログラム50が格納されたLBA0の起動セクタを読出し応答してRAM14に格納し、その先頭に制御を移すことで起動プログラム50を実行して、ディスク記憶媒体18よりOSをロードして、OSを起動させる。
【0038】
ここで起動プログラム50を格納した起動セクタとしてLBA0の先頭セクタを例にとっているが、BIOSによっては先頭セクタ以外の例えばLBA1を起動セクタとする場合もあり、起動セクタは必ずしもLBA0の先頭セクタには限定されない。
【0039】
図3は図2で起動ドライブとして使用されるハードディスクドライブのブロック図である。図3において、ハードディスクドライブ16は、回路ボード58とディスクエンクロージャ60で構成される。回路ボード58にはMPU62、インターフェース64、ハードディスクコントローラ66、リードチャネル68、サーボ制御部70、バッファメモリ72及び不揮発メモリ74が設けられる。ディスクエンクロージャ60には、リード/ライトアンプ76、ヘッドアッセンブリィ78、ボイスコイルモータ80及びスピンドルモータ82が設けられる。
【0040】
スピンドルモータ82の回転軸には図示しないディスク記憶媒体が装着され、一定速度で回転される。ヘッドアッセンブリィ78はヘッドアクチュエータのアーム先端に支持されており、ヘッドアクチュエータをボイスコイルモータ80により駆動することで、ヘッドアッセンブリィ78のリードヘッドとライトヘッドを備えた複合ヘッドを磁気ディスク記憶媒体の記憶媒体面に対し位置決めを行う。
【0041】
MPU62には、OS起動前に任意のプログラムを実行するため、起動前応答部54、起動応答部56、更に起動前応答部54で複数の任意プログラムを実行させる際に必要な情報を管理する管理テーブル75を設けている。
【0042】
図4はOS起動前に実行する任意プログラムを格納したディスクレイアウトの説明図である。図4において、ハードディスクドライブ16のディスク記憶媒体18の論理ブロックアドレスLBA0で指定される起動セクタ84には起動プログラムとしてマスタブートレコード83が記録され、また任意のパーティションの起動セクタにブートセクタ86を記録している。
【0043】
このようなマスタブートレコード84とブートセクタ86から構成される起動プログラムに対し本発明にあっては、OSがアクセスできないOS非アクセスセクタ88を論理ブロックアドレスLBAxxxxの仮起動セクタ85とし、仮起動セクタ85にOS起動前に実行される任意プログラム90を格納している。
【0044】
図5は図4の任意プログラムを記録する仮起動セクタの内容を、起動プログラムを格納した起動セクタと対比して示した説明図である。
【0045】
図5(A)は起動プログラムが格納された起動セクタ84であり、パーソナルコンピュータ100を起動した際のBIOS12の読出しを受けてRAM14にロードされる。この起動セクタ84は446バイトのプログラム領域102と64バイトのパーティション領域104に分けられており、プログラム領域102にはブートストラップローダ106が格納され、パーティション領域104は4つの領域に分けられてパーティションテーブル108−1〜108−4を格納している。最後の4バイトの領域にはブートシグニチャ110が格納される。この起動セクタ84のサイズは、PC−AT互換機の場合は512バイトのサイズである。
【0046】
起動セクタ84を使用したOSの起動は、BIOS12によって、起動ドライブであるハードディスクドライブ16のLBA0の起動セクタ84の読出しでマスタブートレコード83がRAM14にロードされる。RAM14にマスタブートレコード83がロードされると、図5(A)のブートストラップローダ106に制御を移す。ブートストラップローダ106は例えば次の手順でな起動プログラムを実行する。
【0047】
(1)パーティションテーブル108−1〜108−4を検査し、起動フラグの立ったパーティション領域がないかを探す。
(2)起動フラグの立ったパーティション領域が見つかると、そのパーティション領域の起動セクタのアドレスをテーブルから取得する。
(3)BIOS12にパーティション先頭アドレスを示し、パーティション起動セクタ即ちブートセクタ86をロードさせる。
(4)ロードしたパーティション起動セクタ、即ちブートセクタに制御を移す。
【0048】
起動セクタ84の最後のブートシグニチャ110はマジックナンバーと呼ばれる「0xAA55」という値が入っており、このマジックナンバーが入っていることで、マスタブートレコード84が有効なものとして起動処理が行われる。
【0049】
図5(B)は、本発明においてOS起動前に実行される任意プログラム90を格納した仮起動セクタ85の内容である。仮起動セクタ85は起動プログラムを格納した起動セクタ84と同じ514バイトのサイズであり、セクタ内のフォーマット構造も起動セクタ84と同じであり、446バイトのプログラム領域102と64バイトのパーティション領域104、更に最後の4バイトを使用して、ブートシグニチャ110を記録している。
【0050】
このような仮起動セクタ84につき、446バイトのプログラム領域102にOS起動前に実行させる任意プログラム90を格納している。プログラム領域102に格納した任意プログラム90は、プログラムの最後にLBA0読出コード112を格納している。このため任意プログラム90が実行されると、最後にLBA0読出コード112が実行され、これによって、ハードディスクドライブ16に対しLBA0を指定した起動セクタの読出し要求が行われることになる。
【0051】
パーティション領域104については、電源投入後のBIOS12からの最初の読出し要求がブートストラップローダ106の実行のためではなく、パーティション領域104の読出し要求であった場合には、パーティション領域104に起動セクタ84におけるパーティション領域104のパーティションテーブル108−1〜108−4のコピーを行って、仮起動セクタ85を返すようにしている。
【0052】
もちろん、BIOS12からの最初の読出し要求がブートストラップローダ106の実行である場合には、パーティションテーブル108−1〜108−4をコピーして返す必要なく、この場合にはパーティション領域104についても任意プログラム90を格納するプログラム領域102として使用することが可能である。
【0053】
このように本発明にあっては、ハードディスクドライブ16において通常アクセスできない特殊領域、例えばOSがアクセスできないOS非アクセス領域88に、図4のようにLBA0で指定される起動セクタ84と同じ514バイトのセクタ長を持つ仮起動セクタ85を設け、ここに図5(B)に示したように任意プログラム90を格納しておくことで、電源投入後のBIOS12による起動ディスクの起動セクタに対する最初の読出し要求に対し、起動セクタ84に代えて、例えばOS非アクセス領域88に準備された仮起動セクタ85を読出し応答してRAM14にロードして、その内容である任意プログラム90の先頭に制御を移すことで、OSの起動プログラムであるブートストラップローダ106の実行前に任意プログラム90を実行することができる。
【0054】
任意プログラム90が実行されると、図5(B)に示したように、任意プログラム90の最後にはLBA0読出コード112が格納されているため、このLBA0読出コード112の実行でハードディスクドライブ16に対し2回目のLBA0の起動セクタ84に対する読出し要求が行われる。
【0055】
2回目の読出し要求に対しては実際の起動セクタ84がRAM14にロードされ、読み込んだ内容の先頭、即ち図5(A)に示す起動セクタ84のブートストラップローダ106に制御を移すことで起動処理を実行し、起動フラグの立っているパーティションのパーティション起動セクタからブートセクタ86をロードし、ブートセクタ86の内容に格納されている初期プログラムロードのプログラムコードの実行でファイルシステムをハードディスクドライブから次々とロードし、OSを起動することになる。
【0056】
図6はOS起動前に実行する任意プログラムを格納した仮起動セクタの他のディスクレイアウトの説明図である。図6にあっては、ハードディスクドライブ16におけるディスク記憶媒体18の通常はアクセスできないセクタ、即ちドライブのみがアクセス可能なシステム領域94に仮起動セクタ85を配置して、任意プログラム90を格納している。
【0057】
図7はOS起動前に実行する任意プログラムの仮起動セクタを不揮発メモリに格納したハードディスクドライブの説明図である。図7において、ハードディスクドライブ16には不揮発メモリ74が設けられていることから、この実施形態にあっては仮起動セクタ85を不揮発メモリ74の領域に配置して、そこに任意プログラム90を格納するようにしている。図6及び図7のいずれの任意プログラム90についても、その格納領域となる仮起動セクタ85の構成は図5(B)に示したと同じになる。
【0058】
図8はOS起動前に任意のプログラムを実行する本発明による制御処理のタイムチャートであり、上位装置として機能するパーソナルコンピュータ100と、起動ドライブであるハードディスクドライブ16との処理を示している。図8において、パーソナルコンピュータ100の電源をステップS1で投入すると、ステップS2でプロセッサの自己診断を行った後、ステップS3でBIOS12が起動する。
【0059】
起動したBIOS12は、まず起動ドライブを検索する。これはBIOS12のブートシーケンスの設定に依存しており、通常、ディフォルトでは「A then C」となっており、フロッピィ(R)が最初で次にハードディスクとなっており、この場合、フロッピィ(R)は挿入されていないことから、ハードディスクが起動ドライブとして検索される。
【0060】
起動ドライブが決定すると、ステップS4でハードディスクドライブ16のLBA0を指定した起動セクタの読出し要求が行われる。この読出し要求を受けてハードディスクドライブ16は、ステップS101で電源投入後の最初の起動セクタ読出しを判別し、この場合には、例えば図4に示したように、OS非アクセスセクタ88の任意プログラム90を格納した仮起動セクタ85を読み出して応答する。
【0061】
パーソナルコンピュータ100は、ステップS5で読出し内容をRAMで構成されるメモリに格納した後、ステップS6でメモリに格納された内容の先頭、即ち任意プログラム90の先頭に制御を移す。そしてステップS7で任意プログラム90を実行する。任意プログラム90の実行が済むと、図5(B)のように、任意プログラム90の最後に設けられたLBA0読出コード112の実行により、ステップS8で任意プログラムがLBA0の起動セクタ84の読出し要求を発行する。
【0062】
これを受けてハードディスクドライブ16は、ステップS102で電源投入後の2回目のLBA読出し、即ち起動セクタ読出しを判別し、起動セクタ84を読み出して応答する。
【0063】
パーソナルコンピュータ100は、ステップS9でLBA0の起動セクタ84の読出し内容であるマスタブートレコード84をメモリに格納した後、ステップS10でメモリに格納された内容の先頭、即ち図5(A)に示すブートストラップローダ106の先頭に制御を移す。
【0064】
これによって、ステップS11でブートストラップローダ106が実行され、起動フラグの立ったパーティション起動セクタの読出しをハードディスクドライブ16に要求し、ハードディスクドライブ16はステップS103で起動フラグの立ったパーティション起動セクタからブートセクタ86を読み出して応答する。
【0065】
パーソナルコンピュータ100は、ステップS12で読出し内容をメモリに格納してブートプログラムを実行し、これによりファイルシステムが次々とロードされ、ステップS13でOSが起動する。
【0066】
図9は図8の制御処理に対応したハードディスクドライブ16のドライブ処理のフローチャートである。図9において、ハードディスクドライブ16は、ステップS1でLBA0の指定による起動セクタの読出し要求をチェックしており、起動セクタの読出し要求があると、ステップS2で電源投入後またはバスリセット後の最初の要求か否かチェックし、最初の要求であれば、ステップS3で任意プログラムを格納した仮起動セクタを読み出して応答する。
【0067】
2回目の起動セクタの読出し要求があった場合には、ステップS2で2回目以降であることが判別されてステップS4に進み、マスタブートレコードである起動セクタを読み出して応答する。この状態で、ステップS5でブートセクタ読出し要求を判別すると、ステップS6でブートセクタを読み出して応答する。
【0068】
続いてステップS7でOS読出し要求、即ちファイル読出し要求があれば、ステップS8で要求のあったOS領域を読み出して応答し、これによってOSが起動される。起動後は、ステップS9でOS配下の入出力処理を行う。即ち、ライトコマンドによりディスク記憶媒体に対するデータの書込み、リードコマンドによるディスク記憶媒体からのデータの読出し応答を行う。このような処理を、ステップS10で停止指示があるまで繰り返す。
【0069】
図10は本発明のOS起動前に実行される任意プログラムとして暗号生成処理プログラムを実行した場合のフローチャートである。図10において、パスワード認証処理は、ステップS1でパスワード認証画面を表示し、この状態で、ステップS2でキーボード入力をパスワードとして読み込み、ステップS3でハードディスクドライブのパスワード照合機能を呼び出し、登録済のパスワードと入力されたパスワードとを照合して、ステップS4でパスワードの一致の有無を判定し、パスワード一致であれば、ステップS5でパスワード認証処理を終了し、LBA0の起動セクタの読出し要求を行ってOS起動後の処理に移行する。
【0070】
一方、ステップS4でパスワードが不一致であった場合には、ステップS6でエラーメッセージを表示して処理を終了し、この場合にはLBA0の起動セクタの読出し要求は行われないことから、OSは起動することなく、パーソナルコンピュータ自体をロックすることができる。
【0071】
図11はOS起動前に実行される暗号鍵生成処理プログラムのフローチャートである。図11において、暗号鍵生成処理は、ステップS1でパスワード入力画面を表示し、ステップS2でキーボード入力をパスワードとして読み込み、ステップS3でパスワードをハードディスクドライブにセットして暗号鍵の生成を指示する。
【0072】
ステップS4で暗号鍵生成完了通知があれば、ステップS5でLBA0で指定される起動セクタの読出し要求を行った後、OS起動後の処理に移行する。ステップS4で暗号鍵生成完了通知がなかった場合には、ステップS6でエラーメッセージを表示し、この場合にはOSが起動しないことから、コンピュータそのものがロックされることになる。
【0073】
なお暗号鍵生成処理にあっては、ステップS4、ステップS6の処理は行わず、単にハードディスクドライブにパスワードをセットして暗号鍵を生成させるだけでもよい。この場合、パスワードが誤っていた場合には正しい暗号鍵が生成されないため、誤った暗号鍵ではハードディスクドライブに対するデータの暗号復号化ができず、結果としてディスク内容に対するアクセスができないことで、ロックを掛けることができる。
【0074】
図12はOS起動前に実行される生体認証処理プログラムのフローチャートである。図12の生体認証処理にあっては、例えばパーソナルコンピュータに指紋読取デバイスや整脈読取デバイスなどが備えられている。このため、ステップS1で生体認証デバイスから情報を読み込んだ後、ステップS2で登録生体情報と読込情報とを照合し、ステップS3で生体情報が一致していれば、ステップS4でLBA0で指定される起動セクタの読出し要求を行ってOSを起動することになる。
【0075】
一方、ステップS3で生体情報が不一致であった場合には、ステップS5でハードディスクドライブをアクセス不可にセットした後、ステップS6でエラーメッセージを表示し、OSを起動せずにコンピュータをロックすることになる。
【0076】
図13はハードディスクドライブ側に任意プログラムの格納先管理テーブルを設けた場合のディスクレイアウトの説明図である。図4、図6、図7の仮起動セクタ85は、LBA0の起動セクタと同じ512バイトとなる1セクタのサイズであり、1セクタを超える任意プログラムについては複数の仮起動セクタを設けることで格納することができる。
【0077】
図13はディスク記憶媒体18のOS非アクセスセクタ88に2セクタの仮起動セクタ85−1,85−2を設け、それぞれ任意プログラム90−1,90−2を格納した場合である。このように複数の仮起動セクタ85−1,85−2に任意プログラム90−1,90−2を格納した場合には、ハードディスクドライブ16に格納先管理テーブル95を配置し、仮起動セクタ85−1の論理ブロックアドレスLBAxxxxとセクタ数=2を管理する。
【0078】
この場合、パーソナルコンピュータの電源投入で最初にLBA0の起動セクタ84の読出し要求を受けた際に格納先管理テーブル95を参照し、仮起動セクタのセクタ数が2セクタであることを認識し、最初の起動セクタ84の読み出し要求に対しては任意プログラム90−1を格納した1番目の仮起動セクタ85−1を読み出し応答し、2回目の起動セクタの読み出し要求に対しては任意プログラム90−2を格納した2番目の仮起動セクタ85−2を読み出し応答する。
【0079】
図14はディスク記憶媒体18のシステム領域94に2つの仮起動セクタ85−1,85−2を準備し、そこに任意プログラム90−1,90−2を格納した場合であり、この場合についても格納先管理テーブル95に通常アクセスできないセクタとしてシステム領域94とそのセクタ数=2を登録して管理する。
【0080】
図15は任意プログラムの仮起動セクタを不揮発性メモリ74に配置した場合である。この場合には不揮発性メモリ74に2セクタ分の仮起動セクタ85−1,85−2を配置して任意プログラム90−1,90−2を格納し、格納先管理テーブル95に格納先が不揮発性メモリ74であり、セクタ数=2を登録して管理する。
【0081】
図16はディスク記憶媒体18のOS非アクセスセクタ88、システム領域94さらに不揮発性メモリ74に仮起動セクタ85−1〜85−7を配置し、それぞれに任意プログラム90−1〜90−7を格納した場合である。この場合には順序管理テーブル96をハードディスクドライブ16に配置し、任意プログラムの格納先の順番を登録する。同時に格納先管理テーブル95を設け位置の異なる領域ごとに領域95−1〜95−3を設け、格納先毎の配置セクタ数を登録する。
【0082】
このような順序管理テーブル96と格納先管理テーブル95を組み合わせることで例えば3つの異なる領域について例えば仮起動セクタ85−1〜85−7を準備し、この例では7セクタ分の任意プログラムを格納し、OS起動前に順次読み出して実行することができる。
【0083】
図17はハードディスクドライブ16に格納先と順序を示す順序管理テーブルを設けたディスクレイアウトの説明図である。図17においてハードディスクドライブ16にあってはディスク記憶媒体18のOS非アクセスセクタ88に2セクタ、システム領域94に1セクタさらに不揮発メモリに3セクタ、任意プログラムを格納する仮起動セクタを準備し、任意プログラム90−1〜90−6を格納している。
【0084】
このような任意プログラム90−1〜90−6の格納状態につき、順序管理テーブル98が準備されている。順序管理テーブル98は格納順番領域98−1〜98−6を有し、それぞれ格納先と該当するセクタ数が登録されている。即ち、テーブル項目98−1にあっては不揮発性メモリ74の第1仮起動セクタの任意プログラム90−1が最初であることを示し、順序管理テーブル98−2にあっては通常アクセスできないセクタであるシステム領域94の第1仮起動セクタにある任意プログラム90−2が2番目であることを示し、以下任意プログラム90−3〜90−6につき登録が行われる。
【0085】
図13〜図17の複数の仮起動セクタに任意プログラムを格納してOS起動前に実行する場合には、LBA0の起動セクタの読出し要求を受けるごとに格納先管理テーブル95、順序管理テーブル96又は98を参照し、最後の任意プログラムの読み出し応答が終了するまで仮起動セクタの読み出し応答を繰り返し、次の読出しの済んでいない仮起動セクタがなくなった場合に、そのときの起動セクタの読出し要求に対し、本来のLBA0の起動セクタからマスタブードレコードを読出し応答することになる。
【0086】
ここで任意プログラムを複数の仮起動セクタに格納する場合は、1つの任意プログラムを複数の仮起動セクタに分割して格納する場合と、複数種類の任意プログラムを複数の仮起動セクタに分けて格納する場合とある。
【0087】
1つのプログラムを複数の仮起動セクタに分割できることで起動プログラムを格納した起動セクタのサイズ、即ち514バイトを越える任意プログラムについてもOS前に実行可能となる。また図10、図11、図12に示したようなパスワード認証プログラム、暗号鍵生成プログラム、生体認証プログラムといった異なったプログラムを複数の仮起動セクタに分けて格納してOS起動前に実行させることもできる。
【0088】
図18は仮起動セクタから本来の起動セクタの読み出しに切り替えるコマンドAを発行するためのコードを備えた任意プログラムの説明図である。OS起動前に任意プログラムを実行する場合、BIOS12によっては任意のプログラムが実行される前に数回のLBA0の起動セクタの読み込みを行う場合がある。
【0089】
このような場合、複数セクタに分けて任意プログラムを格納していると、2回目以降の起動セクタの読み出し要求に対し本来のLBA0の起動セクタを読出し応答が行われると、任意のプログラムが実行できない可能性がある。これを防止するため、図18のように任意プログラム90の最後にコマンドA発行コード114を設け、このコマンドA発行コード114の実行で仮起動セクタから実際の起動セクタに切り替えるコマンドAを発行し、任意プログラムが実行されてコマンドA発行コード114に基づきコマンドAが発行された段階でハードディスクドライブ側は実際のLBA0の起動セクタのデータを返すようにすることができる。
【0090】
図19はコマンドAにより任意プログラムの読出しから本来のLBA0の起動セクタの読出しに切り替える本発明による制御のフローチャートである。図19において、パーソナルコンピュータ100のステップS1〜S7及びハードディスクドライブ16のステップS101の処理は図8のタイムチャートと同じであるが、ステップS7で任意プログラムを実行して最後に図18のコマンドA発行コード114を実行し、ステップS8で任意プログラムがコマンドAを発行する。
【0091】
このコマンドAの発行に対しハードディスクドライブ16はステップS102でコマンドAの発行を判別し、LBA0の起動セクタのマスタブードレコードを読み出して応答することになる。尚、ステップS9以降の処理は図8と同じである。
【0092】
図20は図19の制御処理に応じたハードディスクドライブの制御処理のフローチャートである。図20において、ステップS1でLBA0の起動セクタの読出し要求を判別すると、ステップS2で仮起動セクタから任意プログラムを読み出して応答する処理を繰り返している。
【0093】
このときステップS3でコマンドAの発行を判別するとステップS4に進み、LBA0の起動セクタからマスタブードレコードを読み出して応答することになる。ステップS5〜S10の処理は図9のステップS5〜S10と同じである。
【0094】
図21は複数セクタに任意プログラムを格納している場合に2番目以降の仮起動セクタによる任意プログラムの読み出しについて専用のコマンドBを発行するようにした任意プログラムの説明図である。
【0095】
図21において、仮起動セクタ85のプログラム領域102に格納された任意プログラム90は最後にコマンドB発行コード116を格納している。コマンドB発行コード116は任意プログラム90をメモリに読み出して実行した際にハードディスクドライブに対しコマンドBを発行し、このコマンドBは次の仮起動セクタの読み出し応答を指示する専用のコマンドである。このコマンドBを図18に示したコマンドAと組み合わせることで複数の仮起動セクタに格納した任意プログラムの読み出しを確実に行うことができる。
【0096】
即ち複数の仮起動セクタに格納した複数の任意プログラムにつき、最後の1つを除く任意プログラムには図21のようにコマンドB発行コード116を格納し、最後の任意プログラムには図18のコマンドAの発行コード114を格納する。
【0097】
これによって複数の仮起動セクタの読み出して任意プログラムを実行する毎に、コマンドB発行コード116に基づきコマンドBが発行されて次の任意プログラムを格納した仮起動セクタの読み出し応答が行われ、最後の任意コマンドが実行されるとコマンドAが発行され、コマンドAの発行に基づき本来のLBA0の起動セクタのマスタブートレコードの読出し応答を行うことができる。
【0098】
図22はコマンドBにより次の任意プログラムを格納した仮起動セクタを読み出し、コマンドAにより本来のLBA0の起動セクタの読み出しに切り替える本発明による制御処理のタイムチャートである。
【0099】
図22において、パーソナルコンピュータ100におけるステップS1〜S7及びハードディスクドライブ16におけるステップS101の処理は図8のタイムチャートと同じである。しかしながら、ステップS101で読出し応答した最初り仮起動セクタの任意プログラムの最後には図21のようにコマンドB発行コード116が含まれている。このため、ステップS7でコマンドB発行コード116を最後に実行すると、ステップS8で任意プログラムがコマンドBを発行する。
【0100】
ハードディスクドライブ16はステップS102でコマンドBの発行を判別し、次の任意プログラムを格納した仮起動セクタを読み出して応答する。この任意プログラムには図18のようにコマンドA発行コード114が記述されていたとすると、ステップS9で読み出し内容をメモリに格納して実行した後、最後にコマンドAを実行することでステップS10においてコマンドAを発行する。
【0101】
ハードディスクドライブ16はステップS103でコマンドAの発行を判別して本来のLBA0のマスタブードレコードを格納した起動セクタを読み出して応答する。そしてステップS7でメモリに格納されたマスタブートレコード、即ちブードストラップローダの先頭に制御を移し、ステップS12でブードストラップローダを実行し、以後、図8のステップS12,S13に示したようにOSの起動が行われる。
【0102】
図23は図22の制御処理に対応したハードディスクドライブのドライブ処理のフローチャートである。図23において、ドライブ処理はステップS1でLBA0の起動セクタの読出し要求を判別すると、ステップS2で任意プログラムを格納した仮起動セクタを読み出して応答する。続いてステップS3でコマンドBの発行の有無をチェックしており、コマンドBの発行を判別するとステップS4で次の任意のプログラムを格納した仮起動セクタを読み出して応答する。
【0103】
ステップS3でコマンドBの発行がない場合にはステップS5でコマンドAの判別をしており、もしコマンドAの発行を判別するとステップS6に進み、本来のLBA0のマスタブードレコードを格納している起動セクタを読み出して応答し、OSを起動させることになる。尚、ステップS7〜S12は図9のステップS5〜S10と同じである。
【0104】
図24はコマンドBのみにより次の任意プログラムを格納した仮起動セクタを読み出し、任意プログラムを格納した仮起動セクタが読み出し終了となると、本来のLBA0の起動セクタの読み出しに切り替える本発明の制御処理のフローチャートである。
【0105】
図24において、パーソナルコンピュータ100のステップS1〜S10及びハードディスクドライブ16のステップS101,102は図22と同じである。すなわちステップS7で任意プログラムを実行すると最後のコマンドB発行コード116に基づいてステップS8で任意プログラムがコマンドBを発行し、ハードディスクドライブ16がステップS102で次の任意プログラムを格納した仮起動セクタを読み出して応答する。
【0106】
これを受けてパーソナルコンピュータ100はステップS9で読み出し内容をメモリに格納して任意プログラムを実行し、最後のコマンドB発行コード116に基づきステップS10で任意プログラムからコマンドBを発行する。ハードディスクドライブ16はステップS103でコマンドBの発行を判別するが、次の任意プログラムを格納した仮起動セクタが存在しなかったとすると、これを判別し、本来のLBA0のマスタブートレコードを格納した起動セクタを読出して応答する。
【0107】
このような処理により、コマンドBのみで任意プログラムを格納した仮起動セクタの読出しとLBA0のマスタブートレコードを格納した本来の起動セクタの読み出しを切り替えることができる。尚、ステップS11以降の任意プログラムによるOSの起動は図8のステップS12,S13の処理と同じになる。
【0108】
図25は図23の制御処理に対応したハードディスクドライブのドライブ処理のフローチャートである。図25において、LBA0の起動セクタの読出し要求を判別すると、ステップS2で任意のプログラムを格納した仮起動セクタを読み出して応答する。続いてステップS3でコマンドBの発行をチェックしており、コマンドBの発行を判別するとステップS4に進み、次の仮起動セクタが存在するか否かチェックする。
【0109】
次の仮起動セクタが存在すればステップS5に進み、そこから次の任意プログラムを格納した仮起動セクタを読み出して応答する。ステップS4で次の仮起動セクタが存在しないことが判別されるとステップS6に進み、本来のLBA0のマスタブートレコードを格納した起動セクタを読み出して応答する。ステップS7〜S12は図9のステップS5〜S10と同じである。
【0110】
また本発明のディスク記憶媒体あるいは不揮発性メモリに格納した仮起動セクタに書込こまれた任意プログラムについては、容易に書き換えられないようにすることが望ましい。これを実現するためにはハードディスクドライブ16において、仮起動セクタに対する通常の書き込み要求についてはこれを失敗させるように処理する。この場合、仮起動セクタに書き込むための専用のコマンドを準備しておき、この専用のコマンドを通知した書き込みのみを許可するようにし、仮起動セクタに格納した任意プログラムが容易に書き換えることができないようにすることができる。
【0111】
更に本発明は、ハードディクスドライブ16のプロセッサ62で実行されるプログラムを提供するものであり、図9、図20、図23又は図25のフローチャートの内容となる。
【0112】
尚、上記の実施形態は起動ドライブとしてハードディスクドライブ16を例にとるものであったが、これ以外に図2のパーソナルコンピュータ100に設けている入出力デバイスであるフロッピィ(R)ディスクドライブ20、MOディスクドライブ24、CD−ROMドライブ28もしくはUSBドライブ32のいずれかを起動ドライブとして指定してもよい。
【0113】
例えば起動ディスクとしてフロッピィ(R)ディスクドライブ20を指定した場合には、フロッピィ(R)ディスクのLBA0の起動セクタをブートセクタとしているが相違し、それ以外の仮起動セクタの配置によるOS起動前の任意プログラムの実行についてはハードディスクドライブの場合と同じである。
【0114】
またMOディスクドライブ24、CD−ROMドライブ28、USBドライブ32のいずれかを起動ドライブとして指定した場合には、ハードディスクドライブと同じ起動プログラムの配置もしくはフロッピィ(R)ディスクドライブと同じ起動プログラムの配置のいずれかを採用することができ、この場合についてもOS起動前の任意プログラムの実行をハードディスクドライブの場合と同様にして実現することができる。
【0115】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、さらに上記の実施形態に示した数値による限定は受けない。
【0116】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
【0117】
(付記1)
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を備えたことを特徴とする起動プログラム実行方法。(1)
【0118】
(付記2)
付記1記載の起動プログラム実行方法に於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とする起動プログラム実行方法。(2)
【0119】
(付記3)
付記1記載の起動プログラム実行方法に於いて、前記任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とする起動プログラム実行方法。
【0120】
(付記4)
付記1記載の起動プログラム実行方法に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする起動プログラム実行方法。
【0121】
(付記5)
付記1記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、前記デバイスの単一領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、前記仮起動セクタの配置数を管理し、上位装置からの複数回の読出し要求に対し前記配置数分の仮起動セクタを順次読出し応答して前記任意プログラムを実行させることを特徴とする起動プログラム実行方法。
【0122】
(付記6)
付記1記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、前記デバイスの異なる領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、前記仮起動セクタの順番を管理し、電源投入後の前記上位装置からの複数回の読出し要求に対し前記複数の仮起動セクタを管理された順番に従って読出し応答して前記任意プログラムを実行させることを特徴とする起動プログラム実行方法。
【0123】
(付記7)
付記6記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、更に、前記デバイスの異なる領域毎に複数の仮起動セクタを配置して配置数を管理し、前記上位装置からの複数回の読出し要求に対し異なる配置領域毎に配置数分の仮起動セクタを順次読出し応答して前記任意プログラムを実行させるることを特徴とする起動プログラム実行方法。
【0124】
(付記8)
付記5乃至7のいずれかに記載の起動プログラム実行方法に於いて、前記複数の仮起動セクタに格納された任意プログラムは、1つの任意プログラムの分割プログラム、または複数種類の任意プログラムであることを特徴とする起動プログラム実行方法。
【0125】
(付記9)
付記1記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
前記任意プログラムは実行終了時に前記起動セクタの読出しを要求するコマンドを発行し、
前記起動ステップは、前記起動前処理ステップによる読出し応答後に上位装置から前記コマンドを受信した際に、前記起動セクタを読出し応答して前記起動プログラムを実行させることを特徴とする起動プログラム実行方法。
【0126】
(付記10)
付記1記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
前記任意プログラムは実行終了時に次の仮起動セクタの読出しを要求するコマンドを発行し、
前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、前記上位装置から前記コマンドを受信した際に次の仮起動セクタを読出し応答し、
前記起動ステップは、前記コマンドを受信した際に次の仮起動セクタが存在しないことを判別して前記起動セクタを読出し応答することを特徴とする起動プログラム実行方法。
【0127】
(付記11)
付記1記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
最後を除く複数の任意プログラムは実行終了時に次の任意プログラムの読出しを要求する第1コマンドを発行し、最後の任意プログラムは実行終了時に前記起動セクタの読出しを要求する第2コマンドを発行し、
前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、前記上位装置から前記第1コマンドを受信した際に次の仮起動セクタを読出し応答し、
前記起動ステップは、前記起動前処理ステップによる読出し応答に対し上位装置から前記第2コマンドを受信した際に前記起動セクタを読出し応答することを特徴とする起動プログラム実行方法。
【0128】
(付記12)
付記1記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し前記任意のプログラムを格納した仮起動セクタを読出し応答する際に、前記起動セクタからパーティションテーブルをコピーして応答することを特徴とする起動プログラム実行方法。
【0129】
(付記13)
付記1記載の起動プログラム実行方法に於いて、前記ドライブは、ディスクドライブ、メモリドライブを含むことを特徴とする起動プログラム実行方法。
【0130】
(付記14)
上位装置からの指示により記憶媒体にアクセスするデバイスに於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動部と、
を備えたことを特徴とするデバイス。(3)
【0131】
(付記15)
付記1記載のデバイスに於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とするデバイス。
【0132】
(付記16)
付記1記載のデバイスに於いて、前記任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とするデバイス。
【0133】
(付記17)
上位装置の指示を受けてデバイスによりアクセスされる記憶媒体に於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする記憶媒体。(4)
【0134】
(付記18)
付記17記載の記憶媒体に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする記憶媒体。
【0135】
(付記19)
上位装置の指示を受け記憶媒体にアクセスするデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を実行させることを特徴とするプログラム。(5)
【0136】
(付記20)
付記19記載のプログラムに於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とするプログラム。
【図面の簡単な説明】
【0137】
【図1】本発明の原理説明図
【図2】本発明の起動プログラム実行処理が適用されるパーソナルコンピュータのブロック図
【図3】図2のハードディスクドライブのブロック図
【図4】OS起動前に実行する任意プログラムを格納した仮起動ディスクのディスクレイアウトの説明図
【図5】図2の任意プログラムを記録する仮起動セクタの内容を起動セクタと対比して示した説明図
【図6】OS起動前に実行する任意プログラムを格納した仮起動セクタの他のディスクレイアウトの説明図
【図7】OS起動前に実行する任意プログラムを格納した仮起動セクタを不揮発性メモリに配置したハードディスクドライブの説明図
【図8】OS起動前に任意のプログラムを実行する本発明による制御処理のタイムチャート
【図9】図8の制御処理に対応したドライブ処理のフローチャート
【図10】OS起動前に実行されるパスワード認証処理のフローチャート
【図11】OS起動前に実行される暗号鍵生成処理のフローチャート
【図12】OS起動前に実行される生体認証処理のフローチャート
【図13】ドライブに格納先管理テーブルを設けたディスクレイアウトの説明図
【図14】ドライブに格納先管理テーブルを設けた他のディスクレイアウトの説明図
【図15】ドライブに格納先管理テーブルを設けた他のディスクレイアウトの説明図
【図16】ドライブに格納先管理テーブルと順序管理テーブルを設けたディスクレイアウトの説明図
【図17】ドライブに格納先と順序を示す順序管理テーブルを設けたディスクレイアウトの説明図
【図18】コマンドA発行コードを備えた任意プログラムの説明図
【図19】コマンドAにより仮起動セクタの読出しからLBA0の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図20】図19の制御処理に対応したドライブ処理のフローチャート
【図21】コマンドB発行コードを備えた任意プログラムの説明図
【図22】コマンドBにより次の仮起動セクタを読出し、コマンドAによりLBA0の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図23】図22の制御処理に対応したドライブ処理のフローチャート
【図24】コマンドBのみにより次の仮起動セクタを読出し、LBA0の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図25】図23の制御処理に対応したドライブ処理のフローチャート
【図26】従来のマイクロコンピュータの説明図
【図27】ブートプロセスを実行する従来のハードディスクドライブのディスクレイアウトの説明図
【図28】ブートプロセスを実行する従来のフロッピィ(R)ドライブのディスクレイアウトの説明図
【図29】従来のブート処理のフローチャート
【符号の説明】
【0138】
10:CPU
11:バス
12:BIOS
14:RAM
16:ハードディスクドライブ
18:ディスク記憶媒体
20:フロッピィ(R)ディスクドライブ
22:フロッピィ(R)ディスク
24:MOディスクドライブ
26:MOカートリッジ記憶媒体
28:CD−ROMドライブ
30:CD−ROM記憶媒体
32:USBドライブ
34:USBメモリ
36:マウスコントローラ
38:マウス
40:キーボードコントローラ
42:キーボード
44:ディスプレイコントローラ
46:ディスプレイ
48:通信ボード
50:起動プログラム
52:任意プログラム
54:起動前応答部
56:起動応答部
58:回路ボード
60:ディスクエンクロージャ
62:MPU
64:インタフェース
66:ハードディスクコントローラ(HDC)
68:リードチャネル(RDC)
70:サーボ制御部
72:バッファメモリ
74:不揮発性メモリ
75:管理テーブル
76:リード/ライトアンプ
78:ヘッドアッセンブリィ
80:ボイスコイルモータ
82:スピンドルモータ
83:マスタブートレコード
84:起動セクタ
85,85−1,85−2:仮起動セクタ
86:ブートセクタ
88:OS非アクセスセクタ
90,90−1〜90−7:任意プログラム
92:LBA0読出コード
94:システム領域
95,95−1〜95−4:格納先管理テーブル
96,98:順序管理テーブル
100:パーソナルコンピュータ
102:プログラム領域
104:パーティション領域
106:ブートストラップローダ
108−1〜108−4:パーティションテーブル
110:ブートシグニチャ
112:LBA0読出コード
114:コマンドA発行コード
116:コマンドB発行コード
【技術分野】
【0001】
本発明は、ブートプロセスによりOSを起動する起動プログラム実行方法、デバイス、記憶媒体及びプログラムに関し、特に、OSの起動前に任意のプログラムを実行する起動プログラム実行方法、デバイス、記憶媒体及びプログラムに関する。
【背景技術】
【0002】
従来、PC/AT互換機のパーソナルコンピュータにあっては、図26に示すように、パーソナルコンピュータ200にハードディクスドライブ202を内蔵すると共に、外部に必要に応じてフロッピィ(R)ディスクドライブ204、光磁気ディスクドライブ206、CD−ROMドライブ208、USBメモリ210等を接続してる。
【0003】
図27は従来のハードディクスドライブのディスクレイアウトであり、ディスクの先頭論理ブロックアドレスLBA0となる先頭セクタにマスタブートレコード(MBR)212が存在し、ここにブートストラップローダ、パーティションテーブル及びブートシグニチャを格納している。また特定のパーティションの先頭セクタとなるブートセクタ214にはブートプログラムが格納されている。
【0004】
図28は起動用のフロッピィ(R)ディスクのディスクレイアウトであり、ブートストラップローダは存在せず、ブートセクタ216にブートプログラムが存在する。MO、CD−ROM、USBメモリなどは、図27又は図28のどちらかの形式で記録されている。
【0005】
図29は図27のディスクレイアウトを対象としたブートプロセスのフローチャートである。図29において、ステップS1で電源を投入すると、ステップS2でプロセッサの自己診断を行った後、ステップS3でBIOS(Basic Input Output System)が起動し、ステップS4でBIOSはディスクのLBA0の先頭セクタに記録されている内容を、セクタ長分、一般的には512バイト読み込み、ステップS5でパーソナルコンピュータの主記憶として機能するメモリに格納する。
【0006】
次に、ステップS6でBIOSは格納されたデータの先頭位置に制御を移す。制御を移すと、その位置に格納されたプログラムが実行される。ハードディスクドライブの場合は、LBA0の先頭からブートストラップローダが記録されているため、ブートストラップローダが動作してブートセクタがロードされ、ブートプログラムが実行される。ブートプログラムはディスクに格納されているOSをメモリにロードして実行し、OSが起動する。
【0007】
尚、フロッピィ(R)ディスクの場合はLBA0の先頭からブートプログラムが記録されているため、最初からブートプログラムが実行される。
【0008】
ところで近年にあっては、パーソナルコンピュータのセキュリティを高めるため、OSを起動した後にアプリケーションによって記憶媒体アクセスに対しパスワード認証を要求するようにしている。しかし、アプリケーションレベルで対策するよりは、コンピュータの電源を投入してOSが起動する前にパスワード認証処理等が実行できれば、極めて高いセキュリティを確保することができる。
【特許文献1】特開2000−215065号公報
【特許文献2】特開2003−150455号公報
【特許文献3】特開昭63−175955号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、従来のブートプロセスにあっては、電源投入時にBIOSがディスクドライブの先頭セクタ(LBA0)を読み出してメモリに格納し、格納した内容に先頭位置に制御を移してブートストラップローダを動作するようにしているため、起動時に任意のプログラムを実行したい場合は、BIOSを変更するか、ブートストラップローダを変更するかのどちらかを行わなければならない。尚、フロッピィ(R)ディスクの場合はブートストラップローダは存在しないのでブートプログラムを変更する必要がある。
【0010】
しかし、BIOSの変更はBIOSメーカーに依頼する必要があり、コストの問題がある。また、先頭セクタ(LBA0)の内容変更はOSの起動に影響を与えるためリスクが高いという問題がある。
【0011】
本発明は、上位装置のBOISや記憶媒体の起動セクタ(LBA0)を変更することなく、OS起動に先立ってセキュリティ等の任意のプログラムを実行可能とする起動プログラム実行方法、デバイス、記憶媒体及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
図1は本発明の原理説明図である。
【0013】
本発明は起動プログラム実行方法を提供する。本発明の起動プログラム実行方法は、
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタ84aに代えて任意プログラム90を格納した仮起動セクタ85ちを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりOSを起動させる起動ステップと、
を備えたことを特徴とする。
【0014】
ここで、任意プログラムは、実行終了時に起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納する。任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置される。
【0015】
起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムである。
【0016】
起動前処理ステップは、デバイスの単一領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、仮起動セクタの配置数を管理し、上位装置からの複数回の読出し要求に対し配置数分の仮起動セクタを順次読出し応答して任意プログラムを実行させる。
【0017】
起動前処理ステップは、デバイスの異なる領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、仮起動セクタの順番を管理し、電源投入後の上位装置からの複数回の読出し要求に対し複数の仮起動セクタを管理された順番に従って読出し応答して任意プログラムを実行させる。
【0018】
起動前処理ステップは、更に、デバイスの異なる領域毎に複数の仮起動セクタを配置して配置数を管理し、上位装置からの複数回の読出し要求に対し異なる配置領域毎に配置数分の仮起動セクタを順次読出し応答して任意プログラムを実行させる。
【0019】
複数の仮起動セクタに格納された任意プログラムは、1つの任意プログラムの分割プログラム、または複数種類の任意プログラムである。
【0020】
複数の仮起動セクタに分けて任意プログラムを格納した場合、任意プログラムは実行終了時に起動セクタの読出しを要求するコマンドAを発行し、起動ステップは、起動前処理ステップによる読出し応答後に上位装置からコマンドAを受信した際に、前記起動セクタを読出し応答して前記起動プログラムを実行させる。
【0021】
複数の仮起動セクタに分けて任意プログラムを格納した場合、任意プログラムは実行終了時に次の仮起動セクタの読出しを要求するコマンドBを発行し、
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、上位装置からコマンドBを受信した際に次の仮起動セクタを読出し応答し、
起動ステップは、コマンドBを受信した際に次の仮起動セクタが存在しないことを判別して前記起動セクタを読出し応答する。
【0022】
複数の仮起動セクタに分けて任意プログラムを格納した場合、最後を除く複数の任意プログラムは実行終了時に次の任意プログラムの読出しを要求する第1コマンドBを発行し、最後の任意プログラムは実行終了時に起動セクタの読出しを要求する第2コマンドAを発行し、
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、上位装置から第1コマンドBを受信した際に次の仮起動セクタを読出し応答し、
起動ステップは、起動前処理ステップによる読出し応答に対し上位装置から第2コマンドAを受信した際に前記起動セクタを読出し応答する。
【0023】
起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し任意のプログラムを格納した仮起動セクタを読出し応答する際に、起動セクタからパーティションテーブルをコピーして応答する。ドライブは、ディスクドライブ、メモリドライブを含む。
【0024】
本発明は、上位装置からの指示により記憶媒体にアクセスするデバイスを提供する。本発明のデバイスは、上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりOSを起動させる起動部とを備えたことを特徴とする。
【0025】
本発明は上位装置の指示を受けてデバイスによりアクセスされる記憶媒体を提供する。本発明の記憶媒体は、上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする。
【0026】
本発明は、上位装置の指示を受けて記憶媒体にアクセスするデバイスのコンピュータにより実行されるプログラムを提供する。本発明のプログラムは、上位装置に接続されたデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
任意のプログラムの実行に基づく上位装置からの次の読込み要求に対し起動セクタを読出し応答して起動プログラムの実行によりOSを起動させる起動ステップと、
を実行させることを特徴とする。
【発明の効果】
【0027】
本発明によれば、上位装置のBIOSや記憶媒体の起動セクタ、例えば先頭セクタ(LBA0)の内容を変更することなく、上位装置の電源投入後のブートプロセスにより任意プログラムを格納した仮起動セクタを読出し応答して任意プログラムを実行させることにより、OSを起動する前に任意のプログラムを実行することができる。
【0028】
つまり、上位装置のブートプロセスによりOSを起動する前に、上位装置のBIOSや記憶媒体の起動セクタの内容を変更することなく、起動ドライブ自身で単独に任意のプログラムを読出し、任意のプログラムを上位装置に実行させることができる。
【0029】
また仮起動セクタを複数配置することで、セクタサイズを越える任意プログラムを分割して格納することができ、任意のプログラムのサイズを自由にきめることができるし、複数種類の任意のプログラムを格納してOS起動前に実行することもできる。
【発明を実施するための最良の形態】
【0030】
図2は本発明の起動プログラム実行処理が適用されるパーソナルコンピュータのブロック図である。図2において、CPU10のバス11に対しては、電源投入時にOSを起動するためのBIOS12が設けられ、また主記憶として機能するRAM14が設けられている。
【0031】
CPU10に対する入出力デバイスとしてハードディスクドライブ16が設けられ、ハードディスクドライブ16はディスク記憶媒体18を備えている。この例では、起動ドライブとしてハードディスクドライブ16を使用する場合を例にとっている。
【0032】
またバス11に対しては、フロッピィ(R)ディスクドライブ20、MOディスクドライブ24、CD−ROMドライブ28、USBドライブ32が設けられ、それぞれ記憶媒体としてフロッピィ(R)ディスク22、MOカートリッジ記憶媒体26、CD−ROM記憶媒体30及びUSBメモリ34を使用する。
【0033】
更にバス11に対しては、マウスコントローラ36を介してマウス38が接続され、キーボードコントローラ40を介してキーボード42が接続され、ディスプレイコントローラ44を介してディスプレイ46が接続され、更に通信ボート48を介してLANなどのネットワーク接続が行われる。
【0034】
起動ディスクとして動作するハードディスクドライブのディスク記憶媒体18には、OSを起動するための起動プログラム50と、OSの起動前に実行される任意プログラム52が格納されている。
【0035】
任意プログラム52としては、後の説明で明らかにするように、セキュリティ用の各種のプログラムやウィルスチェックプログラムなど、コンピュータのOS起動前の段階で実行を必要とする任意のプログラムが格納できる。
【0036】
ハードディスクドライブ16には起動前応答部54と起動応答部56の機能が設けられている。起動前応答部54は、パーソナルコンピュータ100の電源投入後のBIOS12による最初の読込み要求に対し、ディスク記憶媒体18に格納された先頭論理ブロックアドレスLBA0で指定される起動プログラム50を格納した起動セクタに代えて、任意のプログラムが格納された仮起動セクタを読出し応答してRAM14に格納し、その内容に制御を移して任意プログラムをCPU10により実行させる。
【0037】
起動応答部56は、CPU10による任意プログラムの実行に基づく次の起動セクタの読込み要求に対し、ディスク記憶媒体18の起動プログラム50が格納されたLBA0の起動セクタを読出し応答してRAM14に格納し、その先頭に制御を移すことで起動プログラム50を実行して、ディスク記憶媒体18よりOSをロードして、OSを起動させる。
【0038】
ここで起動プログラム50を格納した起動セクタとしてLBA0の先頭セクタを例にとっているが、BIOSによっては先頭セクタ以外の例えばLBA1を起動セクタとする場合もあり、起動セクタは必ずしもLBA0の先頭セクタには限定されない。
【0039】
図3は図2で起動ドライブとして使用されるハードディスクドライブのブロック図である。図3において、ハードディスクドライブ16は、回路ボード58とディスクエンクロージャ60で構成される。回路ボード58にはMPU62、インターフェース64、ハードディスクコントローラ66、リードチャネル68、サーボ制御部70、バッファメモリ72及び不揮発メモリ74が設けられる。ディスクエンクロージャ60には、リード/ライトアンプ76、ヘッドアッセンブリィ78、ボイスコイルモータ80及びスピンドルモータ82が設けられる。
【0040】
スピンドルモータ82の回転軸には図示しないディスク記憶媒体が装着され、一定速度で回転される。ヘッドアッセンブリィ78はヘッドアクチュエータのアーム先端に支持されており、ヘッドアクチュエータをボイスコイルモータ80により駆動することで、ヘッドアッセンブリィ78のリードヘッドとライトヘッドを備えた複合ヘッドを磁気ディスク記憶媒体の記憶媒体面に対し位置決めを行う。
【0041】
MPU62には、OS起動前に任意のプログラムを実行するため、起動前応答部54、起動応答部56、更に起動前応答部54で複数の任意プログラムを実行させる際に必要な情報を管理する管理テーブル75を設けている。
【0042】
図4はOS起動前に実行する任意プログラムを格納したディスクレイアウトの説明図である。図4において、ハードディスクドライブ16のディスク記憶媒体18の論理ブロックアドレスLBA0で指定される起動セクタ84には起動プログラムとしてマスタブートレコード83が記録され、また任意のパーティションの起動セクタにブートセクタ86を記録している。
【0043】
このようなマスタブートレコード84とブートセクタ86から構成される起動プログラムに対し本発明にあっては、OSがアクセスできないOS非アクセスセクタ88を論理ブロックアドレスLBAxxxxの仮起動セクタ85とし、仮起動セクタ85にOS起動前に実行される任意プログラム90を格納している。
【0044】
図5は図4の任意プログラムを記録する仮起動セクタの内容を、起動プログラムを格納した起動セクタと対比して示した説明図である。
【0045】
図5(A)は起動プログラムが格納された起動セクタ84であり、パーソナルコンピュータ100を起動した際のBIOS12の読出しを受けてRAM14にロードされる。この起動セクタ84は446バイトのプログラム領域102と64バイトのパーティション領域104に分けられており、プログラム領域102にはブートストラップローダ106が格納され、パーティション領域104は4つの領域に分けられてパーティションテーブル108−1〜108−4を格納している。最後の4バイトの領域にはブートシグニチャ110が格納される。この起動セクタ84のサイズは、PC−AT互換機の場合は512バイトのサイズである。
【0046】
起動セクタ84を使用したOSの起動は、BIOS12によって、起動ドライブであるハードディスクドライブ16のLBA0の起動セクタ84の読出しでマスタブートレコード83がRAM14にロードされる。RAM14にマスタブートレコード83がロードされると、図5(A)のブートストラップローダ106に制御を移す。ブートストラップローダ106は例えば次の手順でな起動プログラムを実行する。
【0047】
(1)パーティションテーブル108−1〜108−4を検査し、起動フラグの立ったパーティション領域がないかを探す。
(2)起動フラグの立ったパーティション領域が見つかると、そのパーティション領域の起動セクタのアドレスをテーブルから取得する。
(3)BIOS12にパーティション先頭アドレスを示し、パーティション起動セクタ即ちブートセクタ86をロードさせる。
(4)ロードしたパーティション起動セクタ、即ちブートセクタに制御を移す。
【0048】
起動セクタ84の最後のブートシグニチャ110はマジックナンバーと呼ばれる「0xAA55」という値が入っており、このマジックナンバーが入っていることで、マスタブートレコード84が有効なものとして起動処理が行われる。
【0049】
図5(B)は、本発明においてOS起動前に実行される任意プログラム90を格納した仮起動セクタ85の内容である。仮起動セクタ85は起動プログラムを格納した起動セクタ84と同じ514バイトのサイズであり、セクタ内のフォーマット構造も起動セクタ84と同じであり、446バイトのプログラム領域102と64バイトのパーティション領域104、更に最後の4バイトを使用して、ブートシグニチャ110を記録している。
【0050】
このような仮起動セクタ84につき、446バイトのプログラム領域102にOS起動前に実行させる任意プログラム90を格納している。プログラム領域102に格納した任意プログラム90は、プログラムの最後にLBA0読出コード112を格納している。このため任意プログラム90が実行されると、最後にLBA0読出コード112が実行され、これによって、ハードディスクドライブ16に対しLBA0を指定した起動セクタの読出し要求が行われることになる。
【0051】
パーティション領域104については、電源投入後のBIOS12からの最初の読出し要求がブートストラップローダ106の実行のためではなく、パーティション領域104の読出し要求であった場合には、パーティション領域104に起動セクタ84におけるパーティション領域104のパーティションテーブル108−1〜108−4のコピーを行って、仮起動セクタ85を返すようにしている。
【0052】
もちろん、BIOS12からの最初の読出し要求がブートストラップローダ106の実行である場合には、パーティションテーブル108−1〜108−4をコピーして返す必要なく、この場合にはパーティション領域104についても任意プログラム90を格納するプログラム領域102として使用することが可能である。
【0053】
このように本発明にあっては、ハードディスクドライブ16において通常アクセスできない特殊領域、例えばOSがアクセスできないOS非アクセス領域88に、図4のようにLBA0で指定される起動セクタ84と同じ514バイトのセクタ長を持つ仮起動セクタ85を設け、ここに図5(B)に示したように任意プログラム90を格納しておくことで、電源投入後のBIOS12による起動ディスクの起動セクタに対する最初の読出し要求に対し、起動セクタ84に代えて、例えばOS非アクセス領域88に準備された仮起動セクタ85を読出し応答してRAM14にロードして、その内容である任意プログラム90の先頭に制御を移すことで、OSの起動プログラムであるブートストラップローダ106の実行前に任意プログラム90を実行することができる。
【0054】
任意プログラム90が実行されると、図5(B)に示したように、任意プログラム90の最後にはLBA0読出コード112が格納されているため、このLBA0読出コード112の実行でハードディスクドライブ16に対し2回目のLBA0の起動セクタ84に対する読出し要求が行われる。
【0055】
2回目の読出し要求に対しては実際の起動セクタ84がRAM14にロードされ、読み込んだ内容の先頭、即ち図5(A)に示す起動セクタ84のブートストラップローダ106に制御を移すことで起動処理を実行し、起動フラグの立っているパーティションのパーティション起動セクタからブートセクタ86をロードし、ブートセクタ86の内容に格納されている初期プログラムロードのプログラムコードの実行でファイルシステムをハードディスクドライブから次々とロードし、OSを起動することになる。
【0056】
図6はOS起動前に実行する任意プログラムを格納した仮起動セクタの他のディスクレイアウトの説明図である。図6にあっては、ハードディスクドライブ16におけるディスク記憶媒体18の通常はアクセスできないセクタ、即ちドライブのみがアクセス可能なシステム領域94に仮起動セクタ85を配置して、任意プログラム90を格納している。
【0057】
図7はOS起動前に実行する任意プログラムの仮起動セクタを不揮発メモリに格納したハードディスクドライブの説明図である。図7において、ハードディスクドライブ16には不揮発メモリ74が設けられていることから、この実施形態にあっては仮起動セクタ85を不揮発メモリ74の領域に配置して、そこに任意プログラム90を格納するようにしている。図6及び図7のいずれの任意プログラム90についても、その格納領域となる仮起動セクタ85の構成は図5(B)に示したと同じになる。
【0058】
図8はOS起動前に任意のプログラムを実行する本発明による制御処理のタイムチャートであり、上位装置として機能するパーソナルコンピュータ100と、起動ドライブであるハードディスクドライブ16との処理を示している。図8において、パーソナルコンピュータ100の電源をステップS1で投入すると、ステップS2でプロセッサの自己診断を行った後、ステップS3でBIOS12が起動する。
【0059】
起動したBIOS12は、まず起動ドライブを検索する。これはBIOS12のブートシーケンスの設定に依存しており、通常、ディフォルトでは「A then C」となっており、フロッピィ(R)が最初で次にハードディスクとなっており、この場合、フロッピィ(R)は挿入されていないことから、ハードディスクが起動ドライブとして検索される。
【0060】
起動ドライブが決定すると、ステップS4でハードディスクドライブ16のLBA0を指定した起動セクタの読出し要求が行われる。この読出し要求を受けてハードディスクドライブ16は、ステップS101で電源投入後の最初の起動セクタ読出しを判別し、この場合には、例えば図4に示したように、OS非アクセスセクタ88の任意プログラム90を格納した仮起動セクタ85を読み出して応答する。
【0061】
パーソナルコンピュータ100は、ステップS5で読出し内容をRAMで構成されるメモリに格納した後、ステップS6でメモリに格納された内容の先頭、即ち任意プログラム90の先頭に制御を移す。そしてステップS7で任意プログラム90を実行する。任意プログラム90の実行が済むと、図5(B)のように、任意プログラム90の最後に設けられたLBA0読出コード112の実行により、ステップS8で任意プログラムがLBA0の起動セクタ84の読出し要求を発行する。
【0062】
これを受けてハードディスクドライブ16は、ステップS102で電源投入後の2回目のLBA読出し、即ち起動セクタ読出しを判別し、起動セクタ84を読み出して応答する。
【0063】
パーソナルコンピュータ100は、ステップS9でLBA0の起動セクタ84の読出し内容であるマスタブートレコード84をメモリに格納した後、ステップS10でメモリに格納された内容の先頭、即ち図5(A)に示すブートストラップローダ106の先頭に制御を移す。
【0064】
これによって、ステップS11でブートストラップローダ106が実行され、起動フラグの立ったパーティション起動セクタの読出しをハードディスクドライブ16に要求し、ハードディスクドライブ16はステップS103で起動フラグの立ったパーティション起動セクタからブートセクタ86を読み出して応答する。
【0065】
パーソナルコンピュータ100は、ステップS12で読出し内容をメモリに格納してブートプログラムを実行し、これによりファイルシステムが次々とロードされ、ステップS13でOSが起動する。
【0066】
図9は図8の制御処理に対応したハードディスクドライブ16のドライブ処理のフローチャートである。図9において、ハードディスクドライブ16は、ステップS1でLBA0の指定による起動セクタの読出し要求をチェックしており、起動セクタの読出し要求があると、ステップS2で電源投入後またはバスリセット後の最初の要求か否かチェックし、最初の要求であれば、ステップS3で任意プログラムを格納した仮起動セクタを読み出して応答する。
【0067】
2回目の起動セクタの読出し要求があった場合には、ステップS2で2回目以降であることが判別されてステップS4に進み、マスタブートレコードである起動セクタを読み出して応答する。この状態で、ステップS5でブートセクタ読出し要求を判別すると、ステップS6でブートセクタを読み出して応答する。
【0068】
続いてステップS7でOS読出し要求、即ちファイル読出し要求があれば、ステップS8で要求のあったOS領域を読み出して応答し、これによってOSが起動される。起動後は、ステップS9でOS配下の入出力処理を行う。即ち、ライトコマンドによりディスク記憶媒体に対するデータの書込み、リードコマンドによるディスク記憶媒体からのデータの読出し応答を行う。このような処理を、ステップS10で停止指示があるまで繰り返す。
【0069】
図10は本発明のOS起動前に実行される任意プログラムとして暗号生成処理プログラムを実行した場合のフローチャートである。図10において、パスワード認証処理は、ステップS1でパスワード認証画面を表示し、この状態で、ステップS2でキーボード入力をパスワードとして読み込み、ステップS3でハードディスクドライブのパスワード照合機能を呼び出し、登録済のパスワードと入力されたパスワードとを照合して、ステップS4でパスワードの一致の有無を判定し、パスワード一致であれば、ステップS5でパスワード認証処理を終了し、LBA0の起動セクタの読出し要求を行ってOS起動後の処理に移行する。
【0070】
一方、ステップS4でパスワードが不一致であった場合には、ステップS6でエラーメッセージを表示して処理を終了し、この場合にはLBA0の起動セクタの読出し要求は行われないことから、OSは起動することなく、パーソナルコンピュータ自体をロックすることができる。
【0071】
図11はOS起動前に実行される暗号鍵生成処理プログラムのフローチャートである。図11において、暗号鍵生成処理は、ステップS1でパスワード入力画面を表示し、ステップS2でキーボード入力をパスワードとして読み込み、ステップS3でパスワードをハードディスクドライブにセットして暗号鍵の生成を指示する。
【0072】
ステップS4で暗号鍵生成完了通知があれば、ステップS5でLBA0で指定される起動セクタの読出し要求を行った後、OS起動後の処理に移行する。ステップS4で暗号鍵生成完了通知がなかった場合には、ステップS6でエラーメッセージを表示し、この場合にはOSが起動しないことから、コンピュータそのものがロックされることになる。
【0073】
なお暗号鍵生成処理にあっては、ステップS4、ステップS6の処理は行わず、単にハードディスクドライブにパスワードをセットして暗号鍵を生成させるだけでもよい。この場合、パスワードが誤っていた場合には正しい暗号鍵が生成されないため、誤った暗号鍵ではハードディスクドライブに対するデータの暗号復号化ができず、結果としてディスク内容に対するアクセスができないことで、ロックを掛けることができる。
【0074】
図12はOS起動前に実行される生体認証処理プログラムのフローチャートである。図12の生体認証処理にあっては、例えばパーソナルコンピュータに指紋読取デバイスや整脈読取デバイスなどが備えられている。このため、ステップS1で生体認証デバイスから情報を読み込んだ後、ステップS2で登録生体情報と読込情報とを照合し、ステップS3で生体情報が一致していれば、ステップS4でLBA0で指定される起動セクタの読出し要求を行ってOSを起動することになる。
【0075】
一方、ステップS3で生体情報が不一致であった場合には、ステップS5でハードディスクドライブをアクセス不可にセットした後、ステップS6でエラーメッセージを表示し、OSを起動せずにコンピュータをロックすることになる。
【0076】
図13はハードディスクドライブ側に任意プログラムの格納先管理テーブルを設けた場合のディスクレイアウトの説明図である。図4、図6、図7の仮起動セクタ85は、LBA0の起動セクタと同じ512バイトとなる1セクタのサイズであり、1セクタを超える任意プログラムについては複数の仮起動セクタを設けることで格納することができる。
【0077】
図13はディスク記憶媒体18のOS非アクセスセクタ88に2セクタの仮起動セクタ85−1,85−2を設け、それぞれ任意プログラム90−1,90−2を格納した場合である。このように複数の仮起動セクタ85−1,85−2に任意プログラム90−1,90−2を格納した場合には、ハードディスクドライブ16に格納先管理テーブル95を配置し、仮起動セクタ85−1の論理ブロックアドレスLBAxxxxとセクタ数=2を管理する。
【0078】
この場合、パーソナルコンピュータの電源投入で最初にLBA0の起動セクタ84の読出し要求を受けた際に格納先管理テーブル95を参照し、仮起動セクタのセクタ数が2セクタであることを認識し、最初の起動セクタ84の読み出し要求に対しては任意プログラム90−1を格納した1番目の仮起動セクタ85−1を読み出し応答し、2回目の起動セクタの読み出し要求に対しては任意プログラム90−2を格納した2番目の仮起動セクタ85−2を読み出し応答する。
【0079】
図14はディスク記憶媒体18のシステム領域94に2つの仮起動セクタ85−1,85−2を準備し、そこに任意プログラム90−1,90−2を格納した場合であり、この場合についても格納先管理テーブル95に通常アクセスできないセクタとしてシステム領域94とそのセクタ数=2を登録して管理する。
【0080】
図15は任意プログラムの仮起動セクタを不揮発性メモリ74に配置した場合である。この場合には不揮発性メモリ74に2セクタ分の仮起動セクタ85−1,85−2を配置して任意プログラム90−1,90−2を格納し、格納先管理テーブル95に格納先が不揮発性メモリ74であり、セクタ数=2を登録して管理する。
【0081】
図16はディスク記憶媒体18のOS非アクセスセクタ88、システム領域94さらに不揮発性メモリ74に仮起動セクタ85−1〜85−7を配置し、それぞれに任意プログラム90−1〜90−7を格納した場合である。この場合には順序管理テーブル96をハードディスクドライブ16に配置し、任意プログラムの格納先の順番を登録する。同時に格納先管理テーブル95を設け位置の異なる領域ごとに領域95−1〜95−3を設け、格納先毎の配置セクタ数を登録する。
【0082】
このような順序管理テーブル96と格納先管理テーブル95を組み合わせることで例えば3つの異なる領域について例えば仮起動セクタ85−1〜85−7を準備し、この例では7セクタ分の任意プログラムを格納し、OS起動前に順次読み出して実行することができる。
【0083】
図17はハードディスクドライブ16に格納先と順序を示す順序管理テーブルを設けたディスクレイアウトの説明図である。図17においてハードディスクドライブ16にあってはディスク記憶媒体18のOS非アクセスセクタ88に2セクタ、システム領域94に1セクタさらに不揮発メモリに3セクタ、任意プログラムを格納する仮起動セクタを準備し、任意プログラム90−1〜90−6を格納している。
【0084】
このような任意プログラム90−1〜90−6の格納状態につき、順序管理テーブル98が準備されている。順序管理テーブル98は格納順番領域98−1〜98−6を有し、それぞれ格納先と該当するセクタ数が登録されている。即ち、テーブル項目98−1にあっては不揮発性メモリ74の第1仮起動セクタの任意プログラム90−1が最初であることを示し、順序管理テーブル98−2にあっては通常アクセスできないセクタであるシステム領域94の第1仮起動セクタにある任意プログラム90−2が2番目であることを示し、以下任意プログラム90−3〜90−6につき登録が行われる。
【0085】
図13〜図17の複数の仮起動セクタに任意プログラムを格納してOS起動前に実行する場合には、LBA0の起動セクタの読出し要求を受けるごとに格納先管理テーブル95、順序管理テーブル96又は98を参照し、最後の任意プログラムの読み出し応答が終了するまで仮起動セクタの読み出し応答を繰り返し、次の読出しの済んでいない仮起動セクタがなくなった場合に、そのときの起動セクタの読出し要求に対し、本来のLBA0の起動セクタからマスタブードレコードを読出し応答することになる。
【0086】
ここで任意プログラムを複数の仮起動セクタに格納する場合は、1つの任意プログラムを複数の仮起動セクタに分割して格納する場合と、複数種類の任意プログラムを複数の仮起動セクタに分けて格納する場合とある。
【0087】
1つのプログラムを複数の仮起動セクタに分割できることで起動プログラムを格納した起動セクタのサイズ、即ち514バイトを越える任意プログラムについてもOS前に実行可能となる。また図10、図11、図12に示したようなパスワード認証プログラム、暗号鍵生成プログラム、生体認証プログラムといった異なったプログラムを複数の仮起動セクタに分けて格納してOS起動前に実行させることもできる。
【0088】
図18は仮起動セクタから本来の起動セクタの読み出しに切り替えるコマンドAを発行するためのコードを備えた任意プログラムの説明図である。OS起動前に任意プログラムを実行する場合、BIOS12によっては任意のプログラムが実行される前に数回のLBA0の起動セクタの読み込みを行う場合がある。
【0089】
このような場合、複数セクタに分けて任意プログラムを格納していると、2回目以降の起動セクタの読み出し要求に対し本来のLBA0の起動セクタを読出し応答が行われると、任意のプログラムが実行できない可能性がある。これを防止するため、図18のように任意プログラム90の最後にコマンドA発行コード114を設け、このコマンドA発行コード114の実行で仮起動セクタから実際の起動セクタに切り替えるコマンドAを発行し、任意プログラムが実行されてコマンドA発行コード114に基づきコマンドAが発行された段階でハードディスクドライブ側は実際のLBA0の起動セクタのデータを返すようにすることができる。
【0090】
図19はコマンドAにより任意プログラムの読出しから本来のLBA0の起動セクタの読出しに切り替える本発明による制御のフローチャートである。図19において、パーソナルコンピュータ100のステップS1〜S7及びハードディスクドライブ16のステップS101の処理は図8のタイムチャートと同じであるが、ステップS7で任意プログラムを実行して最後に図18のコマンドA発行コード114を実行し、ステップS8で任意プログラムがコマンドAを発行する。
【0091】
このコマンドAの発行に対しハードディスクドライブ16はステップS102でコマンドAの発行を判別し、LBA0の起動セクタのマスタブードレコードを読み出して応答することになる。尚、ステップS9以降の処理は図8と同じである。
【0092】
図20は図19の制御処理に応じたハードディスクドライブの制御処理のフローチャートである。図20において、ステップS1でLBA0の起動セクタの読出し要求を判別すると、ステップS2で仮起動セクタから任意プログラムを読み出して応答する処理を繰り返している。
【0093】
このときステップS3でコマンドAの発行を判別するとステップS4に進み、LBA0の起動セクタからマスタブードレコードを読み出して応答することになる。ステップS5〜S10の処理は図9のステップS5〜S10と同じである。
【0094】
図21は複数セクタに任意プログラムを格納している場合に2番目以降の仮起動セクタによる任意プログラムの読み出しについて専用のコマンドBを発行するようにした任意プログラムの説明図である。
【0095】
図21において、仮起動セクタ85のプログラム領域102に格納された任意プログラム90は最後にコマンドB発行コード116を格納している。コマンドB発行コード116は任意プログラム90をメモリに読み出して実行した際にハードディスクドライブに対しコマンドBを発行し、このコマンドBは次の仮起動セクタの読み出し応答を指示する専用のコマンドである。このコマンドBを図18に示したコマンドAと組み合わせることで複数の仮起動セクタに格納した任意プログラムの読み出しを確実に行うことができる。
【0096】
即ち複数の仮起動セクタに格納した複数の任意プログラムにつき、最後の1つを除く任意プログラムには図21のようにコマンドB発行コード116を格納し、最後の任意プログラムには図18のコマンドAの発行コード114を格納する。
【0097】
これによって複数の仮起動セクタの読み出して任意プログラムを実行する毎に、コマンドB発行コード116に基づきコマンドBが発行されて次の任意プログラムを格納した仮起動セクタの読み出し応答が行われ、最後の任意コマンドが実行されるとコマンドAが発行され、コマンドAの発行に基づき本来のLBA0の起動セクタのマスタブートレコードの読出し応答を行うことができる。
【0098】
図22はコマンドBにより次の任意プログラムを格納した仮起動セクタを読み出し、コマンドAにより本来のLBA0の起動セクタの読み出しに切り替える本発明による制御処理のタイムチャートである。
【0099】
図22において、パーソナルコンピュータ100におけるステップS1〜S7及びハードディスクドライブ16におけるステップS101の処理は図8のタイムチャートと同じである。しかしながら、ステップS101で読出し応答した最初り仮起動セクタの任意プログラムの最後には図21のようにコマンドB発行コード116が含まれている。このため、ステップS7でコマンドB発行コード116を最後に実行すると、ステップS8で任意プログラムがコマンドBを発行する。
【0100】
ハードディスクドライブ16はステップS102でコマンドBの発行を判別し、次の任意プログラムを格納した仮起動セクタを読み出して応答する。この任意プログラムには図18のようにコマンドA発行コード114が記述されていたとすると、ステップS9で読み出し内容をメモリに格納して実行した後、最後にコマンドAを実行することでステップS10においてコマンドAを発行する。
【0101】
ハードディスクドライブ16はステップS103でコマンドAの発行を判別して本来のLBA0のマスタブードレコードを格納した起動セクタを読み出して応答する。そしてステップS7でメモリに格納されたマスタブートレコード、即ちブードストラップローダの先頭に制御を移し、ステップS12でブードストラップローダを実行し、以後、図8のステップS12,S13に示したようにOSの起動が行われる。
【0102】
図23は図22の制御処理に対応したハードディスクドライブのドライブ処理のフローチャートである。図23において、ドライブ処理はステップS1でLBA0の起動セクタの読出し要求を判別すると、ステップS2で任意プログラムを格納した仮起動セクタを読み出して応答する。続いてステップS3でコマンドBの発行の有無をチェックしており、コマンドBの発行を判別するとステップS4で次の任意のプログラムを格納した仮起動セクタを読み出して応答する。
【0103】
ステップS3でコマンドBの発行がない場合にはステップS5でコマンドAの判別をしており、もしコマンドAの発行を判別するとステップS6に進み、本来のLBA0のマスタブードレコードを格納している起動セクタを読み出して応答し、OSを起動させることになる。尚、ステップS7〜S12は図9のステップS5〜S10と同じである。
【0104】
図24はコマンドBのみにより次の任意プログラムを格納した仮起動セクタを読み出し、任意プログラムを格納した仮起動セクタが読み出し終了となると、本来のLBA0の起動セクタの読み出しに切り替える本発明の制御処理のフローチャートである。
【0105】
図24において、パーソナルコンピュータ100のステップS1〜S10及びハードディスクドライブ16のステップS101,102は図22と同じである。すなわちステップS7で任意プログラムを実行すると最後のコマンドB発行コード116に基づいてステップS8で任意プログラムがコマンドBを発行し、ハードディスクドライブ16がステップS102で次の任意プログラムを格納した仮起動セクタを読み出して応答する。
【0106】
これを受けてパーソナルコンピュータ100はステップS9で読み出し内容をメモリに格納して任意プログラムを実行し、最後のコマンドB発行コード116に基づきステップS10で任意プログラムからコマンドBを発行する。ハードディスクドライブ16はステップS103でコマンドBの発行を判別するが、次の任意プログラムを格納した仮起動セクタが存在しなかったとすると、これを判別し、本来のLBA0のマスタブートレコードを格納した起動セクタを読出して応答する。
【0107】
このような処理により、コマンドBのみで任意プログラムを格納した仮起動セクタの読出しとLBA0のマスタブートレコードを格納した本来の起動セクタの読み出しを切り替えることができる。尚、ステップS11以降の任意プログラムによるOSの起動は図8のステップS12,S13の処理と同じになる。
【0108】
図25は図23の制御処理に対応したハードディスクドライブのドライブ処理のフローチャートである。図25において、LBA0の起動セクタの読出し要求を判別すると、ステップS2で任意のプログラムを格納した仮起動セクタを読み出して応答する。続いてステップS3でコマンドBの発行をチェックしており、コマンドBの発行を判別するとステップS4に進み、次の仮起動セクタが存在するか否かチェックする。
【0109】
次の仮起動セクタが存在すればステップS5に進み、そこから次の任意プログラムを格納した仮起動セクタを読み出して応答する。ステップS4で次の仮起動セクタが存在しないことが判別されるとステップS6に進み、本来のLBA0のマスタブートレコードを格納した起動セクタを読み出して応答する。ステップS7〜S12は図9のステップS5〜S10と同じである。
【0110】
また本発明のディスク記憶媒体あるいは不揮発性メモリに格納した仮起動セクタに書込こまれた任意プログラムについては、容易に書き換えられないようにすることが望ましい。これを実現するためにはハードディスクドライブ16において、仮起動セクタに対する通常の書き込み要求についてはこれを失敗させるように処理する。この場合、仮起動セクタに書き込むための専用のコマンドを準備しておき、この専用のコマンドを通知した書き込みのみを許可するようにし、仮起動セクタに格納した任意プログラムが容易に書き換えることができないようにすることができる。
【0111】
更に本発明は、ハードディクスドライブ16のプロセッサ62で実行されるプログラムを提供するものであり、図9、図20、図23又は図25のフローチャートの内容となる。
【0112】
尚、上記の実施形態は起動ドライブとしてハードディスクドライブ16を例にとるものであったが、これ以外に図2のパーソナルコンピュータ100に設けている入出力デバイスであるフロッピィ(R)ディスクドライブ20、MOディスクドライブ24、CD−ROMドライブ28もしくはUSBドライブ32のいずれかを起動ドライブとして指定してもよい。
【0113】
例えば起動ディスクとしてフロッピィ(R)ディスクドライブ20を指定した場合には、フロッピィ(R)ディスクのLBA0の起動セクタをブートセクタとしているが相違し、それ以外の仮起動セクタの配置によるOS起動前の任意プログラムの実行についてはハードディスクドライブの場合と同じである。
【0114】
またMOディスクドライブ24、CD−ROMドライブ28、USBドライブ32のいずれかを起動ドライブとして指定した場合には、ハードディスクドライブと同じ起動プログラムの配置もしくはフロッピィ(R)ディスクドライブと同じ起動プログラムの配置のいずれかを採用することができ、この場合についてもOS起動前の任意プログラムの実行をハードディスクドライブの場合と同様にして実現することができる。
【0115】
また本発明はその目的と利点を損なうことのない適宜の変形を含み、さらに上記の実施形態に示した数値による限定は受けない。
【0116】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
【0117】
(付記1)
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を備えたことを特徴とする起動プログラム実行方法。(1)
【0118】
(付記2)
付記1記載の起動プログラム実行方法に於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とする起動プログラム実行方法。(2)
【0119】
(付記3)
付記1記載の起動プログラム実行方法に於いて、前記任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とする起動プログラム実行方法。
【0120】
(付記4)
付記1記載の起動プログラム実行方法に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする起動プログラム実行方法。
【0121】
(付記5)
付記1記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、前記デバイスの単一領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、前記仮起動セクタの配置数を管理し、上位装置からの複数回の読出し要求に対し前記配置数分の仮起動セクタを順次読出し応答して前記任意プログラムを実行させることを特徴とする起動プログラム実行方法。
【0122】
(付記6)
付記1記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、前記デバイスの異なる領域に配置した複数の仮起動セクタに分けて任意プログラムを格納した場合、前記仮起動セクタの順番を管理し、電源投入後の前記上位装置からの複数回の読出し要求に対し前記複数の仮起動セクタを管理された順番に従って読出し応答して前記任意プログラムを実行させることを特徴とする起動プログラム実行方法。
【0123】
(付記7)
付記6記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、更に、前記デバイスの異なる領域毎に複数の仮起動セクタを配置して配置数を管理し、前記上位装置からの複数回の読出し要求に対し異なる配置領域毎に配置数分の仮起動セクタを順次読出し応答して前記任意プログラムを実行させるることを特徴とする起動プログラム実行方法。
【0124】
(付記8)
付記5乃至7のいずれかに記載の起動プログラム実行方法に於いて、前記複数の仮起動セクタに格納された任意プログラムは、1つの任意プログラムの分割プログラム、または複数種類の任意プログラムであることを特徴とする起動プログラム実行方法。
【0125】
(付記9)
付記1記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
前記任意プログラムは実行終了時に前記起動セクタの読出しを要求するコマンドを発行し、
前記起動ステップは、前記起動前処理ステップによる読出し応答後に上位装置から前記コマンドを受信した際に、前記起動セクタを読出し応答して前記起動プログラムを実行させることを特徴とする起動プログラム実行方法。
【0126】
(付記10)
付記1記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
前記任意プログラムは実行終了時に次の仮起動セクタの読出しを要求するコマンドを発行し、
前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、前記上位装置から前記コマンドを受信した際に次の仮起動セクタを読出し応答し、
前記起動ステップは、前記コマンドを受信した際に次の仮起動セクタが存在しないことを判別して前記起動セクタを読出し応答することを特徴とする起動プログラム実行方法。
【0127】
(付記11)
付記1記載の起動プログラム実行方法に於いて、複数の仮起動セクタに分けて任意プログラムを格納した場合、
最後を除く複数の任意プログラムは実行終了時に次の任意プログラムの読出しを要求する第1コマンドを発行し、最後の任意プログラムは実行終了時に前記起動セクタの読出しを要求する第2コマンドを発行し、
前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し先頭の仮起動セクタを読出し応答した後、前記上位装置から前記第1コマンドを受信した際に次の仮起動セクタを読出し応答し、
前記起動ステップは、前記起動前処理ステップによる読出し応答に対し上位装置から前記第2コマンドを受信した際に前記起動セクタを読出し応答することを特徴とする起動プログラム実行方法。
【0128】
(付記12)
付記1記載の起動プログラム実行方法に於いて、前記起動前処理ステップは、電源投入後の上位装置からの最初の読込み要求に対し前記任意のプログラムを格納した仮起動セクタを読出し応答する際に、前記起動セクタからパーティションテーブルをコピーして応答することを特徴とする起動プログラム実行方法。
【0129】
(付記13)
付記1記載の起動プログラム実行方法に於いて、前記ドライブは、ディスクドライブ、メモリドライブを含むことを特徴とする起動プログラム実行方法。
【0130】
(付記14)
上位装置からの指示により記憶媒体にアクセスするデバイスに於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動部と、
を備えたことを特徴とするデバイス。(3)
【0131】
(付記15)
付記1記載のデバイスに於いて、前記任意プログラムは、実行終了時に前記起動セクタを読出してメモリに展開して先頭部分に制御を移すコードを格納したことを特徴とするデバイス。
【0132】
(付記16)
付記1記載のデバイスに於いて、前記任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とするデバイス。
【0133】
(付記17)
上位装置の指示を受けてデバイスによりアクセスされる記憶媒体に於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする記憶媒体。(4)
【0134】
(付記18)
付記17記載の記憶媒体に於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とする記憶媒体。
【0135】
(付記19)
上位装置の指示を受け記憶媒体にアクセスするデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を実行させることを特徴とするプログラム。(5)
【0136】
(付記20)
付記19記載のプログラムに於いて、前記起動プログラムは、記憶媒体の起動セクタに格納されたPC/AT互換に対応したブートストラップローダと、前記ブートストラップローダにより指定されるパーティション起動セクタに可能されたブートプログラム、または、前記起動プログラムは、記憶媒体の起動セクタとなるブートセクタに格納されたブートプログラムであることを特徴とするプログラム。
【図面の簡単な説明】
【0137】
【図1】本発明の原理説明図
【図2】本発明の起動プログラム実行処理が適用されるパーソナルコンピュータのブロック図
【図3】図2のハードディスクドライブのブロック図
【図4】OS起動前に実行する任意プログラムを格納した仮起動ディスクのディスクレイアウトの説明図
【図5】図2の任意プログラムを記録する仮起動セクタの内容を起動セクタと対比して示した説明図
【図6】OS起動前に実行する任意プログラムを格納した仮起動セクタの他のディスクレイアウトの説明図
【図7】OS起動前に実行する任意プログラムを格納した仮起動セクタを不揮発性メモリに配置したハードディスクドライブの説明図
【図8】OS起動前に任意のプログラムを実行する本発明による制御処理のタイムチャート
【図9】図8の制御処理に対応したドライブ処理のフローチャート
【図10】OS起動前に実行されるパスワード認証処理のフローチャート
【図11】OS起動前に実行される暗号鍵生成処理のフローチャート
【図12】OS起動前に実行される生体認証処理のフローチャート
【図13】ドライブに格納先管理テーブルを設けたディスクレイアウトの説明図
【図14】ドライブに格納先管理テーブルを設けた他のディスクレイアウトの説明図
【図15】ドライブに格納先管理テーブルを設けた他のディスクレイアウトの説明図
【図16】ドライブに格納先管理テーブルと順序管理テーブルを設けたディスクレイアウトの説明図
【図17】ドライブに格納先と順序を示す順序管理テーブルを設けたディスクレイアウトの説明図
【図18】コマンドA発行コードを備えた任意プログラムの説明図
【図19】コマンドAにより仮起動セクタの読出しからLBA0の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図20】図19の制御処理に対応したドライブ処理のフローチャート
【図21】コマンドB発行コードを備えた任意プログラムの説明図
【図22】コマンドBにより次の仮起動セクタを読出し、コマンドAによりLBA0の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図23】図22の制御処理に対応したドライブ処理のフローチャート
【図24】コマンドBのみにより次の仮起動セクタを読出し、LBA0の起動セクタの読出しに切替える本発明による制御処理のタイムチャート
【図25】図23の制御処理に対応したドライブ処理のフローチャート
【図26】従来のマイクロコンピュータの説明図
【図27】ブートプロセスを実行する従来のハードディスクドライブのディスクレイアウトの説明図
【図28】ブートプロセスを実行する従来のフロッピィ(R)ドライブのディスクレイアウトの説明図
【図29】従来のブート処理のフローチャート
【符号の説明】
【0138】
10:CPU
11:バス
12:BIOS
14:RAM
16:ハードディスクドライブ
18:ディスク記憶媒体
20:フロッピィ(R)ディスクドライブ
22:フロッピィ(R)ディスク
24:MOディスクドライブ
26:MOカートリッジ記憶媒体
28:CD−ROMドライブ
30:CD−ROM記憶媒体
32:USBドライブ
34:USBメモリ
36:マウスコントローラ
38:マウス
40:キーボードコントローラ
42:キーボード
44:ディスプレイコントローラ
46:ディスプレイ
48:通信ボード
50:起動プログラム
52:任意プログラム
54:起動前応答部
56:起動応答部
58:回路ボード
60:ディスクエンクロージャ
62:MPU
64:インタフェース
66:ハードディスクコントローラ(HDC)
68:リードチャネル(RDC)
70:サーボ制御部
72:バッファメモリ
74:不揮発性メモリ
75:管理テーブル
76:リード/ライトアンプ
78:ヘッドアッセンブリィ
80:ボイスコイルモータ
82:スピンドルモータ
83:マスタブートレコード
84:起動セクタ
85,85−1,85−2:仮起動セクタ
86:ブートセクタ
88:OS非アクセスセクタ
90,90−1〜90−7:任意プログラム
92:LBA0読出コード
94:システム領域
95,95−1〜95−4:格納先管理テーブル
96,98:順序管理テーブル
100:パーソナルコンピュータ
102:プログラム領域
104:パーティション領域
106:ブートストラップローダ
108−1〜108−4:パーティションテーブル
110:ブートシグニチャ
112:LBA0読出コード
114:コマンドA発行コード
116:コマンドB発行コード
【特許請求の範囲】
【請求項1】
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を備えたことを特徴とする起動プログラム実行方法。
【請求項2】
請求項1記載の起動プログラム実行方法に於いて、前記任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とする起動プログラム実行方法。
【請求項3】
上位装置からの指示により記憶媒体にアクセスするデバイスに於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動部と、
を備えたことを特徴とするデバイス。
【請求項4】
上位装置の指示を受けてデバイスによりアクセスされる記憶媒体に於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする記憶媒体。
【請求項5】
上位装置の指示を受け記憶媒体にアクセスするデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を実行させることを特徴とするプログラム。
【請求項1】
上位装置からデバイスの記憶媒体に対する最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を備えたことを特徴とする起動プログラム実行方法。
【請求項2】
請求項1記載の起動プログラム実行方法に於いて、前記任意プログラムを格納した仮起動セクタは、OSがアクセスできない記憶媒体の特殊領域、前記デバイスのみがアクセス可能な記憶媒体のシステム領域又は前記デバイスに設けた不揮発性メモリの領域に配置されたことを特徴とする起動プログラム実行方法。
【請求項3】
上位装置からの指示により記憶媒体にアクセスするデバイスに於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した前記記憶媒体の起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理部と、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動部と、
を備えたことを特徴とするデバイス。
【請求項4】
上位装置の指示を受けてデバイスによりアクセスされる記憶媒体に於いて、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて読出し応答される任意プログラムを格納する仮起動セクタを有することを特徴とする記憶媒体。
【請求項5】
上位装置の指示を受け記憶媒体にアクセスするデバイスのコンピュータに、
上位装置からの最初の読込み要求に対し、起動プログラムを格納した起動セクタに代えて任意プログラムを格納した仮起動セクタを読出し応答して前記任意プログラムを実行させる起動前処理ステップと、
前記任意のプログラムの実行に基づく前記上位装置からの次の読込み要求に対し前記起動セクタを読出し応答して前記起動プログラムの実行によりOSを起動させる起動ステップと、
を実行させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2006−236193(P2006−236193A)
【公開日】平成18年9月7日(2006.9.7)
【国際特許分類】
【出願番号】特願2005−52662(P2005−52662)
【出願日】平成17年2月28日(2005.2.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成18年9月7日(2006.9.7)
【国際特許分類】
【出願日】平成17年2月28日(2005.2.28)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]