(57)【特許請求の範囲】
【請求項１】
コンピュータであって、
ＣＰＵと、
前記ＣＰＵに接続されたメモリと、
前記ＣＰＵに接続されたＩ／Ｏサブシステムと、
前記Ｉ／Ｏサブシステムに接続され、第１のパーティションと、ハイバネーションデータ記憶領域を有する第２のパーティションと、前記第１のパーティションが前記コンピュータのブートに対してアクティブであり前記第２のパーティションが前記コンピュータのブートに対してアクティブでないということを示すパーティションテーブルとを備えた大容量記憶装置と、
前記コンピュータをブートするためにいずれのブート可能パーティションを使用すべきかを選択するための、前記Ｉ／Ｏサブシステムと前記ＣＰＵとの間のロジック手段と、及び
前記第２のパーティションが選択された場合に前記ロジック手段に応答して、前記パーティションテーブルを読出すことができ、かつ選択された第２のパーティションが前記ＣＰＵに関して前記コンピュータをブートするためにアクティブであると示されるように前記読出されたパーティションテーブルを変更することができる、前記メモリ内の第１のプログラムとからなり、
前記大容量記憶装置に配置された前記パーティションテーブルが、変更されない、コンピュータ。
【請求項２】
前記ロジック手段が、
前記Ｉ／Ｏサブシステムに接続され、入力シーケンスを受信することができる入力装置と、及び
予め定められた入力シーケンスを受信したことを検出し、その検出に応じて前記第２のパーティションを選択することができる前記メモリ内の第２のプログラムとを含む、請求項１のコンピュータ。
【請求項３】
前記第２のパーティションは、前記第２のパーティションが前記ＣＰＵに対してアクティブであるとされた後に実行可能であるユーティリティプログラムを含む、請求項１のコンピュータ。
【請求項４】
前記ユーティリティプログラムが、診断テストプログラムである、請求項３のコンピュータ。
【請求項５】
前記メモリがＢＩＯＳを含み、前記ユーティリティプログラムが前記ＢＩＯＳを更新することができる、請求項３のコンピュータ。
【請求項６】
前記ユーティリティプログラムが前記第１のパーティションを暗号化及び解読することができる請求項３のコンピュータ。
【請求項７】
前記ユーティリティプログラムが、前記メモリ、及び前記第１のパーティションのウイルスチェックを行うことができる、請求項３のコンピュータ。
【請求項８】
前記第１のパーティションがデータ及びプログラムを含み、前記ユーティリティプログラムが、ブート可能な前記第１のパーティションに記憶されたデータ及びプログラムへのアクセスを制限するためのユーザ認証プログラムである、請求項３のコンピュータ。
【請求項９】
呼出しプログラムからのコンピュータのブートシーケンスを変更するための方法であって、
前記呼出しプログラムが１組のパラメータを、前記ブートシーケンスを変更するためのプログラムに渡し、前記コンピュータは、第１のパーティションと、ハイバネーションデータ記憶領域を有する第２のパーティションと、前記第１のパーティションがブート可能であり前記第２のパーティションがブート不能であることを示すパーティションテーブルとを備えたブートディスクを有しており、前記方法が、
一組のパラメータを用いてブートディスクを読出し、一組の結果を戻すステップと、
前記一組のパラメータを第１の値と比較して前記パーティションテーブルが読出されたと判断するステップと、
前記ブートディスクの前記パーティションテーブルの内容を変更することなく、前記第１のパーティションがブート不能であり、前記ハイバネーションデータ記憶領域を有する第２のパーティションがブート可能であることを示すように、前記戻された一組の結果を変更するステップと、
前記変更された一組の結果を前記呼出しプログラムに戻すステップとからなり、
前記コンピュータが前記第１のパーティションでなく前記第２のパーティションを用いてブートする、方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータシステムに関し、特に、セキュアユーティリティプログラムにディスクパーティションをハイバネーションデータと共有させることにより、セキュアユーティリティプログラムを格納しブートすることができるコンピュータに関する。
【０００２】
【従来技術及びその問題点】
コンピュータメーカは、パーソナルコンピュータ（ＰＣ）のユーザに、新たなテクノロジ及び特徴の一様な流れを提供し続けている。しかしながら、ＰＣがより複雑化するに従い、市場の圧力により、ＰＣの使用法及び操作を一層ユーザフレンドリにすることは不可避である。そうすることによって、技術に精通していない更に多くのユーザがＰＣを購入し、それによって更に大きな市場を創製するだろう。更に、コンピュータメーカがＰＣのコストを下げることにより、より多くのユーザがＰＣを、技術的な驚異ではなく単なる道具と考えるようになってきている。また、このように考え方が変化することにより、ユーザは、製品の品質及びプログラムやファイルの安全性に関しても一層大きな期待を持つようになる。大抵の装置は非常に信頼性が高く、ＰＣについてとかく言われるような多大な保守が必要になると言うようなことはない。通常、装置が故障した場合、ユーザまたはサービス技術者は、それを非常に迅速に診断して修理することができる。従って、コンピュータメーカは、ＰＣの故障発生の防止を支援するか、あるいは、故障した場合にユーザまたはサービス技術者がＰＣを迅速に診断して修理するのを支援するユーティリティプログラムを提供することを余儀なくされている。
【０００３】
大抵のＰＣはＢＩＯＳと呼ばれる低レベルソフトウェアを搭載して出荷される。これは、ＰＣが起動されるかまたはリセットされた時に最小限の自己テストを提供する。これらの自己テストはＰＣが１９８０年初頭に最初に設計された時に書かれたものであり、このようなテストはそもそもコンピュータメーカ及びそれらのサービス部門のために行われる。初期のＰＣのＢＩＯＳでは記憶スペースが制限されていたため、わずかな量の自己テストしか実行されていなかった。コンピュータメーカだけが、フロッピドライブを使用してＰＣにロードされる更に完全な診断自己テストを実行するために必要なテストを実行していた。これらの完全な診断自己テストは複雑であるため、通常はユーザが行えるようにはなっていなかった。従って、ユーザのＰＣが適切に機能しなかった時、そのＰＣはメーカのサービスセンタに戻されるか、コンピュータ技術者がオフィスまたは家に出向かなければならなかった。ユーザに完全な自己テストプログラムを提供することの問題の１つは、自己テストプログラムはフロッピディスクフォーマットで与えられた場合、破損または紛失する可能性があるということであった。また、自己テストプログラムをそのメーカが製造したものではないＰＣに使用した場合、そのＰＣが完全に誤動作または故障する可能性があった。更に、自己テストをＰＣに組込むことは、限られたＢＩＯＳ中に必要とされるメモリ量からして、そのコストは実現不能なものになっていた。
【０００４】
これに加えて、新たなＰＣテクノロジにより、ユーザ側に信頼性及びファイルセキュリティへの一層の関心が生れてきた。いくつものＯＳがＰＣで使用できるようになりまたそれらのアップグレードのサイクルは好ましくないほど頻繁であることから、ＢＩＯＳがＯＳの改良版の新しい特徴を認識できず旧式化してしまうため、多くのＰＣがアップグレードすることができなかった。これらのＰＣのＢＩＯＳは、集積回路チップに格納されているためにアップグレードできなかった。初期の大抵のＰＣは、ＢＩＯＳチップを取り外すことができなかったり、或いは、専門家によって取り外しまた取りつける必要があった。最近のＰＣはプログラム可能なＢＩＯＳチップを有しているが、これらのチップはＰＣのコストを上昇させると共に、ＢＩＯＳの更新手続きを適切に行わなかったりあるいは書き込み中に電源断やサージ等の他の事象が発生した場合に故障率が高くなっていた。
【０００５】
ＰＣテクノロジの発展と共に発生したもう１つの信頼性及びファイルセキュリティに関するものは「コンピュータウイルス」である。一般に、このコンピュータウイルスは、ユーザのＰＣに害を及ぼすかまたは大破壊をもたらすために、高い技術を持った愉快犯や破壊活動家によって巧妙に設計されたプログラムである。多くのウイルスは、広まっていき、ユーザのＰＣにハードディスク等の大容量記憶装置を完全に消去させる。これらのウイルスがもたらす損傷を捜し、取除き、一掃するかまたは防止するウイルスプロテクトプログラムが書かれ販売されている。しかしながら、ウイルスチェックプログラム自体を見付け出し、攻撃して破壊する新たなウイルスが作成されている。ウイルスの作成者は、このような危害を与えることができるが、これは、ＰＣ上のプログラムが自分以外からのアクセスや変更を防止するという保護機能がほとんどないためである。
【０００６】
同様に、ＰＣが権限のない使用及びスパイ行為に対して殆どまたはまったくセキュリティ保護機能を有していないため、ユーザの大容量ファイルが破壊される場合もある。ＰＣがパスワード保護機能を提供する場合でさえ、技術の専門家は、この貧弱なセキュリティ方式を打ち破ったりあるいは迂回することができるようになった。数多くの新聞記事において、米国国防総省及びＣＩＡ等の保護された軍のサイトでさえコンピュータへの侵入が起ったことが報告されている。認証セキュリティは、マシンがオペレーティングシステムをブートする前に実行される必要があるため、より優れたセキュリティをＢＩＯＳに付加することは困難である。コストのかかる最近の代替方法の１つに、それ自身のために特別にプログラムされたマイクロプロセッサを有するカスタム回路をＰＣに付加する方法がある。しかしながら、ＰＣメーカが低コストの安全な認証技術を提供しなければ、通常のユーザは今日のハイテクなサイバ犯罪に対して非常に危険な状態にある。
【０００７】
従って、ＰＣメーカは、ＰＣがいくつかの面で高信頼度で稼動していることだけでなく、製品の陳腐化や悪質なウイルスから安全でもあり、またそのファイルが権限のないアクセスから安全であることをユーザに保障することができる方法を提供する必要がある。
【０００８】
【概要】
本発明によるコンピュータは、中央処理装置、メモリ及びＩ／Ｏサブシステムを有している。Ｉ／Ｏサブシステムは、第１のパーティションと、ハイバネーションデータ記憶領域を含む第２のパーティションとを有する大容量記憶装置に接続されている。この大容量記憶装置は、更に、第１のパーティションがコンピュータをブートするためにアクティブであること、及び第２のパーティションがアクティブでないことを示しているパーティションテーブルを有している。また、コンピュータは、コンピュータをブートするためにいずれのパーティションを使用すべきかをＩ／Ｏサブシステムを用いて選択するロジックを有している。上記メモリはプログラムを格納しており、このプログラムは、パーティションを選択する前述のロジックに応答して、大容量記憶装置のパーティションテーブルを読出し、このテーブルを変更して選択されたパーティションがコンピュータをブートするためにアクティブであるとＣＰＵから見えるようにすることができる。
【０００９】
【実施例】
一般に、パーソナルコンピュータ（ＰＣ）は、いくつか例を挙げるとハードディスクドライブ、フロッピドライブ、コンパクトディスク（ＣＤ）及びデジタルバーサタイルディスク（ＤＶＤ）等、いくつかの形態の大容量記憶装置を有している。これらのドライブは、オペレーティングシステム（ＯＳ）、アプリケーションプログラム等のユーザソフトウエア、及びワードプロセシングドキュメント、スプレッドシート及び図表等のデータファイルを記憶する。また、ＰＣは、基本入出力システム（ＢＩＯＳ）として知られる低レベルシステムソフトウェアを有している。これは、一般に、更新可能な低速メモリに記憶されており、ＰＣがブートされる時に高速メモリに移される。ＰＣが最初に起動される時、中央処理装置（ＣＰＵ）が、電源投入時自己テスト（ＰＯＳＴ）と呼ばれる一組の最小の診断及び装置構成ルーチンからの命令を処理（または「実行」として知られる）を開始する。ＰＯＳＴが正常に終了すると、ＢＩＯＳは、大容量記憶装置探索ルーチンを用いてＯＳまたは他のブート可能なプログラムを探し出してブートするという作業に進む（ロード及び実行を開始する）。
【００１０】
上述したように、コンピュータに含まれる大抵の情報は大容量記憶装置に記憶されている。特に付記しない限りは、「ソフトウェア」、「オペレーティングシステム（ＯＳ）」、「サブルーチン」及び「プログラム」は、実行可能なソフトウェアプログラムを指し、「データ」は、総称的にソフトウェア、オペレーティングシステム、プログラム、並びに、ソフトウェア、オペレーティングシステム及びプログラムが生成するファイルを含むすべての形態の電子情報を指す。しかしながら、いずれの場合も、すべて大容量記憶装置に記憶されている。「実行」とはＣＰＵ命令の処理を指す。「ブート」とは、ＢＩＯＳによりロードされ実行されるオペレーティングシステムまたはプログラムにＣＰＵの制御を渡す処理を指す。
【００１１】
一例としてのＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ  ＰＣのＢＩＯＳでは、一般に、大容量記憶装置探索ルーチンは、まずフロッピディスクを探索し次にハードディスクを探索することによってＯＳを探し出すようにプログラムされている。この探索技術により、ハードディスクが故障した場合または異なるＯＳが必要である場合にもＰＣをブートすることができる。ＰＣ内に構成された大容量記憶装置中でアクセス可能な記憶容量が増大することにより、ユーザは、大容量記憶装置に複数のＯＳをロードすることができる。ブート時に、大容量記憶装置に入っている複数のオペレーティングシステムから選択を行うためのいくつかの技術が実現されている。ＰＣに搭載された一般的なＯＳには、いくつか例を挙げるとＭＳ−ＤＯＳ、Ｗｉｎｄｏｗｓ  ９５／９８、Ｗｉｎｄｏｗｓ  ２０００  （Ｗｉｎｄｏｗｓ  ＮＴ）、Ｕｎｉｘ、Ｎｏｖｅｌｌ  Ｄｏｓ及びＬｉｎｕｘがある。これに加えて、ＣＤ−ＲＯＭ、ＤＶＤ等の交換可能記憶媒体、更にはいくつか例を挙げるとＰＣＭＣＩＡ及びカードバス（Ｃａｒｄｂｕｓ）フラッシュカード等のようなリムーバブルドライブの大容量記憶装置を探索する処理が、大容量記憶装置探索ルーチンに組込まれている。これらの交換可能媒体及びリムーバブルドライブをフォーマットして、それらがハードディスクやフロッピドライブと同様にブート可能な大容量記憶装置とすることができる。
【００１２】
このように、いくつかのオペレーティングシステム、プログラムまたはデータを記憶するために、ＰＣには複数の大容量記憶装置を取付けることが可能である。しかしながら、大容量記憶装置に記憶されたプログラムまたはデータにアクセスする方法について述べるためには、大容量記憶領域の編成について知らなければならない。物理的には、大抵の大容量記憶装置はハードディスクドライブの用語法（ｔｅｒｍｉｎｏｌｏｇｙ）を用いて編成されている。一般に、ハードディスクは、プログラムまたはデータを記憶する少なくとも１つのプラッタを有している。各プラッタは、トラックと呼ばれる複数の同心状の記憶ユニットに分割されている。更に、トラックはセクタに分割されている。各プラッタは、ハードディスク上にデータの読書きを行うトップヘッド及びボトムヘッドによってアクセスされる。一方、論理的には、ハードディスクは、複数のパーティションに分割することができる。全パーティションの記憶領域の集合体がハードディスクの記憶容量を超えない限り、各パーティションの記憶容量をパーティションの生成時に選択することができる。例えば、１つの８メガバイトのハードディスクは、論理的に、Ｃ（記憶容量が４メガバイト）、Ｄ（３メガバイト）及びＥ（１メガバイト）と名前が付けられた３つのパーティションを有することができる。更に、パーティションは、アドレッシングのためにトラック、シリンダ及びセクタに分割される。例えば、Ｍｉｃｒｏｓｏｆｔによって提供されるＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ  のＦＤＩＳＫユーティリティでは、ＰＣは、タイプ及びサイズの異なるディスクパーティションを４つまで有することができる。これらの各種のタイプは、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２等のＭＳ−ＤＯＳ／ＷｉｎｄｏｗｓタイプかまたはＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ以外の他のタイプとすることができ、それにより、複数のＯＳを同じハードディスクにインストールすることができる。また、将来使用するために、追加のディスクパーティションタイプが予約されている。これらの予約されたパーティションの１つは、ＰＣがスリープ状態にある間にＰＣメモリの内容を記憶しているために使用するように指定されている。このスリープ状態は、しばしば「ハイバネーションモード」もしくは「ディスク保存（ｓａｖｅ−ｔｏ−ｄｉｓｋ）モード」と呼ばれる。ハイバネーションモードにより、オフ状態でありながら、このスリープ状態に入る前のユーザの動作環境を維持することによって、ＰＣの電力を節約できる。ＰＣは、ハイバネーションモードから戻って立上げられると以前の動作環境に戻るため、ブート時間が短縮される。通常、ＰＣ内の大容量記憶装置の１つのパーティションがＰＣのメモリを記憶するために使用され、この「ハイバネーションパーティション」は、ブート不可能とされ、アクセスも破壊も不可能であるようにオペレーティングシステムから隠されている。一般にＰＣ電源状態の制御はＢＩＯＳによって操作されるため、ＢＩＯＳコードのみがハイバネーションパーティションのデータ領域へのアクセスと読出し及び書込みの方法を知っている。
【００１３】
各ハードディスクは、ディスクパーティションのサイズ、タイプ及びロケーションに関係する情報を含む１つのパーティションテーブルを有している。一般に、このパーティションテーブルは、第１ヘッドの下の第１トラックの第１セクタに記録されている。また、パーティションテーブルは、通常、マスタブートレコード（ＭＢＲ）と呼ばれる。ブートレコードの目的は、オペレーティングシステムがまだ完全にはメモリにロードされていない短い期間中、ＰＣのシステム操作を制御することである。このブートレコードは、大容量記憶装置からオペレーティングシステムをロードすることができるようにすることを担当する。ＰＣが立上げられると、ＢＩＯＳは、パーティションテーブルすなわちＭＢＲをメモリにロードし、それに制御を移す。すると、ＭＢＲ内のコードが現在選択可能なブート可能パーティションを探して、そのパーティションのブートレコードをロードして、それに制御を移す。パーティションテーブルは論理ドライブ内になく、かつ、大抵のＯＳは論理ドライブのみを取り扱うため、大容量記憶装置のこのレコードは、特別なソフトウェアなしにはＯＳが、またこれによってユーザもアクセスすることはできない。
【００１４】
大容量記憶装置のデータを記憶する容量が増大するに従い、大容量記憶装置の記憶空間を各種のパーティションに分割することができるように、特にＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ等のいくつかのオペレーティングシステム用にかなりのＢＩＯＳが変更されている。更に、大容量記憶装置のデータ記憶容量が増大することにより、ＰＣメーカまたは再販業者には、大容量記憶装置内のパーティションに、製品に新たな特徴または機能を提供する有用なユーティリティプログラムを事前にロードしておく機会が与えられる。しかしながら、ＰＣがハイバネーションパーティションを有すると、この追加の機能を付加したいと考えるＰＣメーカに難問を与えている。例えば、ＦＤＩＳＫディスクパーティションユーティリティを使用するＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ  ＰＣでは、大容量記憶装置には４つのパーティションしか存在することができない。ブート可能オペレーティングシステムパーティション及びハイバネーションパーティションがそれぞれ４つのパーティションの１つずつを占めると、使用可能であるのは残りの２つのパーティションのみである。ＰＣメーカが残りの２つのパーティションの１つに特別なユーティリティプログラムを配置した場合、ユーザが望むようにロードできるのは１つのパーティションしか残らない。更に、特別なユーティリティプログラムは、ユーザによって削除されるか、もしくは不適当なソフトウェアまたはコンピュータウイルスによって破壊される可能性がある。従って、大容量記憶装置に安全にロードされる特別なシステムユーティリティプログラムが必要である。この特別なシステムユーティリティプログラムは、大容量記憶装置の追加のパーティションを使用しない限り、ユーザが使用不可能であり、ソフトウェアの不正動作またはウイルスによって引き起こされるかも知れない破壊から保護されている必要がある。
【００１５】
図１は、本発明の好ましい実施の形態及び代替的な実施の形態を実現するパーソナルコンピュータ（ＰＣ）１０の主な構成要素を示すブロック図である。中央処理装置（ＣＰＵ）４０がキャッシュメモリ４２とホストバス２４に接続されており、ホストバス２４はメモリコントローラ２０に接続されている。メモリコントローラ２０は、システムＲＡＭ２２をＣＰＵ４０にインタフェースするために使用される。通常、ＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ  ＰＣのＣＰＵは、いくつか例を挙げると、Ｉｎｔｅｌによって製造されるＰｅｎｔｉｕｍ、Ｐｅｎｔｉｕｍ  ＩＩ、Ｃｅｌｅｒｏｎ、Ｘｅｏｎ、ＭｅｒｃｅｄまたはＭｃＫｉｎｌｅｙプロセッサか、或いはＡＭＤまたはＮａｔｉｏｎａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒによって製造されるそれらとコンパティブルな製品である。なお、当業者は、ＡｐｐｌｅのＭａｃＩｎｔｏｓｈ  Ｐｏｗｅｒ  ＰＣやＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｓｐａｒｃ  Ｐｒｏｃｅｓｓｏｒのような他のアーキテクチャが存在し、それらも本発明の範囲及び精神に含まれるということを認めるであろう。また、システムＲＡＭ２２は、通常は、ＤＲＡＭ、シンクロナス（同期式）ＤＲＡＭ、ＳＲＡＭまたはＲＡＭＢＵＳメモリであるが、他のタイプを使用することも可能であり、それらもまた本発明の範囲及び精神に含まれる。ＣＰＵ４０に接続されたキャッシュメモリ４２は、高速アクセスが可能であるように、一般にＣＰＵ４０によって直接制御される。ホストバス２４は、ＣＰＵ４０の標準バスインタフェースであってもよいし、或いはＰＣＩ等の一般的なバス規格とすることができる。このホストバス２４はまた、グラフィックディスプレイ（図示せず）及びネットワークインタフェース（図示せず）等の他の高速装置へのインタフェースにも使用される。ＣＰＵ４０は、通常、Ｉ／Ｏバス２８を使用して低速の装置とインタフェースする。このＩ／Ｏバス２８は、一般にバスコントローラ２６を用いてホストバス２４に接続されている。低速のメモリは、通常、このＩ／Ｏバス２８に接続されており、それによって、低速の装置へのアクセスがＣＰＵ４０のホストバス２４上の高速装置へのアクセスを妨げないようになっている。ＰＣ内で通常使用される低速メモリ装置には、ＣＭＯＳ３２メモリ等の不揮発性データ及びステータス記憶装置、及び、いくつか例を挙げるとＲＯＭ、ＥＥＰＲＯＭまたはフラッシュ等の装置に記憶されたＢＩＯＳ１４がある。一般に、キャッシュメモリ４２、システムＲＡＭ２２、ＣＭＯＳ３２及びＢＩＯＳ１４は、ＣＰＵの「メモリ」１２と呼ばれる。ＰＣ１０が立上げられるかまたはリセットされた時、ＢＩＯＳ１４に記憶されているＣＰＵ命令が実行され、好ましくはＢＩＯＳ１４の内容がシステムＲＡＭ２２のある領域に転送されることによって、ＣＰＵ４０がより高速に実行することができるようになる。このＢＩＯＳ１４には、本発明と共に使用される２つの重要なプログラム、すなわちパワーオン自己テスト（ＰＯＳＴ）１６コードと、ＭＳ−ＤＯＳ／ＷｉｎｄｏｗｓコンピュータにおいてＩＮＴ  １３Ｈと呼ばれるソフトウェア割込みハンドラを介してアクセスされるルーチン等のディスク読出しサブルーチンが含まれている。通常、大抵のＰＣでは、大容量記憶装置３０はＩ／Ｏバス２８に接続されている。なお、当業者は、大容量記憶装置が時にはホストバス２４上にもあり、それもまた本発明の範囲及び精神に含まれるということを認めるであろう。この大容量記憶装置３０には、１つまたは複数のフロッピディスクドライブ、ハードディスクドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、それに加えてＰＣＭＣＩＡ、カードバスディスクドライブ及び半導体メモリ等の他の専用の大容量記憶装置がある。また、Ｉ／Ｏバス２８により、ＣＰＵは他のＩ／Ｏ装置３４に接続することができ、好ましくはキーボード３６、或いはいくつか例を挙げるとマウス、トラックポイント、ペンまたはタッチパッド等の他の入力装置からの入力を受信することができる。
【００１６】
図２は、少なくとも２つのパーティション、すなわちブート可能ＯＳパーティション４８及びハイバネーションパーティション５０を有する、パーソナルコンピュータ１０用の大容量記憶装置３０のフォーマットを示すための、好ましい実施の形態を示す図である。大容量記憶装置３０は、その媒体上に、各パーティションの先頭ロケーション、終端ロケーション、サイズ及びブート可能状態を示すために使用される通常のパーティションテーブル４４を有している。各パーティションの先頭ロケーションは、各パーティションのブートレコード４６のロケーションでもある。このブートレコード４６は、コンピュータ１０を大容量記憶装置３０の各パーティションからブートすることができるようにするコードを含んでいる。各パーティションの終端ロケーションは、各パーティションによって使用される大容量記憶装置の最後のセクタのロケーションである。各パーティションは連続した１組のセクタであり、ブートレコード４６から始まって最後のセクタで終る。ブート可能ＯＳパーティション４８の場合、最後のセクタは、ＯＳパーティション最終セクタ５２として示されており、ハイバネーションパーティション５２の場合、最終セクタは最終ハイバネーションセクタ５４として示されている。
【００１７】
ブート時に、ＢＩＯＳ１４は、ＰＣをブートするために大容量記憶装置のいずれのパーティションを使用すべきかを判断しなければならない。例えば、一般的なＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ  ＰＣでは、ユーザがハードディスクにパーティションを切るためにＦＤＩＳＫユーティリティを使用した場合、ハードディスクに設けることのできるパーティションは４つまでである。これらのパーティションの１つだけをアクティブまたは「ブート可能」としてセットすることができる。ＢＩＯＳ１４は、パーティションテーブルからマスタブートレコード（ＭＢＲ）をロードし、それに制御を移す。すると、ＭＢＲは、パーティションテーブル中で示されている「ブート可能」パーティションを選択してオペレーティングシステムをロードする。ＰＣ１０の電源がオフした時またはＰＣ１０がスリープ状態となった時に、ＢＩＯＳ１４により、ハイバネーションパーティション５０を用いてＰＣのメモリの内容が保存される。このハイバネーションモードを用いて、ＰＣ１０は、ユーザが電源を切る前に設定していたＰＣ１０の状態に迅速に戻ることができる。この技術により、ユーザが、ＰＣ１０がブートするために待たなければならない時間、及びユーザがＰＣ１０で作業していた状態にＰＣ１０を再構成するために必要な時間を最小化することができる。このハイバネーションパーティション５０は、オペレーティングシステムによってサポートされない予約されていたタイプのパーティションを用いることにより、ブートについてはアクティブではないものとして表示され、またオペレーティングシステムから隠されている（すなわち、使用できない）。
【００１８】
本発明のハイバネーションパーティション５０は、従来のＰＣに対して変更されたハイバネーションパーティションであって、この変更されたハイバネーションパーティションは、保護されたブート可能ユーティリティプログラム領域５６をハイバネーションデータ記憶領域に組込んでいる。この変更されたハイバネーションパーティション５０のアクティブブート可能状態は、従来のＰＣのハイバネーションパーティションのように非アクティブつまり「ブート不可能」にセットされる。オペレーティングシステム等のブート可能プログラム６６を含むブート可能ＯＳパーティション４８のアクティブブート可能状態は、ここでも、従来のＰＣのようにアクティブつまり「ブート可能」にセットされる。ブート可能ユーティリティプログラム領域５６をハイバネーションデータ記憶領域内に入れておくことにより、パーティションテーブル４４の残りの２つのスロットは、拡張ファイルシステムまたは他のオペレーティングシステム及びそれら各々のファイルシステムのいずれにも使用のままである。しかしながら、ブート可能ユーティリティプログラム領域５６はパーティションテーブル中でブート可能でないというフラグが立っているため、ブート可能ユーティリティプログラムは通常のブート処理を用いてブートすることは不可能であり、ユーザからは使用できず、そのため偶発的な消去、破壊及び変更が防止される。
【００１９】
このハイバネーションパーティション５０はＢＩＯＳによってしかアクセスされないため、ユーザまたは不正動作したソフトウェアがそのユーティリティソフトウェアをいじったり、変更したりまたは除去したりすることができず、そのためセキュリティ機能が提供される。一実施形態では、ハイバネーションパーティション５０の最初の数メガバイトは、単純なＯＳ（ＭＳ−ＤＯＳ等）及びユーティリティプログラム及び必要な関連ファイルを有するブート可能ユーティリティプログラム領域５６部分である。あるいは、オペレーティングシステムなしでブートできる独立型のユーティリティプログラムが、ハイバネーションパーティション５０に記憶される。ハイバネーションパーティション５０のブート可能部分の終端部の後には、ハイバネーションデータ記憶領域５１がある。この変更されたハイバネーションパーティション５０は、実質的に、ブート可能ユーティリティプログラム領域５６とハイバネーションデータ記憶領域５１に更に分けられる。変更されたハイバネーションパーティション５０は、パーティションテーブルではブート不可能であると示されたままである。一実施形態では、ユーザは、ＰＣのブート時に、好ましくはファンクションキーＦ１０等のホットキーを使用してユーティリティプログラムを起動する。なお、ユーティリティプログラムを起動するためにＰＣに対して他の入力シーケンスを使用することも可能であり、これもまた本発明の精神及び範囲に含まれる。
【００２０】
いくつかの種類のアプリケーションでは、ユーティリティプログラムのこの保護された記憶領域を使用することができるようにしている。１つの例は、完全な機能を備えた（ｆｕｌｌｙ  ｆｕｎｃｔｉｏｎａｌ）診断自己テストプログラムである。これは、ハードウェアのより徹底的なテストを行い、ＰＯＳＴルーチンよりも詳しく故障の報告を行うものである。ハードウェア故障の検出及び報告に関して高レベルの信頼性を提供する診断テストを行う機能を持つことは、ユーザ及びＰＣメーカにとって非常に有益である。しばしば、ユーザには、所与の問題がハードウェアの欠陥であるか、コンピュータの構成間違いであるか、またはソフトウェアのバグであるかを判断することは困難である。ハードウェアに欠陥がある場合、それを修理のためにメーカに戻さなければならず、ユーザがＰＣを使用できなくなる。更に、その修理が保証によってカバーされる場合は、コンピュータをテスト、診断及び修理するための費用を製造業者が払わなければならない。この診断自己テストプログラムにより、ユーザに対してコンピュータが正常に機能していると断言することができれば、製造業者は経費を節約し、ユーザはコンピュータをサービスのために戻す必要がなくなる。
【００２１】
本発明を利用することができる他のアプリケーションは、ＢＩＯＳ更新プログラムである。経費を更に低減するために、マスクＲＯＭまたはプログラマブルＲＯＭ（ＰＲＯＭ）等のプログラム固定式メモリ装置を用いて、ＰＣ内に最小のＢＩＯＳを保持する。完全な機能を備えたＢＩＯＳは、ハイバネーションパーティション５０のブート可能ユーティリティプログラム領域５６に記憶する。ブート時、最小ＢＩＯＳが大容量記憶装置３０のハイバネーションパーティション５０に記憶されたＢＩＯＳをＤＲＡＭにロードし、その後そのＤＲＡＭにロードされたＢＩＯＳに制御を渡す。ユーザが大容量記憶装置に記憶されたＢＩＯＳを更新することができるようにする、別のプログラムが提供される。
【００２２】
ユーザがディスクに複数のオペレーティングシステムを記憶している場合、暗号化／解読を用いて、１つのＯＳに埋込まれたウイルスが別のＯＳを保持するパーティションに記憶されたデータにアクセスしそれを攻撃することを防止することにより、補助的な非アクティブパーティションを更に安全にすることが望ましい場合がある。すなわち、ユーザが暗号化／解読ルーチンを破壊または変更することができないように、及び、暗号化／解読ルーチンをユーザのオペレーティングシステムによるロードの必要なしでこのルーチンが大容量記憶装置のデータに直接操作することができるように、暗号化／解読ルーチンをＰＣ上で使用可能にすることが望ましい。後者の要請の理由は、オペレーティングシステムがこのルーチンを開くとウイルスプログラムによってオペレーティングシステムが危険に陥るかもしれないからである。本発明は、まさにこのようなセキュリティ対策方法を提供するものであり、この方法によれば、暗号化／解読プログラムがハイバネーションパーティション５０に格納されて隠され、ブート時に、大容量記憶装置のパーティションを暗号化または解読するためにユーザまたはシステム管理機構によって起動される。
【００２３】
また、暗号化／解読を用いる場合と同様な方法によって、特別なウイルスチェック及びファイル修復を提供するセキュリティの高いユーティリティプログラムが実現できる。ハイバネーションパーティション５０にウイルスチェックソフトウェアを配置し、ユーザあるいは存在するかもしれないウイルスからは手を出せないようにすることにより、起こり得る侵入に対して免疫性が更に増す。
【００２４】
本発明によって提供されるセキュリティの高いユーティリティプログラムスペースに対する他のアプリケーションは、セキュリティの高いユーティリティプログラムをブート時にＢＩＯＳ１４によって自動的に起動することにより、従来のＰＣのＢＩＯＳにおいて一般に見られるよりも安全なパスワード保護機能を提供するユーザ認証プログラムを提供するというものである。大抵のＢＩＯＳは使用可能なコードスペースの容量が制限されている。セキュリティの高いプログラムをブートしロードすることができるようにすることによって、２つ例を挙げるとコンピュータのマイクロフォンを使用する音声認識及びコンピュータのタッチパネルを使用する署名認識等の、別のセキュリティ認証プロトコルが実現される。
【００２５】
図３は、新たにフォーマットされたハイバネーションパーティション５０を用いて大容量記憶装置３０を生成するために使用する処理のフローチャートである。同図において、各ブロックの動作は以下のようになっている：
１７０：１番目のパーティションを、ブート可能プログラムを入れることができるようにするようにフォーマットする
１７２：２番目のパーティションを、ハイバネーションデータ記憶領域としてフォーマットする
１７４：第２のパーティションの一部を、非アクティブブート可能プログラムとしてフォーマットする
ブロック１７０において、ＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓ等のブート可能なオペレーティングシステム及びその各々のファイルシステムのために、第１のパーティションがフォーマットされる。そして、ブロック１７２において、大容量記憶装置３０が第２のパーティションを持つようにフォーマットされて、多数の連続したディスクセクタの予約領域であるハイバネーションデータ記憶領域を置くことができるようにする。次に、ブロック１７４において、大容量記憶装置３０の第２のパーティションの一部がブート可能ユーティリティプログラム領域５６を含むように、第２のパーティションが再フォーマットされる。このブート可能ユーティリティプログラム領域５６はアクティブであるというフラグが立てられないので、「ブート不可能」な領域である。ＢＩＯＳだけが、ハイバネーションモードに入る時及びハイバネーションモードから出る時にハイバネーションデータ記憶領域から／へデータを読書きするソフトウェアであるため、ハイバネーションデータ記憶領域の先頭アドレスを動かすのは容易である。ユーザにとっての最終的な効果は、ハイバネーションパーティション５０はブート可能ユーティリティプログラム領域５６を組込むための余分なセクタを含むが、記憶用の他の２つのパーティションが使用できなくなるのはこれらの余分なセクタだけである、ということである。変更されたハイバネーションパーティション５０が非アクティブであるとしてフラグが立てられ、ブート可能なオペレーティングシステムによってアクセスが不可能であるため、このユーティリティプログラムを起動して実行するようにＢＩＯＳ１４を変更しなければならない。
【００２６】
図４は、本発明の好ましい実施の形態を実現するＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓアーキテクチャを使用するＰＣのＢＩＯＳの一例としてのブートシーケンスのフローチャートである。同図の各ブロックの動作は以下の通りである：
１００：ＣＰＵリセット
１０２：スタートアップルーチンを実行し、リセットオリジンを獲得する
１０４：プロテクトモードか？
１０６：リアルモードに戻す
１０８：ハイバネーションビットがセットされているか？
１０９：ハイバネーションパーティションからメモリを復元する
１１０：ＰＯＳＴテストを開始する
１１２：コールドブートか？
１１３：ステータスインディケータをクリアする
１１４：短いＰＯＳＴを実行する
１１５：大容量記憶装置読み出し横取りトラップを設定する（オプション）
１１６：特別なキーの押下があったか？
１１８：ステータスインディケータをセットする
１２０：オペレーティングシステムをロードする
１２１：変更された大容量記憶読出しルーチンを実行する
１２２：ＴＳＲをインストールし、ソフトウエア調整を実行する
１２４：ユーザが選択したプログラムを実行する
１２６：コンピュータが準備完了となる
最初に、ブロック１００において、コンピュータが立上げられるか、またはＣＰＵ４０がリセットされる。そして、ブロック１０２において、ＢＩＯＳ１４が、特定の電子チップセットを適切に構成するために必要なスタートアップルーチンを実行した後、リセットの起点を取り出す。次に、ブロック１０４において、そのリセットがチェックされ、ＣＰＵをプロテクトモードから移行するべきか否かが判断される。そうである場合、プログラムフローはブロック１０６に進み、リアルモードに戻して、ＢＩＯＳ１４はブロック１２６へ飛んで制御を以前にロードされたオペレーティングシステムに戻す。一方、ブロック１０８において、リセットの起点がチェックされ、ハイバネーションビットをチェックすることにより、ＰＣ１０がハイバネーションモードから目覚めるべきか否かが判断される。そうである場合、プログラムフローはブロック１０９に進み、大容量記憶装置３０のハイバネーションパーティション５０に以前記憶されたデータが読出されてシステムＤＲＡＭ２２に書込まれ、その後制御は復元されたオペレーティングシステムに戻される。一方、ブロック１１２において、ＣＭＯＳ３２がチェックされて完全なＰＯＳＴコールドブートが実行されるべきか否かが判断される。そうである場合、ブロック１１０において完全なＰＯＳＴテストが実行され、個々のシステム機能が完全に構成されテストされる。完全なＰＯＳＴコールドブートが実行されるべきでない場合、プログラムフローはブロック１１３及びブロック１１４に進み、短いＰＯＳＴシーケンスが実行されてシステムのセットアップが終了する。ブロック１１３では、好ましくはＣＭＯＳメモリ３２のステータスビットを用いて実装されるステータスインジケータがクリアされる。ブロック１１４における短いＰＯＳＴには特別なコードが含まれており、これにより、ＰＣ１０のユーザが、ブート可能ＯＳパーティション４８のオペレーティングシステムではなくブート可能ユーティリティプログラム領域５６のユーティリティプログラムをロードすべきであるということを、ＢＩＯＳ１４に対して指示することができる。ブロック１１４の短いＰＯＳＴテストの間に種々の間隔で、判断ブロック１１６において、予め決められた入力シーケンスがユーザによって入力されたか否かが判断される。ある実施の形態では、この入力シーケンスはキーボード３６のＦ１０キーの押下である。この入力シーケンスが検出されるとブロック１１８においてステータスインジケータがセットされ、検出されなければブロック１１４の短いＰＯＳＴテストが続行される。
【００２７】
本発明の他の実施の形態では、ブロック１１４における短いＰＯＳＴの後、プログラムフローはオプションのルーチン（図７Ａ参照）に進み、ブロック１１５において、ＢＩＯＳの大容量記憶読出し機能に対する呼出し（例えば、ＭＳ−ＤＯＳ  ＰＣにおけるＩＮＴ  １３Ｈ）を「横取り」する。そして、プログラムはブロック１２０においてオペレーティングシステムのロードを開始する。オペレーティングシステムがロードされている時、ＢＩＯＳ大容量記憶読出しルーチンに対しいくつかのプログラム呼出がなされ、大容量記憶装置のいずれのパーティションをブートすべきかが判断される。このＢＩＯＳ大容量記憶読出ルーチンは、好ましい実施の形態及び他の実施の形態（図６及び図７Ｃ参照）では変更され、それによってブロック１２１に示すように、大容量記憶装置のパーティションテーブルからの読出が検出され変更される。オペレーティングシステムがロードされた後、通常、ブロック１２２において様々な常駐プログラム（ＴＳＲ）、ソフトウェアドライバ、及びブロック１２４において他のソフトウェア調整が実行され、ブロック１２６においてユーザに対しコンピュータが準備完了状態となる。
【００２８】
図５は、図４に示す一例としてのＭＳ−ＤＯＳ／ＷｉｎｄｏｗｓＰＣブロック１２０のフローチャートである。同図の各ブロックの動作を以下に示す：
１３０：ＩＮＴ  １３Ｈ：  ＦＤＤのブートレコードを読出す
１３２：読出しが成功したか？
１３４：ＦＤＤからブートする
１３６：ＩＮＴ  １３Ｈ：  ＨＤＤのブートレコードを読出す
１３８：読出しが成功したか？
１４０：ＨＤＤから読出す
１４２：ブートエラー処理へ行く
このブロック１２０では、ＢＩＯＳ１４がオペレーティングシステムをブートしようとする。まず、ブロック１３０において、ＢＩＯＳ１４は、ＩＮＴ  １３Ｈソフトウェア割込みルーチンを呼出してフロッピディスクドライブ（ＦＤＤ）のブートレコードを読出すことにより、大容量記憶装置読出しを実行しようとする。ブロック１３２において読出しが正常に行われると、ブロック１３４において、ＢＩＯＳ１４は、ＦＤＤからのオペレーティングシステムをブートする。読出しが正常に行われなかった場合、ブロック１３６において、別の大容量記憶装置読出しが実行され、ハードディスクドライブ（ＨＤＤ）からマスタブートレコード（パーティションテーブル）を読出そうとする。この読出しが正常に行われると、ＢＩＯＳ１４はブロック１４０に進み、ＨＤＤを使用してオペレーティングシステムをブートする。一方、ＨＤＤからのマスタブートセクタの読出しが正常に行われなかった場合、ＢＩＯＳ１４はブロック１４２に進み、ブートエラー処理により、ＢＩＯＳ１４がＰＣ１０をブートすることができなかったということをＰＣ１０のユーザに警告する。なお、ブート可能性についてチェックされる対象としてＦＤＤとＨＤＤのみが示されているが、ＣＤ−ＲＯＭ及び他の交換可能またはリムーバブル大容量記憶装置を含むようにＢＩＯＳの更なる改良は進められており、これもまた本発明の精神及び範囲内に含まれている。
【００２９】
図６は、変更された大容量記憶読出しサブルーチンの本発明の一例としての実施の形態において使用されるロジックのフローチャートである。同図において、各ブロックの動作は以下の通りである：
１５０：呼び出しプログラムからパラメータを読み取る
１５２：大容量記憶装置中のパラメータによって与えられたロケーションから読出す
１５４：ステータスインディケータを読み取る
１５６：代替ブートか？
１５８：パーティションテーブルが記憶されているロケーションか？
１６０：第１パーティションがブート可能でなく第２パーティションがブート可能であるように、メモリ中のパーティションテーブルを変更する
１６２：パーティションテーブル呼び出しプログラムに戻る
このロジックは、大容量記憶装置３０のハイバネーションパーティション５０に記憶されたブート可能ユーティリティプログラム領域５６がブートできるようにする。まず、ブロック１５０において、呼出しプログラムからパラメータが取り出される。このパラメータは、大容量記憶装置３０から読出すべき１つまたは複数のセクタのロケーションを記述するために使用される。ブロック１５２において、このパラメータを用いて、大容量記憶装置３０の所望のロケーションが読出される。そして、ブロック１５４においてステータスインジケータを取出し、判断ブロック１５６において比較されて、ブート可能ユーティリティプログラム領域５６をブートする必要があるか否かが判断される。ブートする必要がない場合には、ブロック１６２において、大容量記憶装置３０から読み出されたデータを呼出しルーチンに戻す。一方、ブート可能ユーティリティプログラム領域５６をブートする必要がある場合、ブロック１５８において、パラメータを、パーティションテーブル４４が記憶されているロケーションと比較する。パラメータがパーティションテーブル４４のロケーションと一致しない場合、大容量記憶装置３０から読出されたデータを呼出しプログラムに戻す。パラメータがパーティションテーブル４４のロケーションと一致する場合、大容量記憶装置３０から読出されたデータがパーティションテーブルの内容を含んでいるので、ブロック１６０において、これらの内容を変更する。読出されていたパーティションテーブル４４のデータは、この変更の結果、第１のパーティション、すなわちブート可能ＯＳパーティション４８が非アクティブつまり「ブート不能」、第２のパーティションすなわちハイバネーションパーティション５０がアクティブつまり「ブート可能」となる。そして、ブロック１６２において、パーティションテーブルの読出されて変更された内容が呼出しプログラムに戻される。本発明において必須ではないが、パーティションテーブルの読出され変更された内容を戻すだけで、別の保護機能が追加される。仮に大容量記憶装置３０の実際のパーティションテーブルを変更した場合、ユーティリティプログラムによってマシンがハングアップするかまたは他の障害が発生すると、コンピュータは元のオペレーティングシステムを適切に再ブートすることができないかもしれない。更に、このようなことが起った場合、大容量記憶装置を取り外して別のＰＣに設置しても、それは適切にブートしないかもしれない。
【００３０】
図７Ａ〜図７Ｃは、大容量記憶読出しルーチンを変更する代りに、大容量記憶読出しルーチン呼出を横取りして新たなサブルーチンに置換えた本発明の他の実施の形態のフローチャートである。この新たなサブルーチンは、大容量記憶読出しルーチンを呼出して、ブート可能ユーティリティプログラム領域５６がブートすべきである場合に、その結果を変更する。最近の大抵のＢＩＯＳでは、大容量記憶読出しサブルーチンを横取りすることにより、ＢＩＯＳが最初にコーディングされた時には考えられておらずまた実現されていなかった将来の大容量記憶装置を付加することができる。本実施の形態の利点は、大容量記憶装置から挿入及び取外しが可能なリムーバブル媒体を有するものを含む新たな大容量記憶装置をＰＣに付加することが可能であり、好ましいブートドライブとすることができ、それにもまた本発明を実施できるということである。
【００３１】
図７Ａは、大容量記憶読出しルーチンをインタセプトする好ましい方法の設定のフローチャートである。同図の各ブロックの動作は以下の通りである：
２００：ディスク読出しサブルーチンの読出しロケーションを第１のロケーションから読出す
２０２：ディスク読出しサブルーチンの読出しロケーションを第２のロケーションに記憶する
２０４：第１のサブルーチンのロケーションを第１のロケーションに記憶する
ブロック２００において、第１のメモリロケーションから大容量記憶読出しルーチンのロケーションを読出す。そして、ブロック２０２において、大容量記憶読出しルーチンのロケーションを第２のメモリロケーションに記憶する。次に、ブロック２０４において、新たなサブルーチンのロケーションを第１のメモリロケーションに記憶し、それにより大容量記録読出しルーチンに対する呼出しを横取りする。
【００３２】
図７Ｂは、第２のパーティション、すなわちハイバネーションパーティション５０、のブート可能ユーティリティプログラム領域５６をブートする必要があるか否かを判断する設定のブロック２０６から始まるフローチャートである。同図の各ブロックの動作は以下の通りである：
２０６：第２のパーティションからブートするか？
２０８：第２のパーティションからブートするために、ステータスインディケータを記憶する
２１０：戻る
ブートする必要がある場合、ブロック２０８において、第２のパーティションがブート可能パーティションであるということを示すようにステータスインジケータがセットされる。
【００３３】
図７Ｃは、本発明の他の実施の形態における新しいプログラムのフローチャートであり、このプログラムは大容量記憶読出しルーチンの代りに呼出され、それによって大容量記憶読出しルーチンを「横取り」するものである。同図の各ブロックの動作は以下の通りである：
２１９：呼び出しプログラムからパラメータを得る
２２０：第２のロケーションを読出して、ディスク読出しサブルーチンのロケーションを得る
２２２：ディスク読出しサブルーチンを呼び出して、結果を戻す
２２４：記憶されているステータスインディケータを読出す
２２６：第２のパーティションからブートする必要があるか？
２２８：ブートディスク上のパーティションテーブルは読出されたか？
２３０：第１のパーティションがブート不能であり第２のパーティションがブート可能であることを示すように結果を変更する
２３２：結果を呼び出しプログラムへ戻す
ブロック２２０において、第２のメモリロケーションを読出し、元の大容量記憶読出しルーチンのロケーションを取出す。そして、ブロック２２２において、大容量記憶読出しルーチンを呼出して大容量記憶装置３０中の、呼出しプログラムから新たなルーチンに渡されブロック２１９で取得されたパラメータによって決定されるロケーションを読出す。次に、ブロック２２４において、記憶されていたステータスインジケータを読出し、ブロック２２６において、それを用いて第２のパーティションをブートする必要があるか否か判断する。第２のパーティションをブートする必要がない場合、ブロック２３２において、大容量記憶装置から読出された結果をそのまま呼出しプログラムに戻す。一方、第２のパーティションをブートする必要がある場合、ブロック２２８においてパラメータをチェックし、大容量記憶装置のパーティションテーブルが読出されたか否かが判断される。読出されていない場合、大容量記憶装置から読出された結果をそのまま呼出しプログラムに戻す。一方、パーティションテーブルを読出していた場合、ブロック２３０において、第１のパーティションは非アクティブまたは「ブート不可能」であり、第２のパーティションはアクティブまたは「ブート可能」であるということを示すように、読出された結果を変更する。そして、ブロック２３２において、パーティションテーブルの変更された結果を呼出しプログラムに戻す。
【００３４】
本発明の利点は、ＰＣのユーザがブート時に、完全な診断スーツ等のセキュリティの高いユーティリティプログラムを実行することができるということである。また、そのセキュリティの高いユーティリティプログラムを提供するために製造コストが余分にかかることも、またディスクパーティションを余計に使ってしまうこともなく、かつ、ユーザが気付く程の大容量記憶スペースを消費することもない。更に、このセキュリティの高いユーティリティプログラムは偶発的に消去されることがないように保護されている。なお、本発明の特定の実施の形態について示し説明したが、本発明は特許請求の範囲のみによって限定されるものである。
【００３５】
以下に本発明の実施態様の例を列挙する。
【００３６】
〔実施態様１〕中央処理装置（ＣＰＵ）（４０）と、
前記ＣＰＵ（４０）に接続されたメモリ（２２、１４）と、
前記ＣＰＵ（４０）に接続された入力／出力（Ｉ／Ｏ）サブシステム（２６）と、
前記Ｉ／Ｏサブシステム（２６）に接続され、第１のパーティション（４８）と、ハイバネーションデータ記憶領域（５１）を有する第２のパーティション（５０）と、前記第１のパーティション（４８）が前記コンピュータ（１０）のブートに対してアクティブであり前記第２のパーティション（５０）が前記コンピュータ（１０）のブートに対してアクティブでないということを示すパーティションテーブル（４４）を備えた大容量記憶装置（３０）と、
前記コンピュータ（１０）をブートするためにいずれのブート可能パーティションを使用すべきかを選択する、前記Ｉ／Ｏサブシステム（２６）と前記ＣＰＵ（４０）の間のロジック手段と、
前記ロジック手段に応答して、前記パーティションテーブル（４４）を読出すことができ、かつ選択されたパーティションが前記ＣＰＵ（４０）に関して前記コンピュータ（１０）をブートするためにアクティブであると示されるように前記読出されたパーティションテーブルを変更することができる、前記メモリ（２２、１４）内の第１のプログラムと、
を設けたことを特徴とするコンピュータ（１０）。
【００３７】
〔実施態様２〕前記大容量記憶装置（３０）に配置された前記パーティションテーブル（４４）は変更されないことを特徴とする実施態様１記載のコンピュータ（１０）。
【００３８】
〔実施態様３〕前記ロジック手段は、
前記Ｉ／Ｏサブシステム（２６）に接続され、入力シーケンスを受信することができる入力装置（３６）と、
予め定められた入力シーケンスを受信したことを検出することができる前記メモリ（２２、１４）内の第２のプログラムと
を設けたことを特徴とする実施態様１記載のコンピュータ（１０）。
【００３９】
〔実施態様４〕前記第２のパーティション（５０）は、前記第２のパーティション（５０）が前記ＣＰＵ（４０）に対してアクティブであるとされた後に実行が可能であるユーティリティプログラム（５６）を含むことを特徴とする実施態様１記載のコンピュータ（１０）。
【００４０】
〔実施態様５〕前記ユーティリティプログラム（５６）は診断テストプログラムであることを特徴とする実施態様４記載のコンピュータ（１０）。
【００４１】
〔実施態様６〕前記メモリ（２２、１４）はＢＩＯＳを含み、前記ユーティリティプログラム（５６）は前記ＢＩＯＳを更新することができることを特徴とする実施態様４記載のコンピュータ（１０）。
【００４２】
〔実施態様７〕前記ユーティリティプログラム（５６）は前記第１のパーティション（４８）を暗号化及び解読することができることを特徴とする実施態様４記載のコンピュータ（１０）。
【００４３】
〔実施態様８〕前記ユーティリティプログラム（５６）は前記メモリ（２２、１４）及び前記第１のパーティション（４８）のウイルスチェックを行うことができることを特徴とする実施態様４記載のコンピュータ（１０）。
【００４４】
〔実施態様９〕前記第１のパーティション（４８）はデータ及びプログラムを含み、前記ユーティリティプログラム（５６）はブート可能な前記第１のパーティション（４８）に記憶されたデータ及びプログラムへのアクセスを制限するユーザ認証プログラムであることを特徴とする実施態様４記載のコンピュータ（１０）。
【００４５】
〔実施態様１０〕呼出し元プログラムからの前記コンピュータ（１０）のブートシーケンスを変更するプログラムにおいて、
前記呼出し元プログラムは１組のパラメータを前記ブートシーケンスを変更するプログラムに渡し、
前記コンピュータ（１０）は、第１のパーティション（４８）と、ハイバネーションデータ記憶領域（５１）を有する第２のパーティション（５０）と、前記第１のパーティション（４８）がブート可能であり前記第２のパーティションはブート不能であることを示すパーティションテーブル（４４）と
を備えたブートディスク（３０）を有し、
一組のパラメータを用いてブートディスク（３０）を読出し一組の結果を戻すステップ（１５２）と、
前記一組のパラメータを第１の値と比較して前記パーティションテーブル（４４）が読出されたと判断するステップ（１５８）と、
前記ブートディスクの前記パーティションテーブル（４４）の内容を変更することなく、前記第１のパーティション（４８）がブート不能であり、前記ハイバネーションデータ記憶領域（５１）を有する第２のパーティション（５０）がブート可能であることを示すように、前記戻された一組の結果を変更するステップ（１６０）と、
前記変更された一組の結果を前記呼出し元プログラムに戻すステップ（１６２）と
を含み、
前記コンピュータ（１０）は前記第１のパーティション（４８）でなく前記第２のパーティション（５０）を用いてブートすることを特徴とするプログラム。
【００４６】
〔実施態様１１〕呼出し元プログラムからの前記コンピュータ（１０）のブートシーケンスを変更する方法において、
前記呼出し元プログラムは１組のパラメータを前記ブートシーケンスを変更するプログラムに渡し、
前記コンピュータ（１０）は、第１のパーティション（４８）と、ハイバネーションデータ記憶領域（５１）を有する第２のパーティション（５０）と、前記第１のパーティション（４８）がブート可能であり前記第２のパーティションはブート不能であることを示すパーティションテーブル（４４）と
を備えたブートディスク（３０）を有し、
一組のパラメータを用いてブートディスク（３０）を読出し一組の結果を戻すステップ（１５２）と、
前記一組のパラメータを第１の値と比較して前記パーティションテーブル（４４）が読出されたと判断するステップ（１５８）と、
前記ブートディスクの前記パーティションテーブル（４４）の内容を変更することなく、前記第１のパーティション（４８）がブート不能であり、前記ハイバネーションデータ記憶領域（５１）を有する第２のパーティション（５０）がブート可能であることを示すように、前記戻された一組の結果を変更するステップ（１６０）と、
前記変更された一組の結果を前記呼出し元プログラムに戻すステップ（１６２）と
を含み、
前記コンピュータ（１０）は前記第１のパーティション（４８）でなく前記第２のパーティション（５０）を用いてブートすることを特徴とする方法。
【図面の簡単な説明】
【図１】パーソナルコンピュータの最小ブロック図を示す。
【図２】本発明の好ましい実施の形態による大容量記憶領域の編成を示す図である。
【図３】図２に示す本発明の好ましい実施の形態で使用される大容量記憶装置を用意するために必要な好ましいステップのフローチャートである。
【図４】図２に示す変更されたハイバネーションファイルを有するパーソナルコンピュータをブートするために使用される、本発明の好ましい実施の形態の変更されたステップを含む一例としてのブート処理を示すフローチャートである。
【図５】従来的なＭＳ−ＤＯＳ／Ｗｉｎｄｏｗｓのパーソナルコンピュータのオペレーティングシステムを見つけてロードするために必要な一例としてのステップを示すフローチャートである。
【図６】本発明の好ましい実施の形態において、大容量記憶装置のパーティションテーブルから読出されたデータを変更するサブルーチンのフローチャートである。
【図７Ａ】本発明の他の実施の形態において、大容量記憶読出しサブルーチンへのアクセスを遮るために使用されるサブルーチンのフローチャートである。
【図７Ｂ】本発明の好ましい他の実施の形態においてステータスインジケータをセットアップするために使用されるサブルーチンのフローチャートである。
【図７Ｃ】本発明の他の実施の形態において図７Ａ及び図７Ｂのサブルーチンと共に使用され、大容量記憶読出しサブルーチンから戻される結果を呼出し変更するために使用されるインターセプトサブルーチンのフローチャートである。
【符号の説明】
１４：ＢＩＯＳ
２２：システムＲＡＭ
２６：バスコントローラ
３０：大容量記憶装置
３６：キーボード
４０：ＣＰＵ
４４：パーティションテーブル
４８：ブート可能ＯＳパーティション
５０：ハイバネーションパーティション
５１：ハイバネーションデータ記憶領域
５６：ブート可能ユーティリティプログラム領域
【図１】
0003539907.tif 000002
【図２】
0003539907.tif 000003
【図３】
0003539907.tif 000004
【図４】
0003539907.tif 000005
【図５】
0003539907.tif 000006
【図６】
0003539907.tif 000007
【図７Ａ】
0003539907.tif 000008
【図７Ｂ】
0003539907.tif 000009
【図７Ｃ】
0003539907.tif 000010