JP3539907B2 - ブート可能プログラムを備えたコンピュータ - Google Patents
ブート可能プログラムを備えたコンピュータ Download PDFInfo
- Publication number
- JP3539907B2 JP3539907B2 JP2000014376A JP2000014376A JP3539907B2 JP 3539907 B2 JP3539907 B2 JP 3539907B2 JP 2000014376 A JP2000014376 A JP 2000014376A JP 2000014376 A JP2000014376 A JP 2000014376A JP 3539907 B2 JP3539907 B2 JP 3539907B2
- Authority
- JP
- Japan
- Prior art keywords
- partition
- computer
- program
- mass storage
- boot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/4408—Boot device selection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
【0001】
【発明の属する技術分野】
本発明はコンピュータシステムに関し、特に、セキュアユーティリティプログラムにディスクパーティションをハイバネーションデータと共有させることにより、セキュアユーティリティプログラムを格納しブートすることができるコンピュータに関する。
【0002】
【従来技術及びその問題点】
コンピュータメーカは、パーソナルコンピュータ(PC)のユーザに、新たなテクノロジ及び特徴の一様な流れを提供し続けている。しかしながら、PCがより複雑化するに従い、市場の圧力により、PCの使用法及び操作を一層ユーザフレンドリにすることは不可避である。そうすることによって、技術に精通していない更に多くのユーザがPCを購入し、それによって更に大きな市場を創製するだろう。更に、コンピュータメーカがPCのコストを下げることにより、より多くのユーザがPCを、技術的な驚異ではなく単なる道具と考えるようになってきている。また、このように考え方が変化することにより、ユーザは、製品の品質及びプログラムやファイルの安全性に関しても一層大きな期待を持つようになる。大抵の装置は非常に信頼性が高く、PCについてとかく言われるような多大な保守が必要になると言うようなことはない。通常、装置が故障した場合、ユーザまたはサービス技術者は、それを非常に迅速に診断して修理することができる。従って、コンピュータメーカは、PCの故障発生の防止を支援するか、あるいは、故障した場合にユーザまたはサービス技術者がPCを迅速に診断して修理するのを支援するユーティリティプログラムを提供することを余儀なくされている。
【0003】
大抵のPCはBIOSと呼ばれる低レベルソフトウェアを搭載して出荷される。これは、PCが起動されるかまたはリセットされた時に最小限の自己テストを提供する。これらの自己テストはPCが1980年初頭に最初に設計された時に書かれたものであり、このようなテストはそもそもコンピュータメーカ及びそれらのサービス部門のために行われる。初期のPCのBIOSでは記憶スペースが制限されていたため、わずかな量の自己テストしか実行されていなかった。コンピュータメーカだけが、フロッピドライブを使用してPCにロードされる更に完全な診断自己テストを実行するために必要なテストを実行していた。これらの完全な診断自己テストは複雑であるため、通常はユーザが行えるようにはなっていなかった。従って、ユーザのPCが適切に機能しなかった時、そのPCはメーカのサービスセンタに戻されるか、コンピュータ技術者がオフィスまたは家に出向かなければならなかった。ユーザに完全な自己テストプログラムを提供することの問題の1つは、自己テストプログラムはフロッピディスクフォーマットで与えられた場合、破損または紛失する可能性があるということであった。また、自己テストプログラムをそのメーカが製造したものではないPCに使用した場合、そのPCが完全に誤動作または故障する可能性があった。更に、自己テストをPCに組込むことは、限られたBIOS中に必要とされるメモリ量からして、そのコストは実現不能なものになっていた。
【0004】
これに加えて、新たなPCテクノロジにより、ユーザ側に信頼性及びファイルセキュリティへの一層の関心が生れてきた。いくつものOSがPCで使用できるようになりまたそれらのアップグレードのサイクルは好ましくないほど頻繁であることから、BIOSがOSの改良版の新しい特徴を認識できず旧式化してしまうため、多くのPCがアップグレードすることができなかった。これらのPCのBIOSは、集積回路チップに格納されているためにアップグレードできなかった。初期の大抵のPCは、BIOSチップを取り外すことができなかったり、或いは、専門家によって取り外しまた取りつける必要があった。最近のPCはプログラム可能なBIOSチップを有しているが、これらのチップはPCのコストを上昇させると共に、BIOSの更新手続きを適切に行わなかったりあるいは書き込み中に電源断やサージ等の他の事象が発生した場合に故障率が高くなっていた。
【0005】
PCテクノロジの発展と共に発生したもう1つの信頼性及びファイルセキュリティに関するものは「コンピュータウイルス」である。一般に、このコンピュータウイルスは、ユーザのPCに害を及ぼすかまたは大破壊をもたらすために、高い技術を持った愉快犯や破壊活動家によって巧妙に設計されたプログラムである。多くのウイルスは、広まっていき、ユーザのPCにハードディスク等の大容量記憶装置を完全に消去させる。これらのウイルスがもたらす損傷を捜し、取除き、一掃するかまたは防止するウイルスプロテクトプログラムが書かれ販売されている。しかしながら、ウイルスチェックプログラム自体を見付け出し、攻撃して破壊する新たなウイルスが作成されている。ウイルスの作成者は、このような危害を与えることができるが、これは、PC上のプログラムが自分以外からのアクセスや変更を防止するという保護機能がほとんどないためである。
【0006】
同様に、PCが権限のない使用及びスパイ行為に対して殆どまたはまったくセキュリティ保護機能を有していないため、ユーザの大容量ファイルが破壊される場合もある。PCがパスワード保護機能を提供する場合でさえ、技術の専門家は、この貧弱なセキュリティ方式を打ち破ったりあるいは迂回することができるようになった。数多くの新聞記事において、米国国防総省及びCIA等の保護された軍のサイトでさえコンピュータへの侵入が起ったことが報告されている。認証セキュリティは、マシンがオペレーティングシステムをブートする前に実行される必要があるため、より優れたセキュリティをBIOSに付加することは困難である。コストのかかる最近の代替方法の1つに、それ自身のために特別にプログラムされたマイクロプロセッサを有するカスタム回路をPCに付加する方法がある。しかしながら、PCメーカが低コストの安全な認証技術を提供しなければ、通常のユーザは今日のハイテクなサイバ犯罪に対して非常に危険な状態にある。
【0007】
従って、PCメーカは、PCがいくつかの面で高信頼度で稼動していることだけでなく、製品の陳腐化や悪質なウイルスから安全でもあり、またそのファイルが権限のないアクセスから安全であることをユーザに保障することができる方法を提供する必要がある。
【0008】
【概要】
本発明によるコンピュータは、中央処理装置、メモリ及びI/Oサブシステムを有している。I/Oサブシステムは、第1のパーティションと、ハイバネーションデータ記憶領域を含む第2のパーティションとを有する大容量記憶装置に接続されている。この大容量記憶装置は、更に、第1のパーティションがコンピュータをブートするためにアクティブであること、及び第2のパーティションがアクティブでないことを示しているパーティションテーブルを有している。また、コンピュータは、コンピュータをブートするためにいずれのパーティションを使用すべきかをI/Oサブシステムを用いて選択するロジックを有している。上記メモリはプログラムを格納しており、このプログラムは、パーティションを選択する前述のロジックに応答して、大容量記憶装置のパーティションテーブルを読出し、このテーブルを変更して選択されたパーティションがコンピュータをブートするためにアクティブであるとCPUから見えるようにすることができる。
【0009】
【実施例】
一般に、パーソナルコンピュータ(PC)は、いくつか例を挙げるとハードディスクドライブ、フロッピドライブ、コンパクトディスク(CD)及びデジタルバーサタイルディスク(DVD)等、いくつかの形態の大容量記憶装置を有している。これらのドライブは、オペレーティングシステム(OS)、アプリケーションプログラム等のユーザソフトウエア、及びワードプロセシングドキュメント、スプレッドシート及び図表等のデータファイルを記憶する。また、PCは、基本入出力システム(BIOS)として知られる低レベルシステムソフトウェアを有している。これは、一般に、更新可能な低速メモリに記憶されており、PCがブートされる時に高速メモリに移される。PCが最初に起動される時、中央処理装置(CPU)が、電源投入時自己テスト(POST)と呼ばれる一組の最小の診断及び装置構成ルーチンからの命令を処理(または「実行」として知られる)を開始する。POSTが正常に終了すると、BIOSは、大容量記憶装置探索ルーチンを用いてOSまたは他のブート可能なプログラムを探し出してブートするという作業に進む(ロード及び実行を開始する)。
【0010】
上述したように、コンピュータに含まれる大抵の情報は大容量記憶装置に記憶されている。特に付記しない限りは、「ソフトウェア」、「オペレーティングシステム(OS)」、「サブルーチン」及び「プログラム」は、実行可能なソフトウェアプログラムを指し、「データ」は、総称的にソフトウェア、オペレーティングシステム、プログラム、並びに、ソフトウェア、オペレーティングシステム及びプログラムが生成するファイルを含むすべての形態の電子情報を指す。しかしながら、いずれの場合も、すべて大容量記憶装置に記憶されている。「実行」とはCPU命令の処理を指す。「ブート」とは、BIOSによりロードされ実行されるオペレーティングシステムまたはプログラムにCPUの制御を渡す処理を指す。
【0011】
一例としてのMS−DOS/Windows PCのBIOSでは、一般に、大容量記憶装置探索ルーチンは、まずフロッピディスクを探索し次にハードディスクを探索することによってOSを探し出すようにプログラムされている。この探索技術により、ハードディスクが故障した場合または異なるOSが必要である場合にもPCをブートすることができる。PC内に構成された大容量記憶装置中でアクセス可能な記憶容量が増大することにより、ユーザは、大容量記憶装置に複数のOSをロードすることができる。ブート時に、大容量記憶装置に入っている複数のオペレーティングシステムから選択を行うためのいくつかの技術が実現されている。PCに搭載された一般的なOSには、いくつか例を挙げるとMS−DOS、Windows 95/98、Windows 2000 (Windows NT)、Unix、Novell Dos及びLinuxがある。これに加えて、CD−ROM、DVD等の交換可能記憶媒体、更にはいくつか例を挙げるとPCMCIA及びカードバス(Cardbus)フラッシュカード等のようなリムーバブルドライブの大容量記憶装置を探索する処理が、大容量記憶装置探索ルーチンに組込まれている。これらの交換可能媒体及びリムーバブルドライブをフォーマットして、それらがハードディスクやフロッピドライブと同様にブート可能な大容量記憶装置とすることができる。
【0012】
このように、いくつかのオペレーティングシステム、プログラムまたはデータを記憶するために、PCには複数の大容量記憶装置を取付けることが可能である。しかしながら、大容量記憶装置に記憶されたプログラムまたはデータにアクセスする方法について述べるためには、大容量記憶領域の編成について知らなければならない。物理的には、大抵の大容量記憶装置はハードディスクドライブの用語法(terminology)を用いて編成されている。一般に、ハードディスクは、プログラムまたはデータを記憶する少なくとも1つのプラッタを有している。各プラッタは、トラックと呼ばれる複数の同心状の記憶ユニットに分割されている。更に、トラックはセクタに分割されている。各プラッタは、ハードディスク上にデータの読書きを行うトップヘッド及びボトムヘッドによってアクセスされる。一方、論理的には、ハードディスクは、複数のパーティションに分割することができる。全パーティションの記憶領域の集合体がハードディスクの記憶容量を超えない限り、各パーティションの記憶容量をパーティションの生成時に選択することができる。例えば、1つの8メガバイトのハードディスクは、論理的に、C(記憶容量が4メガバイト)、D(3メガバイト)及びE(1メガバイト)と名前が付けられた3つのパーティションを有することができる。更に、パーティションは、アドレッシングのためにトラック、シリンダ及びセクタに分割される。例えば、Microsoftによって提供されるMS−DOS/Windows のFDISKユーティリティでは、PCは、タイプ及びサイズの異なるディスクパーティションを4つまで有することができる。これらの各種のタイプは、FAT12、FAT16、FAT32等のMS−DOS/WindowsタイプかまたはMS−DOS/Windows以外の他のタイプとすることができ、それにより、複数のOSを同じハードディスクにインストールすることができる。また、将来使用するために、追加のディスクパーティションタイプが予約されている。これらの予約されたパーティションの1つは、PCがスリープ状態にある間にPCメモリの内容を記憶しているために使用するように指定されている。このスリープ状態は、しばしば「ハイバネーションモード」もしくは「ディスク保存(save−to−disk)モード」と呼ばれる。ハイバネーションモードにより、オフ状態でありながら、このスリープ状態に入る前のユーザの動作環境を維持することによって、PCの電力を節約できる。PCは、ハイバネーションモードから戻って立上げられると以前の動作環境に戻るため、ブート時間が短縮される。通常、PC内の大容量記憶装置の1つのパーティションがPCのメモリを記憶するために使用され、この「ハイバネーションパーティション」は、ブート不可能とされ、アクセスも破壊も不可能であるようにオペレーティングシステムから隠されている。一般にPC電源状態の制御はBIOSによって操作されるため、BIOSコードのみがハイバネーションパーティションのデータ領域へのアクセスと読出し及び書込みの方法を知っている。
【0013】
各ハードディスクは、ディスクパーティションのサイズ、タイプ及びロケーションに関係する情報を含む1つのパーティションテーブルを有している。一般に、このパーティションテーブルは、第1ヘッドの下の第1トラックの第1セクタに記録されている。また、パーティションテーブルは、通常、マスタブートレコード(MBR)と呼ばれる。ブートレコードの目的は、オペレーティングシステムがまだ完全にはメモリにロードされていない短い期間中、PCのシステム操作を制御することである。このブートレコードは、大容量記憶装置からオペレーティングシステムをロードすることができるようにすることを担当する。PCが立上げられると、BIOSは、パーティションテーブルすなわちMBRをメモリにロードし、それに制御を移す。すると、MBR内のコードが現在選択可能なブート可能パーティションを探して、そのパーティションのブートレコードをロードして、それに制御を移す。パーティションテーブルは論理ドライブ内になく、かつ、大抵のOSは論理ドライブのみを取り扱うため、大容量記憶装置のこのレコードは、特別なソフトウェアなしにはOSが、またこれによってユーザもアクセスすることはできない。
【0014】
大容量記憶装置のデータを記憶する容量が増大するに従い、大容量記憶装置の記憶空間を各種のパーティションに分割することができるように、特にMS−DOS/Windows等のいくつかのオペレーティングシステム用にかなりのBIOSが変更されている。更に、大容量記憶装置のデータ記憶容量が増大することにより、PCメーカまたは再販業者には、大容量記憶装置内のパーティションに、製品に新たな特徴または機能を提供する有用なユーティリティプログラムを事前にロードしておく機会が与えられる。しかしながら、PCがハイバネーションパーティションを有すると、この追加の機能を付加したいと考えるPCメーカに難問を与えている。例えば、FDISKディスクパーティションユーティリティを使用するMS−DOS/Windows PCでは、大容量記憶装置には4つのパーティションしか存在することができない。ブート可能オペレーティングシステムパーティション及びハイバネーションパーティションがそれぞれ4つのパーティションの1つずつを占めると、使用可能であるのは残りの2つのパーティションのみである。PCメーカが残りの2つのパーティションの1つに特別なユーティリティプログラムを配置した場合、ユーザが望むようにロードできるのは1つのパーティションしか残らない。更に、特別なユーティリティプログラムは、ユーザによって削除されるか、もしくは不適当なソフトウェアまたはコンピュータウイルスによって破壊される可能性がある。従って、大容量記憶装置に安全にロードされる特別なシステムユーティリティプログラムが必要である。この特別なシステムユーティリティプログラムは、大容量記憶装置の追加のパーティションを使用しない限り、ユーザが使用不可能であり、ソフトウェアの不正動作またはウイルスによって引き起こされるかも知れない破壊から保護されている必要がある。
【0015】
図1は、本発明の好ましい実施の形態及び代替的な実施の形態を実現するパーソナルコンピュータ(PC)10の主な構成要素を示すブロック図である。中央処理装置(CPU)40がキャッシュメモリ42とホストバス24に接続されており、ホストバス24はメモリコントローラ20に接続されている。メモリコントローラ20は、システムRAM22をCPU40にインタフェースするために使用される。通常、MS−DOS/Windows PCのCPUは、いくつか例を挙げると、Intelによって製造されるPentium、Pentium II、Celeron、Xeon、MercedまたはMcKinleyプロセッサか、或いはAMDまたはNational Semiconductorによって製造されるそれらとコンパティブルな製品である。なお、当業者は、AppleのMacIntosh Power PCやSun Microsystems Sparc Processorのような他のアーキテクチャが存在し、それらも本発明の範囲及び精神に含まれるということを認めるであろう。また、システムRAM22は、通常は、DRAM、シンクロナス(同期式)DRAM、SRAMまたはRAMBUSメモリであるが、他のタイプを使用することも可能であり、それらもまた本発明の範囲及び精神に含まれる。CPU40に接続されたキャッシュメモリ42は、高速アクセスが可能であるように、一般にCPU40によって直接制御される。ホストバス24は、CPU40の標準バスインタフェースであってもよいし、或いはPCI等の一般的なバス規格とすることができる。このホストバス24はまた、グラフィックディスプレイ(図示せず)及びネットワークインタフェース(図示せず)等の他の高速装置へのインタフェースにも使用される。CPU40は、通常、I/Oバス28を使用して低速の装置とインタフェースする。このI/Oバス28は、一般にバスコントローラ26を用いてホストバス24に接続されている。低速のメモリは、通常、このI/Oバス28に接続されており、それによって、低速の装置へのアクセスがCPU40のホストバス24上の高速装置へのアクセスを妨げないようになっている。PC内で通常使用される低速メモリ装置には、CMOS32メモリ等の不揮発性データ及びステータス記憶装置、及び、いくつか例を挙げるとROM、EEPROMまたはフラッシュ等の装置に記憶されたBIOS14がある。一般に、キャッシュメモリ42、システムRAM22、CMOS32及びBIOS14は、CPUの「メモリ」12と呼ばれる。PC10が立上げられるかまたはリセットされた時、BIOS14に記憶されているCPU命令が実行され、好ましくはBIOS14の内容がシステムRAM22のある領域に転送されることによって、CPU40がより高速に実行することができるようになる。このBIOS14には、本発明と共に使用される2つの重要なプログラム、すなわちパワーオン自己テスト(POST)16コードと、MS−DOS/WindowsコンピュータにおいてINT 13Hと呼ばれるソフトウェア割込みハンドラを介してアクセスされるルーチン等のディスク読出しサブルーチンが含まれている。通常、大抵のPCでは、大容量記憶装置30はI/Oバス28に接続されている。なお、当業者は、大容量記憶装置が時にはホストバス24上にもあり、それもまた本発明の範囲及び精神に含まれるということを認めるであろう。この大容量記憶装置30には、1つまたは複数のフロッピディスクドライブ、ハードディスクドライブ、CD−ROMドライブ、DVDドライブ、それに加えてPCMCIA、カードバスディスクドライブ及び半導体メモリ等の他の専用の大容量記憶装置がある。また、I/Oバス28により、CPUは他のI/O装置34に接続することができ、好ましくはキーボード36、或いはいくつか例を挙げるとマウス、トラックポイント、ペンまたはタッチパッド等の他の入力装置からの入力を受信することができる。
【0016】
図2は、少なくとも2つのパーティション、すなわちブート可能OSパーティション48及びハイバネーションパーティション50を有する、パーソナルコンピュータ10用の大容量記憶装置30のフォーマットを示すための、好ましい実施の形態を示す図である。大容量記憶装置30は、その媒体上に、各パーティションの先頭ロケーション、終端ロケーション、サイズ及びブート可能状態を示すために使用される通常のパーティションテーブル44を有している。各パーティションの先頭ロケーションは、各パーティションのブートレコード46のロケーションでもある。このブートレコード46は、コンピュータ10を大容量記憶装置30の各パーティションからブートすることができるようにするコードを含んでいる。各パーティションの終端ロケーションは、各パーティションによって使用される大容量記憶装置の最後のセクタのロケーションである。各パーティションは連続した1組のセクタであり、ブートレコード46から始まって最後のセクタで終る。ブート可能OSパーティション48の場合、最後のセクタは、OSパーティション最終セクタ52として示されており、ハイバネーションパーティション52の場合、最終セクタは最終ハイバネーションセクタ54として示されている。
【0017】
ブート時に、BIOS14は、PCをブートするために大容量記憶装置のいずれのパーティションを使用すべきかを判断しなければならない。例えば、一般的なMS−DOS/Windows PCでは、ユーザがハードディスクにパーティションを切るためにFDISKユーティリティを使用した場合、ハードディスクに設けることのできるパーティションは4つまでである。これらのパーティションの1つだけをアクティブまたは「ブート可能」としてセットすることができる。BIOS14は、パーティションテーブルからマスタブートレコード(MBR)をロードし、それに制御を移す。すると、MBRは、パーティションテーブル中で示されている「ブート可能」パーティションを選択してオペレーティングシステムをロードする。PC10の電源がオフした時またはPC10がスリープ状態となった時に、BIOS14により、ハイバネーションパーティション50を用いてPCのメモリの内容が保存される。このハイバネーションモードを用いて、PC10は、ユーザが電源を切る前に設定していたPC10の状態に迅速に戻ることができる。この技術により、ユーザが、PC10がブートするために待たなければならない時間、及びユーザがPC10で作業していた状態にPC10を再構成するために必要な時間を最小化することができる。このハイバネーションパーティション50は、オペレーティングシステムによってサポートされない予約されていたタイプのパーティションを用いることにより、ブートについてはアクティブではないものとして表示され、またオペレーティングシステムから隠されている(すなわち、使用できない)。
【0018】
本発明のハイバネーションパーティション50は、従来のPCに対して変更されたハイバネーションパーティションであって、この変更されたハイバネーションパーティションは、保護されたブート可能ユーティリティプログラム領域56をハイバネーションデータ記憶領域に組込んでいる。この変更されたハイバネーションパーティション50のアクティブブート可能状態は、従来のPCのハイバネーションパーティションのように非アクティブつまり「ブート不可能」にセットされる。オペレーティングシステム等のブート可能プログラム66を含むブート可能OSパーティション48のアクティブブート可能状態は、ここでも、従来のPCのようにアクティブつまり「ブート可能」にセットされる。ブート可能ユーティリティプログラム領域56をハイバネーションデータ記憶領域内に入れておくことにより、パーティションテーブル44の残りの2つのスロットは、拡張ファイルシステムまたは他のオペレーティングシステム及びそれら各々のファイルシステムのいずれにも使用のままである。しかしながら、ブート可能ユーティリティプログラム領域56はパーティションテーブル中でブート可能でないというフラグが立っているため、ブート可能ユーティリティプログラムは通常のブート処理を用いてブートすることは不可能であり、ユーザからは使用できず、そのため偶発的な消去、破壊及び変更が防止される。
【0019】
このハイバネーションパーティション50はBIOSによってしかアクセスされないため、ユーザまたは不正動作したソフトウェアがそのユーティリティソフトウェアをいじったり、変更したりまたは除去したりすることができず、そのためセキュリティ機能が提供される。一実施形態では、ハイバネーションパーティション50の最初の数メガバイトは、単純なOS(MS−DOS等)及びユーティリティプログラム及び必要な関連ファイルを有するブート可能ユーティリティプログラム領域56部分である。あるいは、オペレーティングシステムなしでブートできる独立型のユーティリティプログラムが、ハイバネーションパーティション50に記憶される。ハイバネーションパーティション50のブート可能部分の終端部の後には、ハイバネーションデータ記憶領域51がある。この変更されたハイバネーションパーティション50は、実質的に、ブート可能ユーティリティプログラム領域56とハイバネーションデータ記憶領域51に更に分けられる。変更されたハイバネーションパーティション50は、パーティションテーブルではブート不可能であると示されたままである。一実施形態では、ユーザは、PCのブート時に、好ましくはファンクションキーF10等のホットキーを使用してユーティリティプログラムを起動する。なお、ユーティリティプログラムを起動するためにPCに対して他の入力シーケンスを使用することも可能であり、これもまた本発明の精神及び範囲に含まれる。
【0020】
いくつかの種類のアプリケーションでは、ユーティリティプログラムのこの保護された記憶領域を使用することができるようにしている。1つの例は、完全な機能を備えた(fully functional)診断自己テストプログラムである。これは、ハードウェアのより徹底的なテストを行い、POSTルーチンよりも詳しく故障の報告を行うものである。ハードウェア故障の検出及び報告に関して高レベルの信頼性を提供する診断テストを行う機能を持つことは、ユーザ及びPCメーカにとって非常に有益である。しばしば、ユーザには、所与の問題がハードウェアの欠陥であるか、コンピュータの構成間違いであるか、またはソフトウェアのバグであるかを判断することは困難である。ハードウェアに欠陥がある場合、それを修理のためにメーカに戻さなければならず、ユーザがPCを使用できなくなる。更に、その修理が保証によってカバーされる場合は、コンピュータをテスト、診断及び修理するための費用を製造業者が払わなければならない。この診断自己テストプログラムにより、ユーザに対してコンピュータが正常に機能していると断言することができれば、製造業者は経費を節約し、ユーザはコンピュータをサービスのために戻す必要がなくなる。
【0021】
本発明を利用することができる他のアプリケーションは、BIOS更新プログラムである。経費を更に低減するために、マスクROMまたはプログラマブルROM(PROM)等のプログラム固定式メモリ装置を用いて、PC内に最小のBIOSを保持する。完全な機能を備えたBIOSは、ハイバネーションパーティション50のブート可能ユーティリティプログラム領域56に記憶する。ブート時、最小BIOSが大容量記憶装置30のハイバネーションパーティション50に記憶されたBIOSをDRAMにロードし、その後そのDRAMにロードされたBIOSに制御を渡す。ユーザが大容量記憶装置に記憶されたBIOSを更新することができるようにする、別のプログラムが提供される。
【0022】
ユーザがディスクに複数のオペレーティングシステムを記憶している場合、暗号化/解読を用いて、1つのOSに埋込まれたウイルスが別のOSを保持するパーティションに記憶されたデータにアクセスしそれを攻撃することを防止することにより、補助的な非アクティブパーティションを更に安全にすることが望ましい場合がある。すなわち、ユーザが暗号化/解読ルーチンを破壊または変更することができないように、及び、暗号化/解読ルーチンをユーザのオペレーティングシステムによるロードの必要なしでこのルーチンが大容量記憶装置のデータに直接操作することができるように、暗号化/解読ルーチンをPC上で使用可能にすることが望ましい。後者の要請の理由は、オペレーティングシステムがこのルーチンを開くとウイルスプログラムによってオペレーティングシステムが危険に陥るかもしれないからである。本発明は、まさにこのようなセキュリティ対策方法を提供するものであり、この方法によれば、暗号化/解読プログラムがハイバネーションパーティション50に格納されて隠され、ブート時に、大容量記憶装置のパーティションを暗号化または解読するためにユーザまたはシステム管理機構によって起動される。
【0023】
また、暗号化/解読を用いる場合と同様な方法によって、特別なウイルスチェック及びファイル修復を提供するセキュリティの高いユーティリティプログラムが実現できる。ハイバネーションパーティション50にウイルスチェックソフトウェアを配置し、ユーザあるいは存在するかもしれないウイルスからは手を出せないようにすることにより、起こり得る侵入に対して免疫性が更に増す。
【0024】
本発明によって提供されるセキュリティの高いユーティリティプログラムスペースに対する他のアプリケーションは、セキュリティの高いユーティリティプログラムをブート時にBIOS14によって自動的に起動することにより、従来のPCのBIOSにおいて一般に見られるよりも安全なパスワード保護機能を提供するユーザ認証プログラムを提供するというものである。大抵のBIOSは使用可能なコードスペースの容量が制限されている。セキュリティの高いプログラムをブートしロードすることができるようにすることによって、2つ例を挙げるとコンピュータのマイクロフォンを使用する音声認識及びコンピュータのタッチパネルを使用する署名認識等の、別のセキュリティ認証プロトコルが実現される。
【0025】
図3は、新たにフォーマットされたハイバネーションパーティション50を用いて大容量記憶装置30を生成するために使用する処理のフローチャートである。同図において、各ブロックの動作は以下のようになっている:
170:1番目のパーティションを、ブート可能プログラムを入れることができるようにするようにフォーマットする
172:2番目のパーティションを、ハイバネーションデータ記憶領域としてフォーマットする
174:第2のパーティションの一部を、非アクティブブート可能プログラムとしてフォーマットする
ブロック170において、MS−DOS/Windows等のブート可能なオペレーティングシステム及びその各々のファイルシステムのために、第1のパーティションがフォーマットされる。そして、ブロック172において、大容量記憶装置30が第2のパーティションを持つようにフォーマットされて、多数の連続したディスクセクタの予約領域であるハイバネーションデータ記憶領域を置くことができるようにする。次に、ブロック174において、大容量記憶装置30の第2のパーティションの一部がブート可能ユーティリティプログラム領域56を含むように、第2のパーティションが再フォーマットされる。このブート可能ユーティリティプログラム領域56はアクティブであるというフラグが立てられないので、「ブート不可能」な領域である。BIOSだけが、ハイバネーションモードに入る時及びハイバネーションモードから出る時にハイバネーションデータ記憶領域から/へデータを読書きするソフトウェアであるため、ハイバネーションデータ記憶領域の先頭アドレスを動かすのは容易である。ユーザにとっての最終的な効果は、ハイバネーションパーティション50はブート可能ユーティリティプログラム領域56を組込むための余分なセクタを含むが、記憶用の他の2つのパーティションが使用できなくなるのはこれらの余分なセクタだけである、ということである。変更されたハイバネーションパーティション50が非アクティブであるとしてフラグが立てられ、ブート可能なオペレーティングシステムによってアクセスが不可能であるため、このユーティリティプログラムを起動して実行するようにBIOS14を変更しなければならない。
【0026】
図4は、本発明の好ましい実施の形態を実現するMS−DOS/Windowsアーキテクチャを使用するPCのBIOSの一例としてのブートシーケンスのフローチャートである。同図の各ブロックの動作は以下の通りである:
100:CPUリセット
102:スタートアップルーチンを実行し、リセットオリジンを獲得する
104:プロテクトモードか?
106:リアルモードに戻す
108:ハイバネーションビットがセットされているか?
109:ハイバネーションパーティションからメモリを復元する
110:POSTテストを開始する
112:コールドブートか?
113:ステータスインディケータをクリアする
114:短いPOSTを実行する
115:大容量記憶装置読み出し横取りトラップを設定する(オプション)
116:特別なキーの押下があったか?
118:ステータスインディケータをセットする
120:オペレーティングシステムをロードする
121:変更された大容量記憶読出しルーチンを実行する
122:TSRをインストールし、ソフトウエア調整を実行する
124:ユーザが選択したプログラムを実行する
126:コンピュータが準備完了となる
最初に、ブロック100において、コンピュータが立上げられるか、またはCPU40がリセットされる。そして、ブロック102において、BIOS14が、特定の電子チップセットを適切に構成するために必要なスタートアップルーチンを実行した後、リセットの起点を取り出す。次に、ブロック104において、そのリセットがチェックされ、CPUをプロテクトモードから移行するべきか否かが判断される。そうである場合、プログラムフローはブロック106に進み、リアルモードに戻して、BIOS14はブロック126へ飛んで制御を以前にロードされたオペレーティングシステムに戻す。一方、ブロック108において、リセットの起点がチェックされ、ハイバネーションビットをチェックすることにより、PC10がハイバネーションモードから目覚めるべきか否かが判断される。そうである場合、プログラムフローはブロック109に進み、大容量記憶装置30のハイバネーションパーティション50に以前記憶されたデータが読出されてシステムDRAM22に書込まれ、その後制御は復元されたオペレーティングシステムに戻される。一方、ブロック112において、CMOS32がチェックされて完全なPOSTコールドブートが実行されるべきか否かが判断される。そうである場合、ブロック110において完全なPOSTテストが実行され、個々のシステム機能が完全に構成されテストされる。完全なPOSTコールドブートが実行されるべきでない場合、プログラムフローはブロック113及びブロック114に進み、短いPOSTシーケンスが実行されてシステムのセットアップが終了する。ブロック113では、好ましくはCMOSメモリ32のステータスビットを用いて実装されるステータスインジケータがクリアされる。ブロック114における短いPOSTには特別なコードが含まれており、これにより、PC10のユーザが、ブート可能OSパーティション48のオペレーティングシステムではなくブート可能ユーティリティプログラム領域56のユーティリティプログラムをロードすべきであるということを、BIOS14に対して指示することができる。ブロック114の短いPOSTテストの間に種々の間隔で、判断ブロック116において、予め決められた入力シーケンスがユーザによって入力されたか否かが判断される。ある実施の形態では、この入力シーケンスはキーボード36のF10キーの押下である。この入力シーケンスが検出されるとブロック118においてステータスインジケータがセットされ、検出されなければブロック114の短いPOSTテストが続行される。
【0027】
本発明の他の実施の形態では、ブロック114における短いPOSTの後、プログラムフローはオプションのルーチン(図7A参照)に進み、ブロック115において、BIOSの大容量記憶読出し機能に対する呼出し(例えば、MS−DOS PCにおけるINT 13H)を「横取り」する。そして、プログラムはブロック120においてオペレーティングシステムのロードを開始する。オペレーティングシステムがロードされている時、BIOS大容量記憶読出しルーチンに対しいくつかのプログラム呼出がなされ、大容量記憶装置のいずれのパーティションをブートすべきかが判断される。このBIOS大容量記憶読出ルーチンは、好ましい実施の形態及び他の実施の形態(図6及び図7C参照)では変更され、それによってブロック121に示すように、大容量記憶装置のパーティションテーブルからの読出が検出され変更される。オペレーティングシステムがロードされた後、通常、ブロック122において様々な常駐プログラム(TSR)、ソフトウェアドライバ、及びブロック124において他のソフトウェア調整が実行され、ブロック126においてユーザに対しコンピュータが準備完了状態となる。
【0028】
図5は、図4に示す一例としてのMS−DOS/WindowsPCブロック120のフローチャートである。同図の各ブロックの動作を以下に示す:
130:INT 13H: FDDのブートレコードを読出す
132:読出しが成功したか?
134:FDDからブートする
136:INT 13H: HDDのブートレコードを読出す
138:読出しが成功したか?
140:HDDから読出す
142:ブートエラー処理へ行く
このブロック120では、BIOS14がオペレーティングシステムをブートしようとする。まず、ブロック130において、BIOS14は、INT 13Hソフトウェア割込みルーチンを呼出してフロッピディスクドライブ(FDD)のブートレコードを読出すことにより、大容量記憶装置読出しを実行しようとする。ブロック132において読出しが正常に行われると、ブロック134において、BIOS14は、FDDからのオペレーティングシステムをブートする。読出しが正常に行われなかった場合、ブロック136において、別の大容量記憶装置読出しが実行され、ハードディスクドライブ(HDD)からマスタブートレコード(パーティションテーブル)を読出そうとする。この読出しが正常に行われると、BIOS14はブロック140に進み、HDDを使用してオペレーティングシステムをブートする。一方、HDDからのマスタブートセクタの読出しが正常に行われなかった場合、BIOS14はブロック142に進み、ブートエラー処理により、BIOS14がPC10をブートすることができなかったということをPC10のユーザに警告する。なお、ブート可能性についてチェックされる対象としてFDDとHDDのみが示されているが、CD−ROM及び他の交換可能またはリムーバブル大容量記憶装置を含むようにBIOSの更なる改良は進められており、これもまた本発明の精神及び範囲内に含まれている。
【0029】
図6は、変更された大容量記憶読出しサブルーチンの本発明の一例としての実施の形態において使用されるロジックのフローチャートである。同図において、各ブロックの動作は以下の通りである:
150:呼び出しプログラムからパラメータを読み取る
152:大容量記憶装置中のパラメータによって与えられたロケーションから読出す
154:ステータスインディケータを読み取る
156:代替ブートか?
158:パーティションテーブルが記憶されているロケーションか?
160:第1パーティションがブート可能でなく第2パーティションがブート可能であるように、メモリ中のパーティションテーブルを変更する
162:パーティションテーブル呼び出しプログラムに戻る
このロジックは、大容量記憶装置30のハイバネーションパーティション50に記憶されたブート可能ユーティリティプログラム領域56がブートできるようにする。まず、ブロック150において、呼出しプログラムからパラメータが取り出される。このパラメータは、大容量記憶装置30から読出すべき1つまたは複数のセクタのロケーションを記述するために使用される。ブロック152において、このパラメータを用いて、大容量記憶装置30の所望のロケーションが読出される。そして、ブロック154においてステータスインジケータを取出し、判断ブロック156において比較されて、ブート可能ユーティリティプログラム領域56をブートする必要があるか否かが判断される。ブートする必要がない場合には、ブロック162において、大容量記憶装置30から読み出されたデータを呼出しルーチンに戻す。一方、ブート可能ユーティリティプログラム領域56をブートする必要がある場合、ブロック158において、パラメータを、パーティションテーブル44が記憶されているロケーションと比較する。パラメータがパーティションテーブル44のロケーションと一致しない場合、大容量記憶装置30から読出されたデータを呼出しプログラムに戻す。パラメータがパーティションテーブル44のロケーションと一致する場合、大容量記憶装置30から読出されたデータがパーティションテーブルの内容を含んでいるので、ブロック160において、これらの内容を変更する。読出されていたパーティションテーブル44のデータは、この変更の結果、第1のパーティション、すなわちブート可能OSパーティション48が非アクティブつまり「ブート不能」、第2のパーティションすなわちハイバネーションパーティション50がアクティブつまり「ブート可能」となる。そして、ブロック162において、パーティションテーブルの読出されて変更された内容が呼出しプログラムに戻される。本発明において必須ではないが、パーティションテーブルの読出され変更された内容を戻すだけで、別の保護機能が追加される。仮に大容量記憶装置30の実際のパーティションテーブルを変更した場合、ユーティリティプログラムによってマシンがハングアップするかまたは他の障害が発生すると、コンピュータは元のオペレーティングシステムを適切に再ブートすることができないかもしれない。更に、このようなことが起った場合、大容量記憶装置を取り外して別のPCに設置しても、それは適切にブートしないかもしれない。
【0030】
図7A〜図7Cは、大容量記憶読出しルーチンを変更する代りに、大容量記憶読出しルーチン呼出を横取りして新たなサブルーチンに置換えた本発明の他の実施の形態のフローチャートである。この新たなサブルーチンは、大容量記憶読出しルーチンを呼出して、ブート可能ユーティリティプログラム領域56がブートすべきである場合に、その結果を変更する。最近の大抵のBIOSでは、大容量記憶読出しサブルーチンを横取りすることにより、BIOSが最初にコーディングされた時には考えられておらずまた実現されていなかった将来の大容量記憶装置を付加することができる。本実施の形態の利点は、大容量記憶装置から挿入及び取外しが可能なリムーバブル媒体を有するものを含む新たな大容量記憶装置をPCに付加することが可能であり、好ましいブートドライブとすることができ、それにもまた本発明を実施できるということである。
【0031】
図7Aは、大容量記憶読出しルーチンをインタセプトする好ましい方法の設定のフローチャートである。同図の各ブロックの動作は以下の通りである:
200:ディスク読出しサブルーチンの読出しロケーションを第1のロケーションから読出す
202:ディスク読出しサブルーチンの読出しロケーションを第2のロケーションに記憶する
204:第1のサブルーチンのロケーションを第1のロケーションに記憶する
ブロック200において、第1のメモリロケーションから大容量記憶読出しルーチンのロケーションを読出す。そして、ブロック202において、大容量記憶読出しルーチンのロケーションを第2のメモリロケーションに記憶する。次に、ブロック204において、新たなサブルーチンのロケーションを第1のメモリロケーションに記憶し、それにより大容量記録読出しルーチンに対する呼出しを横取りする。
【0032】
図7Bは、第2のパーティション、すなわちハイバネーションパーティション50、のブート可能ユーティリティプログラム領域56をブートする必要があるか否かを判断する設定のブロック206から始まるフローチャートである。同図の各ブロックの動作は以下の通りである:
206:第2のパーティションからブートするか?
208:第2のパーティションからブートするために、ステータスインディケータを記憶する
210:戻る
ブートする必要がある場合、ブロック208において、第2のパーティションがブート可能パーティションであるということを示すようにステータスインジケータがセットされる。
【0033】
図7Cは、本発明の他の実施の形態における新しいプログラムのフローチャートであり、このプログラムは大容量記憶読出しルーチンの代りに呼出され、それによって大容量記憶読出しルーチンを「横取り」するものである。同図の各ブロックの動作は以下の通りである:
219:呼び出しプログラムからパラメータを得る
220:第2のロケーションを読出して、ディスク読出しサブルーチンのロケーションを得る
222:ディスク読出しサブルーチンを呼び出して、結果を戻す
224:記憶されているステータスインディケータを読出す
226:第2のパーティションからブートする必要があるか?
228:ブートディスク上のパーティションテーブルは読出されたか?
230:第1のパーティションがブート不能であり第2のパーティションがブート可能であることを示すように結果を変更する
232:結果を呼び出しプログラムへ戻す
ブロック220において、第2のメモリロケーションを読出し、元の大容量記憶読出しルーチンのロケーションを取出す。そして、ブロック222において、大容量記憶読出しルーチンを呼出して大容量記憶装置30中の、呼出しプログラムから新たなルーチンに渡されブロック219で取得されたパラメータによって決定されるロケーションを読出す。次に、ブロック224において、記憶されていたステータスインジケータを読出し、ブロック226において、それを用いて第2のパーティションをブートする必要があるか否か判断する。第2のパーティションをブートする必要がない場合、ブロック232において、大容量記憶装置から読出された結果をそのまま呼出しプログラムに戻す。一方、第2のパーティションをブートする必要がある場合、ブロック228においてパラメータをチェックし、大容量記憶装置のパーティションテーブルが読出されたか否かが判断される。読出されていない場合、大容量記憶装置から読出された結果をそのまま呼出しプログラムに戻す。一方、パーティションテーブルを読出していた場合、ブロック230において、第1のパーティションは非アクティブまたは「ブート不可能」であり、第2のパーティションはアクティブまたは「ブート可能」であるということを示すように、読出された結果を変更する。そして、ブロック232において、パーティションテーブルの変更された結果を呼出しプログラムに戻す。
【0034】
本発明の利点は、PCのユーザがブート時に、完全な診断スーツ等のセキュリティの高いユーティリティプログラムを実行することができるということである。また、そのセキュリティの高いユーティリティプログラムを提供するために製造コストが余分にかかることも、またディスクパーティションを余計に使ってしまうこともなく、かつ、ユーザが気付く程の大容量記憶スペースを消費することもない。更に、このセキュリティの高いユーティリティプログラムは偶発的に消去されることがないように保護されている。なお、本発明の特定の実施の形態について示し説明したが、本発明は特許請求の範囲のみによって限定されるものである。
【0035】
以下に本発明の実施態様の例を列挙する。
【0036】
〔実施態様1〕中央処理装置(CPU)(40)と、
前記CPU(40)に接続されたメモリ(22、14)と、
前記CPU(40)に接続された入力/出力(I/O)サブシステム(26)と、
前記I/Oサブシステム(26)に接続され、第1のパーティション(48)と、ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)と、前記第1のパーティション(48)が前記コンピュータ(10)のブートに対してアクティブであり前記第2のパーティション(50)が前記コンピュータ(10)のブートに対してアクティブでないということを示すパーティションテーブル(44)を備えた大容量記憶装置(30)と、
前記コンピュータ(10)をブートするためにいずれのブート可能パーティションを使用すべきかを選択する、前記I/Oサブシステム(26)と前記CPU(40)の間のロジック手段と、
前記ロジック手段に応答して、前記パーティションテーブル(44)を読出すことができ、かつ選択されたパーティションが前記CPU(40)に関して前記コンピュータ(10)をブートするためにアクティブであると示されるように前記読出されたパーティションテーブルを変更することができる、前記メモリ(22、14)内の第1のプログラムと、
を設けたことを特徴とするコンピュータ(10)。
【0037】
〔実施態様2〕前記大容量記憶装置(30)に配置された前記パーティションテーブル(44)は変更されないことを特徴とする実施態様1記載のコンピュータ(10)。
【0038】
〔実施態様3〕前記ロジック手段は、
前記I/Oサブシステム(26)に接続され、入力シーケンスを受信することができる入力装置(36)と、
予め定められた入力シーケンスを受信したことを検出することができる前記メモリ(22、14)内の第2のプログラムと
を設けたことを特徴とする実施態様1記載のコンピュータ(10)。
【0039】
〔実施態様4〕前記第2のパーティション(50)は、前記第2のパーティション(50)が前記CPU(40)に対してアクティブであるとされた後に実行が可能であるユーティリティプログラム(56)を含むことを特徴とする実施態様1記載のコンピュータ(10)。
【0040】
〔実施態様5〕前記ユーティリティプログラム(56)は診断テストプログラムであることを特徴とする実施態様4記載のコンピュータ(10)。
【0041】
〔実施態様6〕前記メモリ(22、14)はBIOSを含み、前記ユーティリティプログラム(56)は前記BIOSを更新することができることを特徴とする実施態様4記載のコンピュータ(10)。
【0042】
〔実施態様7〕前記ユーティリティプログラム(56)は前記第1のパーティション(48)を暗号化及び解読することができることを特徴とする実施態様4記載のコンピュータ(10)。
【0043】
〔実施態様8〕前記ユーティリティプログラム(56)は前記メモリ(22、14)及び前記第1のパーティション(48)のウイルスチェックを行うことができることを特徴とする実施態様4記載のコンピュータ(10)。
【0044】
〔実施態様9〕前記第1のパーティション(48)はデータ及びプログラムを含み、前記ユーティリティプログラム(56)はブート可能な前記第1のパーティション(48)に記憶されたデータ及びプログラムへのアクセスを制限するユーザ認証プログラムであることを特徴とする実施態様4記載のコンピュータ(10)。
【0045】
〔実施態様10〕呼出し元プログラムからの前記コンピュータ(10)のブートシーケンスを変更するプログラムにおいて、
前記呼出し元プログラムは1組のパラメータを前記ブートシーケンスを変更するプログラムに渡し、
前記コンピュータ(10)は、第1のパーティション(48)と、ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)と、前記第1のパーティション(48)がブート可能であり前記第2のパーティションはブート不能であることを示すパーティションテーブル(44)と
を備えたブートディスク(30)を有し、
一組のパラメータを用いてブートディスク(30)を読出し一組の結果を戻すステップ(152)と、
前記一組のパラメータを第1の値と比較して前記パーティションテーブル(44)が読出されたと判断するステップ(158)と、
前記ブートディスクの前記パーティションテーブル(44)の内容を変更することなく、前記第1のパーティション(48)がブート不能であり、前記ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)がブート可能であることを示すように、前記戻された一組の結果を変更するステップ(160)と、
前記変更された一組の結果を前記呼出し元プログラムに戻すステップ(162)と
を含み、
前記コンピュータ(10)は前記第1のパーティション(48)でなく前記第2のパーティション(50)を用いてブートすることを特徴とするプログラム。
【0046】
〔実施態様11〕呼出し元プログラムからの前記コンピュータ(10)のブートシーケンスを変更する方法において、
前記呼出し元プログラムは1組のパラメータを前記ブートシーケンスを変更するプログラムに渡し、
前記コンピュータ(10)は、第1のパーティション(48)と、ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)と、前記第1のパーティション(48)がブート可能であり前記第2のパーティションはブート不能であることを示すパーティションテーブル(44)と
を備えたブートディスク(30)を有し、
一組のパラメータを用いてブートディスク(30)を読出し一組の結果を戻すステップ(152)と、
前記一組のパラメータを第1の値と比較して前記パーティションテーブル(44)が読出されたと判断するステップ(158)と、
前記ブートディスクの前記パーティションテーブル(44)の内容を変更することなく、前記第1のパーティション(48)がブート不能であり、前記ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)がブート可能であることを示すように、前記戻された一組の結果を変更するステップ(160)と、
前記変更された一組の結果を前記呼出し元プログラムに戻すステップ(162)と
を含み、
前記コンピュータ(10)は前記第1のパーティション(48)でなく前記第2のパーティション(50)を用いてブートすることを特徴とする方法。
【図面の簡単な説明】
【図1】パーソナルコンピュータの最小ブロック図を示す。
【図2】本発明の好ましい実施の形態による大容量記憶領域の編成を示す図である。
【図3】図2に示す本発明の好ましい実施の形態で使用される大容量記憶装置を用意するために必要な好ましいステップのフローチャートである。
【図4】図2に示す変更されたハイバネーションファイルを有するパーソナルコンピュータをブートするために使用される、本発明の好ましい実施の形態の変更されたステップを含む一例としてのブート処理を示すフローチャートである。
【図5】従来的なMS−DOS/Windowsのパーソナルコンピュータのオペレーティングシステムを見つけてロードするために必要な一例としてのステップを示すフローチャートである。
【図6】本発明の好ましい実施の形態において、大容量記憶装置のパーティションテーブルから読出されたデータを変更するサブルーチンのフローチャートである。
【図7A】本発明の他の実施の形態において、大容量記憶読出しサブルーチンへのアクセスを遮るために使用されるサブルーチンのフローチャートである。
【図7B】本発明の好ましい他の実施の形態においてステータスインジケータをセットアップするために使用されるサブルーチンのフローチャートである。
【図7C】本発明の他の実施の形態において図7A及び図7Bのサブルーチンと共に使用され、大容量記憶読出しサブルーチンから戻される結果を呼出し変更するために使用されるインターセプトサブルーチンのフローチャートである。
【符号の説明】
14:BIOS
22:システムRAM
26:バスコントローラ
30:大容量記憶装置
36:キーボード
40:CPU
44:パーティションテーブル
48:ブート可能OSパーティション
50:ハイバネーションパーティション
51:ハイバネーションデータ記憶領域
56:ブート可能ユーティリティプログラム領域
【発明の属する技術分野】
本発明はコンピュータシステムに関し、特に、セキュアユーティリティプログラムにディスクパーティションをハイバネーションデータと共有させることにより、セキュアユーティリティプログラムを格納しブートすることができるコンピュータに関する。
【0002】
【従来技術及びその問題点】
コンピュータメーカは、パーソナルコンピュータ(PC)のユーザに、新たなテクノロジ及び特徴の一様な流れを提供し続けている。しかしながら、PCがより複雑化するに従い、市場の圧力により、PCの使用法及び操作を一層ユーザフレンドリにすることは不可避である。そうすることによって、技術に精通していない更に多くのユーザがPCを購入し、それによって更に大きな市場を創製するだろう。更に、コンピュータメーカがPCのコストを下げることにより、より多くのユーザがPCを、技術的な驚異ではなく単なる道具と考えるようになってきている。また、このように考え方が変化することにより、ユーザは、製品の品質及びプログラムやファイルの安全性に関しても一層大きな期待を持つようになる。大抵の装置は非常に信頼性が高く、PCについてとかく言われるような多大な保守が必要になると言うようなことはない。通常、装置が故障した場合、ユーザまたはサービス技術者は、それを非常に迅速に診断して修理することができる。従って、コンピュータメーカは、PCの故障発生の防止を支援するか、あるいは、故障した場合にユーザまたはサービス技術者がPCを迅速に診断して修理するのを支援するユーティリティプログラムを提供することを余儀なくされている。
【0003】
大抵のPCはBIOSと呼ばれる低レベルソフトウェアを搭載して出荷される。これは、PCが起動されるかまたはリセットされた時に最小限の自己テストを提供する。これらの自己テストはPCが1980年初頭に最初に設計された時に書かれたものであり、このようなテストはそもそもコンピュータメーカ及びそれらのサービス部門のために行われる。初期のPCのBIOSでは記憶スペースが制限されていたため、わずかな量の自己テストしか実行されていなかった。コンピュータメーカだけが、フロッピドライブを使用してPCにロードされる更に完全な診断自己テストを実行するために必要なテストを実行していた。これらの完全な診断自己テストは複雑であるため、通常はユーザが行えるようにはなっていなかった。従って、ユーザのPCが適切に機能しなかった時、そのPCはメーカのサービスセンタに戻されるか、コンピュータ技術者がオフィスまたは家に出向かなければならなかった。ユーザに完全な自己テストプログラムを提供することの問題の1つは、自己テストプログラムはフロッピディスクフォーマットで与えられた場合、破損または紛失する可能性があるということであった。また、自己テストプログラムをそのメーカが製造したものではないPCに使用した場合、そのPCが完全に誤動作または故障する可能性があった。更に、自己テストをPCに組込むことは、限られたBIOS中に必要とされるメモリ量からして、そのコストは実現不能なものになっていた。
【0004】
これに加えて、新たなPCテクノロジにより、ユーザ側に信頼性及びファイルセキュリティへの一層の関心が生れてきた。いくつものOSがPCで使用できるようになりまたそれらのアップグレードのサイクルは好ましくないほど頻繁であることから、BIOSがOSの改良版の新しい特徴を認識できず旧式化してしまうため、多くのPCがアップグレードすることができなかった。これらのPCのBIOSは、集積回路チップに格納されているためにアップグレードできなかった。初期の大抵のPCは、BIOSチップを取り外すことができなかったり、或いは、専門家によって取り外しまた取りつける必要があった。最近のPCはプログラム可能なBIOSチップを有しているが、これらのチップはPCのコストを上昇させると共に、BIOSの更新手続きを適切に行わなかったりあるいは書き込み中に電源断やサージ等の他の事象が発生した場合に故障率が高くなっていた。
【0005】
PCテクノロジの発展と共に発生したもう1つの信頼性及びファイルセキュリティに関するものは「コンピュータウイルス」である。一般に、このコンピュータウイルスは、ユーザのPCに害を及ぼすかまたは大破壊をもたらすために、高い技術を持った愉快犯や破壊活動家によって巧妙に設計されたプログラムである。多くのウイルスは、広まっていき、ユーザのPCにハードディスク等の大容量記憶装置を完全に消去させる。これらのウイルスがもたらす損傷を捜し、取除き、一掃するかまたは防止するウイルスプロテクトプログラムが書かれ販売されている。しかしながら、ウイルスチェックプログラム自体を見付け出し、攻撃して破壊する新たなウイルスが作成されている。ウイルスの作成者は、このような危害を与えることができるが、これは、PC上のプログラムが自分以外からのアクセスや変更を防止するという保護機能がほとんどないためである。
【0006】
同様に、PCが権限のない使用及びスパイ行為に対して殆どまたはまったくセキュリティ保護機能を有していないため、ユーザの大容量ファイルが破壊される場合もある。PCがパスワード保護機能を提供する場合でさえ、技術の専門家は、この貧弱なセキュリティ方式を打ち破ったりあるいは迂回することができるようになった。数多くの新聞記事において、米国国防総省及びCIA等の保護された軍のサイトでさえコンピュータへの侵入が起ったことが報告されている。認証セキュリティは、マシンがオペレーティングシステムをブートする前に実行される必要があるため、より優れたセキュリティをBIOSに付加することは困難である。コストのかかる最近の代替方法の1つに、それ自身のために特別にプログラムされたマイクロプロセッサを有するカスタム回路をPCに付加する方法がある。しかしながら、PCメーカが低コストの安全な認証技術を提供しなければ、通常のユーザは今日のハイテクなサイバ犯罪に対して非常に危険な状態にある。
【0007】
従って、PCメーカは、PCがいくつかの面で高信頼度で稼動していることだけでなく、製品の陳腐化や悪質なウイルスから安全でもあり、またそのファイルが権限のないアクセスから安全であることをユーザに保障することができる方法を提供する必要がある。
【0008】
【概要】
本発明によるコンピュータは、中央処理装置、メモリ及びI/Oサブシステムを有している。I/Oサブシステムは、第1のパーティションと、ハイバネーションデータ記憶領域を含む第2のパーティションとを有する大容量記憶装置に接続されている。この大容量記憶装置は、更に、第1のパーティションがコンピュータをブートするためにアクティブであること、及び第2のパーティションがアクティブでないことを示しているパーティションテーブルを有している。また、コンピュータは、コンピュータをブートするためにいずれのパーティションを使用すべきかをI/Oサブシステムを用いて選択するロジックを有している。上記メモリはプログラムを格納しており、このプログラムは、パーティションを選択する前述のロジックに応答して、大容量記憶装置のパーティションテーブルを読出し、このテーブルを変更して選択されたパーティションがコンピュータをブートするためにアクティブであるとCPUから見えるようにすることができる。
【0009】
【実施例】
一般に、パーソナルコンピュータ(PC)は、いくつか例を挙げるとハードディスクドライブ、フロッピドライブ、コンパクトディスク(CD)及びデジタルバーサタイルディスク(DVD)等、いくつかの形態の大容量記憶装置を有している。これらのドライブは、オペレーティングシステム(OS)、アプリケーションプログラム等のユーザソフトウエア、及びワードプロセシングドキュメント、スプレッドシート及び図表等のデータファイルを記憶する。また、PCは、基本入出力システム(BIOS)として知られる低レベルシステムソフトウェアを有している。これは、一般に、更新可能な低速メモリに記憶されており、PCがブートされる時に高速メモリに移される。PCが最初に起動される時、中央処理装置(CPU)が、電源投入時自己テスト(POST)と呼ばれる一組の最小の診断及び装置構成ルーチンからの命令を処理(または「実行」として知られる)を開始する。POSTが正常に終了すると、BIOSは、大容量記憶装置探索ルーチンを用いてOSまたは他のブート可能なプログラムを探し出してブートするという作業に進む(ロード及び実行を開始する)。
【0010】
上述したように、コンピュータに含まれる大抵の情報は大容量記憶装置に記憶されている。特に付記しない限りは、「ソフトウェア」、「オペレーティングシステム(OS)」、「サブルーチン」及び「プログラム」は、実行可能なソフトウェアプログラムを指し、「データ」は、総称的にソフトウェア、オペレーティングシステム、プログラム、並びに、ソフトウェア、オペレーティングシステム及びプログラムが生成するファイルを含むすべての形態の電子情報を指す。しかしながら、いずれの場合も、すべて大容量記憶装置に記憶されている。「実行」とはCPU命令の処理を指す。「ブート」とは、BIOSによりロードされ実行されるオペレーティングシステムまたはプログラムにCPUの制御を渡す処理を指す。
【0011】
一例としてのMS−DOS/Windows PCのBIOSでは、一般に、大容量記憶装置探索ルーチンは、まずフロッピディスクを探索し次にハードディスクを探索することによってOSを探し出すようにプログラムされている。この探索技術により、ハードディスクが故障した場合または異なるOSが必要である場合にもPCをブートすることができる。PC内に構成された大容量記憶装置中でアクセス可能な記憶容量が増大することにより、ユーザは、大容量記憶装置に複数のOSをロードすることができる。ブート時に、大容量記憶装置に入っている複数のオペレーティングシステムから選択を行うためのいくつかの技術が実現されている。PCに搭載された一般的なOSには、いくつか例を挙げるとMS−DOS、Windows 95/98、Windows 2000 (Windows NT)、Unix、Novell Dos及びLinuxがある。これに加えて、CD−ROM、DVD等の交換可能記憶媒体、更にはいくつか例を挙げるとPCMCIA及びカードバス(Cardbus)フラッシュカード等のようなリムーバブルドライブの大容量記憶装置を探索する処理が、大容量記憶装置探索ルーチンに組込まれている。これらの交換可能媒体及びリムーバブルドライブをフォーマットして、それらがハードディスクやフロッピドライブと同様にブート可能な大容量記憶装置とすることができる。
【0012】
このように、いくつかのオペレーティングシステム、プログラムまたはデータを記憶するために、PCには複数の大容量記憶装置を取付けることが可能である。しかしながら、大容量記憶装置に記憶されたプログラムまたはデータにアクセスする方法について述べるためには、大容量記憶領域の編成について知らなければならない。物理的には、大抵の大容量記憶装置はハードディスクドライブの用語法(terminology)を用いて編成されている。一般に、ハードディスクは、プログラムまたはデータを記憶する少なくとも1つのプラッタを有している。各プラッタは、トラックと呼ばれる複数の同心状の記憶ユニットに分割されている。更に、トラックはセクタに分割されている。各プラッタは、ハードディスク上にデータの読書きを行うトップヘッド及びボトムヘッドによってアクセスされる。一方、論理的には、ハードディスクは、複数のパーティションに分割することができる。全パーティションの記憶領域の集合体がハードディスクの記憶容量を超えない限り、各パーティションの記憶容量をパーティションの生成時に選択することができる。例えば、1つの8メガバイトのハードディスクは、論理的に、C(記憶容量が4メガバイト)、D(3メガバイト)及びE(1メガバイト)と名前が付けられた3つのパーティションを有することができる。更に、パーティションは、アドレッシングのためにトラック、シリンダ及びセクタに分割される。例えば、Microsoftによって提供されるMS−DOS/Windows のFDISKユーティリティでは、PCは、タイプ及びサイズの異なるディスクパーティションを4つまで有することができる。これらの各種のタイプは、FAT12、FAT16、FAT32等のMS−DOS/WindowsタイプかまたはMS−DOS/Windows以外の他のタイプとすることができ、それにより、複数のOSを同じハードディスクにインストールすることができる。また、将来使用するために、追加のディスクパーティションタイプが予約されている。これらの予約されたパーティションの1つは、PCがスリープ状態にある間にPCメモリの内容を記憶しているために使用するように指定されている。このスリープ状態は、しばしば「ハイバネーションモード」もしくは「ディスク保存(save−to−disk)モード」と呼ばれる。ハイバネーションモードにより、オフ状態でありながら、このスリープ状態に入る前のユーザの動作環境を維持することによって、PCの電力を節約できる。PCは、ハイバネーションモードから戻って立上げられると以前の動作環境に戻るため、ブート時間が短縮される。通常、PC内の大容量記憶装置の1つのパーティションがPCのメモリを記憶するために使用され、この「ハイバネーションパーティション」は、ブート不可能とされ、アクセスも破壊も不可能であるようにオペレーティングシステムから隠されている。一般にPC電源状態の制御はBIOSによって操作されるため、BIOSコードのみがハイバネーションパーティションのデータ領域へのアクセスと読出し及び書込みの方法を知っている。
【0013】
各ハードディスクは、ディスクパーティションのサイズ、タイプ及びロケーションに関係する情報を含む1つのパーティションテーブルを有している。一般に、このパーティションテーブルは、第1ヘッドの下の第1トラックの第1セクタに記録されている。また、パーティションテーブルは、通常、マスタブートレコード(MBR)と呼ばれる。ブートレコードの目的は、オペレーティングシステムがまだ完全にはメモリにロードされていない短い期間中、PCのシステム操作を制御することである。このブートレコードは、大容量記憶装置からオペレーティングシステムをロードすることができるようにすることを担当する。PCが立上げられると、BIOSは、パーティションテーブルすなわちMBRをメモリにロードし、それに制御を移す。すると、MBR内のコードが現在選択可能なブート可能パーティションを探して、そのパーティションのブートレコードをロードして、それに制御を移す。パーティションテーブルは論理ドライブ内になく、かつ、大抵のOSは論理ドライブのみを取り扱うため、大容量記憶装置のこのレコードは、特別なソフトウェアなしにはOSが、またこれによってユーザもアクセスすることはできない。
【0014】
大容量記憶装置のデータを記憶する容量が増大するに従い、大容量記憶装置の記憶空間を各種のパーティションに分割することができるように、特にMS−DOS/Windows等のいくつかのオペレーティングシステム用にかなりのBIOSが変更されている。更に、大容量記憶装置のデータ記憶容量が増大することにより、PCメーカまたは再販業者には、大容量記憶装置内のパーティションに、製品に新たな特徴または機能を提供する有用なユーティリティプログラムを事前にロードしておく機会が与えられる。しかしながら、PCがハイバネーションパーティションを有すると、この追加の機能を付加したいと考えるPCメーカに難問を与えている。例えば、FDISKディスクパーティションユーティリティを使用するMS−DOS/Windows PCでは、大容量記憶装置には4つのパーティションしか存在することができない。ブート可能オペレーティングシステムパーティション及びハイバネーションパーティションがそれぞれ4つのパーティションの1つずつを占めると、使用可能であるのは残りの2つのパーティションのみである。PCメーカが残りの2つのパーティションの1つに特別なユーティリティプログラムを配置した場合、ユーザが望むようにロードできるのは1つのパーティションしか残らない。更に、特別なユーティリティプログラムは、ユーザによって削除されるか、もしくは不適当なソフトウェアまたはコンピュータウイルスによって破壊される可能性がある。従って、大容量記憶装置に安全にロードされる特別なシステムユーティリティプログラムが必要である。この特別なシステムユーティリティプログラムは、大容量記憶装置の追加のパーティションを使用しない限り、ユーザが使用不可能であり、ソフトウェアの不正動作またはウイルスによって引き起こされるかも知れない破壊から保護されている必要がある。
【0015】
図1は、本発明の好ましい実施の形態及び代替的な実施の形態を実現するパーソナルコンピュータ(PC)10の主な構成要素を示すブロック図である。中央処理装置(CPU)40がキャッシュメモリ42とホストバス24に接続されており、ホストバス24はメモリコントローラ20に接続されている。メモリコントローラ20は、システムRAM22をCPU40にインタフェースするために使用される。通常、MS−DOS/Windows PCのCPUは、いくつか例を挙げると、Intelによって製造されるPentium、Pentium II、Celeron、Xeon、MercedまたはMcKinleyプロセッサか、或いはAMDまたはNational Semiconductorによって製造されるそれらとコンパティブルな製品である。なお、当業者は、AppleのMacIntosh Power PCやSun Microsystems Sparc Processorのような他のアーキテクチャが存在し、それらも本発明の範囲及び精神に含まれるということを認めるであろう。また、システムRAM22は、通常は、DRAM、シンクロナス(同期式)DRAM、SRAMまたはRAMBUSメモリであるが、他のタイプを使用することも可能であり、それらもまた本発明の範囲及び精神に含まれる。CPU40に接続されたキャッシュメモリ42は、高速アクセスが可能であるように、一般にCPU40によって直接制御される。ホストバス24は、CPU40の標準バスインタフェースであってもよいし、或いはPCI等の一般的なバス規格とすることができる。このホストバス24はまた、グラフィックディスプレイ(図示せず)及びネットワークインタフェース(図示せず)等の他の高速装置へのインタフェースにも使用される。CPU40は、通常、I/Oバス28を使用して低速の装置とインタフェースする。このI/Oバス28は、一般にバスコントローラ26を用いてホストバス24に接続されている。低速のメモリは、通常、このI/Oバス28に接続されており、それによって、低速の装置へのアクセスがCPU40のホストバス24上の高速装置へのアクセスを妨げないようになっている。PC内で通常使用される低速メモリ装置には、CMOS32メモリ等の不揮発性データ及びステータス記憶装置、及び、いくつか例を挙げるとROM、EEPROMまたはフラッシュ等の装置に記憶されたBIOS14がある。一般に、キャッシュメモリ42、システムRAM22、CMOS32及びBIOS14は、CPUの「メモリ」12と呼ばれる。PC10が立上げられるかまたはリセットされた時、BIOS14に記憶されているCPU命令が実行され、好ましくはBIOS14の内容がシステムRAM22のある領域に転送されることによって、CPU40がより高速に実行することができるようになる。このBIOS14には、本発明と共に使用される2つの重要なプログラム、すなわちパワーオン自己テスト(POST)16コードと、MS−DOS/WindowsコンピュータにおいてINT 13Hと呼ばれるソフトウェア割込みハンドラを介してアクセスされるルーチン等のディスク読出しサブルーチンが含まれている。通常、大抵のPCでは、大容量記憶装置30はI/Oバス28に接続されている。なお、当業者は、大容量記憶装置が時にはホストバス24上にもあり、それもまた本発明の範囲及び精神に含まれるということを認めるであろう。この大容量記憶装置30には、1つまたは複数のフロッピディスクドライブ、ハードディスクドライブ、CD−ROMドライブ、DVDドライブ、それに加えてPCMCIA、カードバスディスクドライブ及び半導体メモリ等の他の専用の大容量記憶装置がある。また、I/Oバス28により、CPUは他のI/O装置34に接続することができ、好ましくはキーボード36、或いはいくつか例を挙げるとマウス、トラックポイント、ペンまたはタッチパッド等の他の入力装置からの入力を受信することができる。
【0016】
図2は、少なくとも2つのパーティション、すなわちブート可能OSパーティション48及びハイバネーションパーティション50を有する、パーソナルコンピュータ10用の大容量記憶装置30のフォーマットを示すための、好ましい実施の形態を示す図である。大容量記憶装置30は、その媒体上に、各パーティションの先頭ロケーション、終端ロケーション、サイズ及びブート可能状態を示すために使用される通常のパーティションテーブル44を有している。各パーティションの先頭ロケーションは、各パーティションのブートレコード46のロケーションでもある。このブートレコード46は、コンピュータ10を大容量記憶装置30の各パーティションからブートすることができるようにするコードを含んでいる。各パーティションの終端ロケーションは、各パーティションによって使用される大容量記憶装置の最後のセクタのロケーションである。各パーティションは連続した1組のセクタであり、ブートレコード46から始まって最後のセクタで終る。ブート可能OSパーティション48の場合、最後のセクタは、OSパーティション最終セクタ52として示されており、ハイバネーションパーティション52の場合、最終セクタは最終ハイバネーションセクタ54として示されている。
【0017】
ブート時に、BIOS14は、PCをブートするために大容量記憶装置のいずれのパーティションを使用すべきかを判断しなければならない。例えば、一般的なMS−DOS/Windows PCでは、ユーザがハードディスクにパーティションを切るためにFDISKユーティリティを使用した場合、ハードディスクに設けることのできるパーティションは4つまでである。これらのパーティションの1つだけをアクティブまたは「ブート可能」としてセットすることができる。BIOS14は、パーティションテーブルからマスタブートレコード(MBR)をロードし、それに制御を移す。すると、MBRは、パーティションテーブル中で示されている「ブート可能」パーティションを選択してオペレーティングシステムをロードする。PC10の電源がオフした時またはPC10がスリープ状態となった時に、BIOS14により、ハイバネーションパーティション50を用いてPCのメモリの内容が保存される。このハイバネーションモードを用いて、PC10は、ユーザが電源を切る前に設定していたPC10の状態に迅速に戻ることができる。この技術により、ユーザが、PC10がブートするために待たなければならない時間、及びユーザがPC10で作業していた状態にPC10を再構成するために必要な時間を最小化することができる。このハイバネーションパーティション50は、オペレーティングシステムによってサポートされない予約されていたタイプのパーティションを用いることにより、ブートについてはアクティブではないものとして表示され、またオペレーティングシステムから隠されている(すなわち、使用できない)。
【0018】
本発明のハイバネーションパーティション50は、従来のPCに対して変更されたハイバネーションパーティションであって、この変更されたハイバネーションパーティションは、保護されたブート可能ユーティリティプログラム領域56をハイバネーションデータ記憶領域に組込んでいる。この変更されたハイバネーションパーティション50のアクティブブート可能状態は、従来のPCのハイバネーションパーティションのように非アクティブつまり「ブート不可能」にセットされる。オペレーティングシステム等のブート可能プログラム66を含むブート可能OSパーティション48のアクティブブート可能状態は、ここでも、従来のPCのようにアクティブつまり「ブート可能」にセットされる。ブート可能ユーティリティプログラム領域56をハイバネーションデータ記憶領域内に入れておくことにより、パーティションテーブル44の残りの2つのスロットは、拡張ファイルシステムまたは他のオペレーティングシステム及びそれら各々のファイルシステムのいずれにも使用のままである。しかしながら、ブート可能ユーティリティプログラム領域56はパーティションテーブル中でブート可能でないというフラグが立っているため、ブート可能ユーティリティプログラムは通常のブート処理を用いてブートすることは不可能であり、ユーザからは使用できず、そのため偶発的な消去、破壊及び変更が防止される。
【0019】
このハイバネーションパーティション50はBIOSによってしかアクセスされないため、ユーザまたは不正動作したソフトウェアがそのユーティリティソフトウェアをいじったり、変更したりまたは除去したりすることができず、そのためセキュリティ機能が提供される。一実施形態では、ハイバネーションパーティション50の最初の数メガバイトは、単純なOS(MS−DOS等)及びユーティリティプログラム及び必要な関連ファイルを有するブート可能ユーティリティプログラム領域56部分である。あるいは、オペレーティングシステムなしでブートできる独立型のユーティリティプログラムが、ハイバネーションパーティション50に記憶される。ハイバネーションパーティション50のブート可能部分の終端部の後には、ハイバネーションデータ記憶領域51がある。この変更されたハイバネーションパーティション50は、実質的に、ブート可能ユーティリティプログラム領域56とハイバネーションデータ記憶領域51に更に分けられる。変更されたハイバネーションパーティション50は、パーティションテーブルではブート不可能であると示されたままである。一実施形態では、ユーザは、PCのブート時に、好ましくはファンクションキーF10等のホットキーを使用してユーティリティプログラムを起動する。なお、ユーティリティプログラムを起動するためにPCに対して他の入力シーケンスを使用することも可能であり、これもまた本発明の精神及び範囲に含まれる。
【0020】
いくつかの種類のアプリケーションでは、ユーティリティプログラムのこの保護された記憶領域を使用することができるようにしている。1つの例は、完全な機能を備えた(fully functional)診断自己テストプログラムである。これは、ハードウェアのより徹底的なテストを行い、POSTルーチンよりも詳しく故障の報告を行うものである。ハードウェア故障の検出及び報告に関して高レベルの信頼性を提供する診断テストを行う機能を持つことは、ユーザ及びPCメーカにとって非常に有益である。しばしば、ユーザには、所与の問題がハードウェアの欠陥であるか、コンピュータの構成間違いであるか、またはソフトウェアのバグであるかを判断することは困難である。ハードウェアに欠陥がある場合、それを修理のためにメーカに戻さなければならず、ユーザがPCを使用できなくなる。更に、その修理が保証によってカバーされる場合は、コンピュータをテスト、診断及び修理するための費用を製造業者が払わなければならない。この診断自己テストプログラムにより、ユーザに対してコンピュータが正常に機能していると断言することができれば、製造業者は経費を節約し、ユーザはコンピュータをサービスのために戻す必要がなくなる。
【0021】
本発明を利用することができる他のアプリケーションは、BIOS更新プログラムである。経費を更に低減するために、マスクROMまたはプログラマブルROM(PROM)等のプログラム固定式メモリ装置を用いて、PC内に最小のBIOSを保持する。完全な機能を備えたBIOSは、ハイバネーションパーティション50のブート可能ユーティリティプログラム領域56に記憶する。ブート時、最小BIOSが大容量記憶装置30のハイバネーションパーティション50に記憶されたBIOSをDRAMにロードし、その後そのDRAMにロードされたBIOSに制御を渡す。ユーザが大容量記憶装置に記憶されたBIOSを更新することができるようにする、別のプログラムが提供される。
【0022】
ユーザがディスクに複数のオペレーティングシステムを記憶している場合、暗号化/解読を用いて、1つのOSに埋込まれたウイルスが別のOSを保持するパーティションに記憶されたデータにアクセスしそれを攻撃することを防止することにより、補助的な非アクティブパーティションを更に安全にすることが望ましい場合がある。すなわち、ユーザが暗号化/解読ルーチンを破壊または変更することができないように、及び、暗号化/解読ルーチンをユーザのオペレーティングシステムによるロードの必要なしでこのルーチンが大容量記憶装置のデータに直接操作することができるように、暗号化/解読ルーチンをPC上で使用可能にすることが望ましい。後者の要請の理由は、オペレーティングシステムがこのルーチンを開くとウイルスプログラムによってオペレーティングシステムが危険に陥るかもしれないからである。本発明は、まさにこのようなセキュリティ対策方法を提供するものであり、この方法によれば、暗号化/解読プログラムがハイバネーションパーティション50に格納されて隠され、ブート時に、大容量記憶装置のパーティションを暗号化または解読するためにユーザまたはシステム管理機構によって起動される。
【0023】
また、暗号化/解読を用いる場合と同様な方法によって、特別なウイルスチェック及びファイル修復を提供するセキュリティの高いユーティリティプログラムが実現できる。ハイバネーションパーティション50にウイルスチェックソフトウェアを配置し、ユーザあるいは存在するかもしれないウイルスからは手を出せないようにすることにより、起こり得る侵入に対して免疫性が更に増す。
【0024】
本発明によって提供されるセキュリティの高いユーティリティプログラムスペースに対する他のアプリケーションは、セキュリティの高いユーティリティプログラムをブート時にBIOS14によって自動的に起動することにより、従来のPCのBIOSにおいて一般に見られるよりも安全なパスワード保護機能を提供するユーザ認証プログラムを提供するというものである。大抵のBIOSは使用可能なコードスペースの容量が制限されている。セキュリティの高いプログラムをブートしロードすることができるようにすることによって、2つ例を挙げるとコンピュータのマイクロフォンを使用する音声認識及びコンピュータのタッチパネルを使用する署名認識等の、別のセキュリティ認証プロトコルが実現される。
【0025】
図3は、新たにフォーマットされたハイバネーションパーティション50を用いて大容量記憶装置30を生成するために使用する処理のフローチャートである。同図において、各ブロックの動作は以下のようになっている:
170:1番目のパーティションを、ブート可能プログラムを入れることができるようにするようにフォーマットする
172:2番目のパーティションを、ハイバネーションデータ記憶領域としてフォーマットする
174:第2のパーティションの一部を、非アクティブブート可能プログラムとしてフォーマットする
ブロック170において、MS−DOS/Windows等のブート可能なオペレーティングシステム及びその各々のファイルシステムのために、第1のパーティションがフォーマットされる。そして、ブロック172において、大容量記憶装置30が第2のパーティションを持つようにフォーマットされて、多数の連続したディスクセクタの予約領域であるハイバネーションデータ記憶領域を置くことができるようにする。次に、ブロック174において、大容量記憶装置30の第2のパーティションの一部がブート可能ユーティリティプログラム領域56を含むように、第2のパーティションが再フォーマットされる。このブート可能ユーティリティプログラム領域56はアクティブであるというフラグが立てられないので、「ブート不可能」な領域である。BIOSだけが、ハイバネーションモードに入る時及びハイバネーションモードから出る時にハイバネーションデータ記憶領域から/へデータを読書きするソフトウェアであるため、ハイバネーションデータ記憶領域の先頭アドレスを動かすのは容易である。ユーザにとっての最終的な効果は、ハイバネーションパーティション50はブート可能ユーティリティプログラム領域56を組込むための余分なセクタを含むが、記憶用の他の2つのパーティションが使用できなくなるのはこれらの余分なセクタだけである、ということである。変更されたハイバネーションパーティション50が非アクティブであるとしてフラグが立てられ、ブート可能なオペレーティングシステムによってアクセスが不可能であるため、このユーティリティプログラムを起動して実行するようにBIOS14を変更しなければならない。
【0026】
図4は、本発明の好ましい実施の形態を実現するMS−DOS/Windowsアーキテクチャを使用するPCのBIOSの一例としてのブートシーケンスのフローチャートである。同図の各ブロックの動作は以下の通りである:
100:CPUリセット
102:スタートアップルーチンを実行し、リセットオリジンを獲得する
104:プロテクトモードか?
106:リアルモードに戻す
108:ハイバネーションビットがセットされているか?
109:ハイバネーションパーティションからメモリを復元する
110:POSTテストを開始する
112:コールドブートか?
113:ステータスインディケータをクリアする
114:短いPOSTを実行する
115:大容量記憶装置読み出し横取りトラップを設定する(オプション)
116:特別なキーの押下があったか?
118:ステータスインディケータをセットする
120:オペレーティングシステムをロードする
121:変更された大容量記憶読出しルーチンを実行する
122:TSRをインストールし、ソフトウエア調整を実行する
124:ユーザが選択したプログラムを実行する
126:コンピュータが準備完了となる
最初に、ブロック100において、コンピュータが立上げられるか、またはCPU40がリセットされる。そして、ブロック102において、BIOS14が、特定の電子チップセットを適切に構成するために必要なスタートアップルーチンを実行した後、リセットの起点を取り出す。次に、ブロック104において、そのリセットがチェックされ、CPUをプロテクトモードから移行するべきか否かが判断される。そうである場合、プログラムフローはブロック106に進み、リアルモードに戻して、BIOS14はブロック126へ飛んで制御を以前にロードされたオペレーティングシステムに戻す。一方、ブロック108において、リセットの起点がチェックされ、ハイバネーションビットをチェックすることにより、PC10がハイバネーションモードから目覚めるべきか否かが判断される。そうである場合、プログラムフローはブロック109に進み、大容量記憶装置30のハイバネーションパーティション50に以前記憶されたデータが読出されてシステムDRAM22に書込まれ、その後制御は復元されたオペレーティングシステムに戻される。一方、ブロック112において、CMOS32がチェックされて完全なPOSTコールドブートが実行されるべきか否かが判断される。そうである場合、ブロック110において完全なPOSTテストが実行され、個々のシステム機能が完全に構成されテストされる。完全なPOSTコールドブートが実行されるべきでない場合、プログラムフローはブロック113及びブロック114に進み、短いPOSTシーケンスが実行されてシステムのセットアップが終了する。ブロック113では、好ましくはCMOSメモリ32のステータスビットを用いて実装されるステータスインジケータがクリアされる。ブロック114における短いPOSTには特別なコードが含まれており、これにより、PC10のユーザが、ブート可能OSパーティション48のオペレーティングシステムではなくブート可能ユーティリティプログラム領域56のユーティリティプログラムをロードすべきであるということを、BIOS14に対して指示することができる。ブロック114の短いPOSTテストの間に種々の間隔で、判断ブロック116において、予め決められた入力シーケンスがユーザによって入力されたか否かが判断される。ある実施の形態では、この入力シーケンスはキーボード36のF10キーの押下である。この入力シーケンスが検出されるとブロック118においてステータスインジケータがセットされ、検出されなければブロック114の短いPOSTテストが続行される。
【0027】
本発明の他の実施の形態では、ブロック114における短いPOSTの後、プログラムフローはオプションのルーチン(図7A参照)に進み、ブロック115において、BIOSの大容量記憶読出し機能に対する呼出し(例えば、MS−DOS PCにおけるINT 13H)を「横取り」する。そして、プログラムはブロック120においてオペレーティングシステムのロードを開始する。オペレーティングシステムがロードされている時、BIOS大容量記憶読出しルーチンに対しいくつかのプログラム呼出がなされ、大容量記憶装置のいずれのパーティションをブートすべきかが判断される。このBIOS大容量記憶読出ルーチンは、好ましい実施の形態及び他の実施の形態(図6及び図7C参照)では変更され、それによってブロック121に示すように、大容量記憶装置のパーティションテーブルからの読出が検出され変更される。オペレーティングシステムがロードされた後、通常、ブロック122において様々な常駐プログラム(TSR)、ソフトウェアドライバ、及びブロック124において他のソフトウェア調整が実行され、ブロック126においてユーザに対しコンピュータが準備完了状態となる。
【0028】
図5は、図4に示す一例としてのMS−DOS/WindowsPCブロック120のフローチャートである。同図の各ブロックの動作を以下に示す:
130:INT 13H: FDDのブートレコードを読出す
132:読出しが成功したか?
134:FDDからブートする
136:INT 13H: HDDのブートレコードを読出す
138:読出しが成功したか?
140:HDDから読出す
142:ブートエラー処理へ行く
このブロック120では、BIOS14がオペレーティングシステムをブートしようとする。まず、ブロック130において、BIOS14は、INT 13Hソフトウェア割込みルーチンを呼出してフロッピディスクドライブ(FDD)のブートレコードを読出すことにより、大容量記憶装置読出しを実行しようとする。ブロック132において読出しが正常に行われると、ブロック134において、BIOS14は、FDDからのオペレーティングシステムをブートする。読出しが正常に行われなかった場合、ブロック136において、別の大容量記憶装置読出しが実行され、ハードディスクドライブ(HDD)からマスタブートレコード(パーティションテーブル)を読出そうとする。この読出しが正常に行われると、BIOS14はブロック140に進み、HDDを使用してオペレーティングシステムをブートする。一方、HDDからのマスタブートセクタの読出しが正常に行われなかった場合、BIOS14はブロック142に進み、ブートエラー処理により、BIOS14がPC10をブートすることができなかったということをPC10のユーザに警告する。なお、ブート可能性についてチェックされる対象としてFDDとHDDのみが示されているが、CD−ROM及び他の交換可能またはリムーバブル大容量記憶装置を含むようにBIOSの更なる改良は進められており、これもまた本発明の精神及び範囲内に含まれている。
【0029】
図6は、変更された大容量記憶読出しサブルーチンの本発明の一例としての実施の形態において使用されるロジックのフローチャートである。同図において、各ブロックの動作は以下の通りである:
150:呼び出しプログラムからパラメータを読み取る
152:大容量記憶装置中のパラメータによって与えられたロケーションから読出す
154:ステータスインディケータを読み取る
156:代替ブートか?
158:パーティションテーブルが記憶されているロケーションか?
160:第1パーティションがブート可能でなく第2パーティションがブート可能であるように、メモリ中のパーティションテーブルを変更する
162:パーティションテーブル呼び出しプログラムに戻る
このロジックは、大容量記憶装置30のハイバネーションパーティション50に記憶されたブート可能ユーティリティプログラム領域56がブートできるようにする。まず、ブロック150において、呼出しプログラムからパラメータが取り出される。このパラメータは、大容量記憶装置30から読出すべき1つまたは複数のセクタのロケーションを記述するために使用される。ブロック152において、このパラメータを用いて、大容量記憶装置30の所望のロケーションが読出される。そして、ブロック154においてステータスインジケータを取出し、判断ブロック156において比較されて、ブート可能ユーティリティプログラム領域56をブートする必要があるか否かが判断される。ブートする必要がない場合には、ブロック162において、大容量記憶装置30から読み出されたデータを呼出しルーチンに戻す。一方、ブート可能ユーティリティプログラム領域56をブートする必要がある場合、ブロック158において、パラメータを、パーティションテーブル44が記憶されているロケーションと比較する。パラメータがパーティションテーブル44のロケーションと一致しない場合、大容量記憶装置30から読出されたデータを呼出しプログラムに戻す。パラメータがパーティションテーブル44のロケーションと一致する場合、大容量記憶装置30から読出されたデータがパーティションテーブルの内容を含んでいるので、ブロック160において、これらの内容を変更する。読出されていたパーティションテーブル44のデータは、この変更の結果、第1のパーティション、すなわちブート可能OSパーティション48が非アクティブつまり「ブート不能」、第2のパーティションすなわちハイバネーションパーティション50がアクティブつまり「ブート可能」となる。そして、ブロック162において、パーティションテーブルの読出されて変更された内容が呼出しプログラムに戻される。本発明において必須ではないが、パーティションテーブルの読出され変更された内容を戻すだけで、別の保護機能が追加される。仮に大容量記憶装置30の実際のパーティションテーブルを変更した場合、ユーティリティプログラムによってマシンがハングアップするかまたは他の障害が発生すると、コンピュータは元のオペレーティングシステムを適切に再ブートすることができないかもしれない。更に、このようなことが起った場合、大容量記憶装置を取り外して別のPCに設置しても、それは適切にブートしないかもしれない。
【0030】
図7A〜図7Cは、大容量記憶読出しルーチンを変更する代りに、大容量記憶読出しルーチン呼出を横取りして新たなサブルーチンに置換えた本発明の他の実施の形態のフローチャートである。この新たなサブルーチンは、大容量記憶読出しルーチンを呼出して、ブート可能ユーティリティプログラム領域56がブートすべきである場合に、その結果を変更する。最近の大抵のBIOSでは、大容量記憶読出しサブルーチンを横取りすることにより、BIOSが最初にコーディングされた時には考えられておらずまた実現されていなかった将来の大容量記憶装置を付加することができる。本実施の形態の利点は、大容量記憶装置から挿入及び取外しが可能なリムーバブル媒体を有するものを含む新たな大容量記憶装置をPCに付加することが可能であり、好ましいブートドライブとすることができ、それにもまた本発明を実施できるということである。
【0031】
図7Aは、大容量記憶読出しルーチンをインタセプトする好ましい方法の設定のフローチャートである。同図の各ブロックの動作は以下の通りである:
200:ディスク読出しサブルーチンの読出しロケーションを第1のロケーションから読出す
202:ディスク読出しサブルーチンの読出しロケーションを第2のロケーションに記憶する
204:第1のサブルーチンのロケーションを第1のロケーションに記憶する
ブロック200において、第1のメモリロケーションから大容量記憶読出しルーチンのロケーションを読出す。そして、ブロック202において、大容量記憶読出しルーチンのロケーションを第2のメモリロケーションに記憶する。次に、ブロック204において、新たなサブルーチンのロケーションを第1のメモリロケーションに記憶し、それにより大容量記録読出しルーチンに対する呼出しを横取りする。
【0032】
図7Bは、第2のパーティション、すなわちハイバネーションパーティション50、のブート可能ユーティリティプログラム領域56をブートする必要があるか否かを判断する設定のブロック206から始まるフローチャートである。同図の各ブロックの動作は以下の通りである:
206:第2のパーティションからブートするか?
208:第2のパーティションからブートするために、ステータスインディケータを記憶する
210:戻る
ブートする必要がある場合、ブロック208において、第2のパーティションがブート可能パーティションであるということを示すようにステータスインジケータがセットされる。
【0033】
図7Cは、本発明の他の実施の形態における新しいプログラムのフローチャートであり、このプログラムは大容量記憶読出しルーチンの代りに呼出され、それによって大容量記憶読出しルーチンを「横取り」するものである。同図の各ブロックの動作は以下の通りである:
219:呼び出しプログラムからパラメータを得る
220:第2のロケーションを読出して、ディスク読出しサブルーチンのロケーションを得る
222:ディスク読出しサブルーチンを呼び出して、結果を戻す
224:記憶されているステータスインディケータを読出す
226:第2のパーティションからブートする必要があるか?
228:ブートディスク上のパーティションテーブルは読出されたか?
230:第1のパーティションがブート不能であり第2のパーティションがブート可能であることを示すように結果を変更する
232:結果を呼び出しプログラムへ戻す
ブロック220において、第2のメモリロケーションを読出し、元の大容量記憶読出しルーチンのロケーションを取出す。そして、ブロック222において、大容量記憶読出しルーチンを呼出して大容量記憶装置30中の、呼出しプログラムから新たなルーチンに渡されブロック219で取得されたパラメータによって決定されるロケーションを読出す。次に、ブロック224において、記憶されていたステータスインジケータを読出し、ブロック226において、それを用いて第2のパーティションをブートする必要があるか否か判断する。第2のパーティションをブートする必要がない場合、ブロック232において、大容量記憶装置から読出された結果をそのまま呼出しプログラムに戻す。一方、第2のパーティションをブートする必要がある場合、ブロック228においてパラメータをチェックし、大容量記憶装置のパーティションテーブルが読出されたか否かが判断される。読出されていない場合、大容量記憶装置から読出された結果をそのまま呼出しプログラムに戻す。一方、パーティションテーブルを読出していた場合、ブロック230において、第1のパーティションは非アクティブまたは「ブート不可能」であり、第2のパーティションはアクティブまたは「ブート可能」であるということを示すように、読出された結果を変更する。そして、ブロック232において、パーティションテーブルの変更された結果を呼出しプログラムに戻す。
【0034】
本発明の利点は、PCのユーザがブート時に、完全な診断スーツ等のセキュリティの高いユーティリティプログラムを実行することができるということである。また、そのセキュリティの高いユーティリティプログラムを提供するために製造コストが余分にかかることも、またディスクパーティションを余計に使ってしまうこともなく、かつ、ユーザが気付く程の大容量記憶スペースを消費することもない。更に、このセキュリティの高いユーティリティプログラムは偶発的に消去されることがないように保護されている。なお、本発明の特定の実施の形態について示し説明したが、本発明は特許請求の範囲のみによって限定されるものである。
【0035】
以下に本発明の実施態様の例を列挙する。
【0036】
〔実施態様1〕中央処理装置(CPU)(40)と、
前記CPU(40)に接続されたメモリ(22、14)と、
前記CPU(40)に接続された入力/出力(I/O)サブシステム(26)と、
前記I/Oサブシステム(26)に接続され、第1のパーティション(48)と、ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)と、前記第1のパーティション(48)が前記コンピュータ(10)のブートに対してアクティブであり前記第2のパーティション(50)が前記コンピュータ(10)のブートに対してアクティブでないということを示すパーティションテーブル(44)を備えた大容量記憶装置(30)と、
前記コンピュータ(10)をブートするためにいずれのブート可能パーティションを使用すべきかを選択する、前記I/Oサブシステム(26)と前記CPU(40)の間のロジック手段と、
前記ロジック手段に応答して、前記パーティションテーブル(44)を読出すことができ、かつ選択されたパーティションが前記CPU(40)に関して前記コンピュータ(10)をブートするためにアクティブであると示されるように前記読出されたパーティションテーブルを変更することができる、前記メモリ(22、14)内の第1のプログラムと、
を設けたことを特徴とするコンピュータ(10)。
【0037】
〔実施態様2〕前記大容量記憶装置(30)に配置された前記パーティションテーブル(44)は変更されないことを特徴とする実施態様1記載のコンピュータ(10)。
【0038】
〔実施態様3〕前記ロジック手段は、
前記I/Oサブシステム(26)に接続され、入力シーケンスを受信することができる入力装置(36)と、
予め定められた入力シーケンスを受信したことを検出することができる前記メモリ(22、14)内の第2のプログラムと
を設けたことを特徴とする実施態様1記載のコンピュータ(10)。
【0039】
〔実施態様4〕前記第2のパーティション(50)は、前記第2のパーティション(50)が前記CPU(40)に対してアクティブであるとされた後に実行が可能であるユーティリティプログラム(56)を含むことを特徴とする実施態様1記載のコンピュータ(10)。
【0040】
〔実施態様5〕前記ユーティリティプログラム(56)は診断テストプログラムであることを特徴とする実施態様4記載のコンピュータ(10)。
【0041】
〔実施態様6〕前記メモリ(22、14)はBIOSを含み、前記ユーティリティプログラム(56)は前記BIOSを更新することができることを特徴とする実施態様4記載のコンピュータ(10)。
【0042】
〔実施態様7〕前記ユーティリティプログラム(56)は前記第1のパーティション(48)を暗号化及び解読することができることを特徴とする実施態様4記載のコンピュータ(10)。
【0043】
〔実施態様8〕前記ユーティリティプログラム(56)は前記メモリ(22、14)及び前記第1のパーティション(48)のウイルスチェックを行うことができることを特徴とする実施態様4記載のコンピュータ(10)。
【0044】
〔実施態様9〕前記第1のパーティション(48)はデータ及びプログラムを含み、前記ユーティリティプログラム(56)はブート可能な前記第1のパーティション(48)に記憶されたデータ及びプログラムへのアクセスを制限するユーザ認証プログラムであることを特徴とする実施態様4記載のコンピュータ(10)。
【0045】
〔実施態様10〕呼出し元プログラムからの前記コンピュータ(10)のブートシーケンスを変更するプログラムにおいて、
前記呼出し元プログラムは1組のパラメータを前記ブートシーケンスを変更するプログラムに渡し、
前記コンピュータ(10)は、第1のパーティション(48)と、ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)と、前記第1のパーティション(48)がブート可能であり前記第2のパーティションはブート不能であることを示すパーティションテーブル(44)と
を備えたブートディスク(30)を有し、
一組のパラメータを用いてブートディスク(30)を読出し一組の結果を戻すステップ(152)と、
前記一組のパラメータを第1の値と比較して前記パーティションテーブル(44)が読出されたと判断するステップ(158)と、
前記ブートディスクの前記パーティションテーブル(44)の内容を変更することなく、前記第1のパーティション(48)がブート不能であり、前記ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)がブート可能であることを示すように、前記戻された一組の結果を変更するステップ(160)と、
前記変更された一組の結果を前記呼出し元プログラムに戻すステップ(162)と
を含み、
前記コンピュータ(10)は前記第1のパーティション(48)でなく前記第2のパーティション(50)を用いてブートすることを特徴とするプログラム。
【0046】
〔実施態様11〕呼出し元プログラムからの前記コンピュータ(10)のブートシーケンスを変更する方法において、
前記呼出し元プログラムは1組のパラメータを前記ブートシーケンスを変更するプログラムに渡し、
前記コンピュータ(10)は、第1のパーティション(48)と、ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)と、前記第1のパーティション(48)がブート可能であり前記第2のパーティションはブート不能であることを示すパーティションテーブル(44)と
を備えたブートディスク(30)を有し、
一組のパラメータを用いてブートディスク(30)を読出し一組の結果を戻すステップ(152)と、
前記一組のパラメータを第1の値と比較して前記パーティションテーブル(44)が読出されたと判断するステップ(158)と、
前記ブートディスクの前記パーティションテーブル(44)の内容を変更することなく、前記第1のパーティション(48)がブート不能であり、前記ハイバネーションデータ記憶領域(51)を有する第2のパーティション(50)がブート可能であることを示すように、前記戻された一組の結果を変更するステップ(160)と、
前記変更された一組の結果を前記呼出し元プログラムに戻すステップ(162)と
を含み、
前記コンピュータ(10)は前記第1のパーティション(48)でなく前記第2のパーティション(50)を用いてブートすることを特徴とする方法。
【図面の簡単な説明】
【図1】パーソナルコンピュータの最小ブロック図を示す。
【図2】本発明の好ましい実施の形態による大容量記憶領域の編成を示す図である。
【図3】図2に示す本発明の好ましい実施の形態で使用される大容量記憶装置を用意するために必要な好ましいステップのフローチャートである。
【図4】図2に示す変更されたハイバネーションファイルを有するパーソナルコンピュータをブートするために使用される、本発明の好ましい実施の形態の変更されたステップを含む一例としてのブート処理を示すフローチャートである。
【図5】従来的なMS−DOS/Windowsのパーソナルコンピュータのオペレーティングシステムを見つけてロードするために必要な一例としてのステップを示すフローチャートである。
【図6】本発明の好ましい実施の形態において、大容量記憶装置のパーティションテーブルから読出されたデータを変更するサブルーチンのフローチャートである。
【図7A】本発明の他の実施の形態において、大容量記憶読出しサブルーチンへのアクセスを遮るために使用されるサブルーチンのフローチャートである。
【図7B】本発明の好ましい他の実施の形態においてステータスインジケータをセットアップするために使用されるサブルーチンのフローチャートである。
【図7C】本発明の他の実施の形態において図7A及び図7Bのサブルーチンと共に使用され、大容量記憶読出しサブルーチンから戻される結果を呼出し変更するために使用されるインターセプトサブルーチンのフローチャートである。
【符号の説明】
14:BIOS
22:システムRAM
26:バスコントローラ
30:大容量記憶装置
36:キーボード
40:CPU
44:パーティションテーブル
48:ブート可能OSパーティション
50:ハイバネーションパーティション
51:ハイバネーションデータ記憶領域
56:ブート可能ユーティリティプログラム領域
Claims (9)
- コンピュータであって、
CPUと、
前記CPUに接続されたメモリと、
前記CPUに接続されたI/Oサブシステムと、
前記I/Oサブシステムに接続され、第1のパーティションと、ハイバネーションデータ記憶領域を有する第2のパーティションと、前記第1のパーティションが前記コンピュータのブートに対してアクティブであり前記第2のパーティションが前記コンピュータのブートに対してアクティブでないということを示すパーティションテーブルとを備えた大容量記憶装置と、
前記コンピュータをブートするためにいずれのブート可能パーティションを使用すべきかを選択するための、前記I/Oサブシステムと前記CPUとの間のロジック手段と、及び
前記第2のパーティションが選択された場合に前記ロジック手段に応答して、前記パーティションテーブルを読出すことができ、かつ選択された第2のパーティションが前記CPUに関して前記コンピュータをブートするためにアクティブであると示されるように前記読出されたパーティションテーブルを変更することができる、前記メモリ内の第1のプログラムとからなり、
前記大容量記憶装置に配置された前記パーティションテーブルが、変更されない、コンピュータ。 - 前記ロジック手段が、
前記I/Oサブシステムに接続され、入力シーケンスを受信することができる入力装置と、及び
予め定められた入力シーケンスを受信したことを検出し、その検出に応じて前記第2のパーティションを選択することができる前記メモリ内の第2のプログラムとを含む、請求項1のコンピュータ。 - 前記第2のパーティションは、前記第2のパーティションが前記CPUに対してアクティブであるとされた後に実行可能であるユーティリティプログラムを含む、請求項1のコンピュータ。
- 前記ユーティリティプログラムが、診断テストプログラムである、請求項3のコンピュータ。
- 前記メモリがBIOSを含み、前記ユーティリティプログラムが前記BIOSを更新することができる、請求項3のコンピュータ。
- 前記ユーティリティプログラムが前記第1のパーティションを暗号化及び解読することができる請求項3のコンピュータ。
- 前記ユーティリティプログラムが、前記メモリ、及び前記第1のパーティションのウイルスチェックを行うことができる、請求項3のコンピュータ。
- 前記第1のパーティションがデータ及びプログラムを含み、前記ユーティリティプログラムが、ブート可能な前記第1のパーティションに記憶されたデータ及びプログラムへのアクセスを制限するためのユーザ認証プログラムである、請求項3のコンピュータ。
- 呼出しプログラムからのコンピュータのブートシーケンスを変更するための方法であって、
前記呼出しプログラムが1組のパラメータを、前記ブートシーケンスを変更するためのプログラムに渡し、前記コンピュータは、第1のパーティションと、ハイバネーションデータ記憶領域を有する第2のパーティションと、前記第1のパーティションがブート可能であり前記第2のパーティションがブート不能であることを示すパーティションテーブルとを備えたブートディスクを有しており、前記方法が、
一組のパラメータを用いてブートディスクを読出し、一組の結果を戻すステップと、
前記一組のパラメータを第1の値と比較して前記パーティションテーブルが読出されたと判断するステップと、
前記ブートディスクの前記パーティションテーブルの内容を変更することなく、前記第1のパーティションがブート不能であり、前記ハイバネーションデータ記憶領域を有する第2のパーティションがブート可能であることを示すように、前記戻された一組の結果を変更するステップと、
前記変更された一組の結果を前記呼出しプログラムに戻すステップとからなり、
前記コンピュータが前記第1のパーティションでなく前記第2のパーティションを用いてブートする、方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US235965 | 1999-01-22 | ||
US09/235,965 US6385721B1 (en) | 1999-01-22 | 1999-01-22 | Computer with bootable hibernation partition |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000215065A JP2000215065A (ja) | 2000-08-04 |
JP3539907B2 true JP3539907B2 (ja) | 2004-07-07 |
Family
ID=22887582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000014376A Expired - Fee Related JP3539907B2 (ja) | 1999-01-22 | 2000-01-24 | ブート可能プログラムを備えたコンピュータ |
Country Status (4)
Country | Link |
---|---|
US (1) | US6385721B1 (ja) |
EP (1) | EP1022655B1 (ja) |
JP (1) | JP3539907B2 (ja) |
DE (1) | DE60037606T2 (ja) |
Families Citing this family (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL129947A (en) * | 1999-05-13 | 2003-06-24 | Tadiran Telecom Business Syste | Method and apparatus for downloading software into an embedded system |
US6507905B1 (en) * | 1999-09-30 | 2003-01-14 | International Business Machines Corporation | System for modifying a master partition table of a master boot record to create a personalized local data drive having dedicated allocation for a specified user |
US6636963B1 (en) * | 1999-12-30 | 2003-10-21 | Cardiac Pacemakers, Inc. | Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium |
US7155615B1 (en) * | 2000-06-30 | 2006-12-26 | Intel Corporation | Method and apparatus for providing a secure-private partition on a hard disk drive of a computer system via IDE controller |
JP4580528B2 (ja) * | 2000-09-25 | 2010-11-17 | 株式会社東芝 | コンピュータシステムおよびそのレジューム処理方法 |
US6691213B1 (en) * | 2001-02-28 | 2004-02-10 | Western Digital Ventures, Inc. | Computer system and method for accessing a protected partition of a disk drive that lies beyond a limited address range of a host computer's BIOS |
US7366888B2 (en) * | 2001-06-07 | 2008-04-29 | Lenovo Singapore Pte. Ltd | Booting to a recovery/maintenance environment |
US7000102B2 (en) * | 2001-06-29 | 2006-02-14 | Intel Corporation | Platform and method for supporting hibernate operations |
US6523103B2 (en) * | 2001-07-17 | 2003-02-18 | Agilent Technologies, Inc. | Disablement of a write filter stored on a write-protected partition |
JP3732764B2 (ja) * | 2001-07-18 | 2006-01-11 | 東芝ソリューション株式会社 | Os立上げ方法およびos立上げシステム |
US7024549B1 (en) * | 2001-07-31 | 2006-04-04 | Western Digital Ventures, Inc. | Disk drive having a protected partition configured to load an operating system for performing a user-selected function |
US7318149B2 (en) * | 2001-09-28 | 2008-01-08 | Hewlett-Packard Development Company, L.P. | Semi-persistent relocatable ram-based virtual floppy disk method |
US7299345B2 (en) * | 2001-09-28 | 2007-11-20 | Hewlett-Packard Development Company, L.P. | Reserved ROM space for storage of operating system drivers |
US7356677B1 (en) * | 2001-10-19 | 2008-04-08 | Flash Vos, Inc. | Computer system capable of fast switching between multiple operating systems and applications |
GB2382419B (en) * | 2001-11-22 | 2005-12-14 | Hewlett Packard Co | Apparatus and method for creating a trusted environment |
US20030126459A1 (en) * | 2001-12-28 | 2003-07-03 | Chin-Jun Kao | Method of protecting basic input/output system |
JP3665615B2 (ja) * | 2002-01-30 | 2005-06-29 | 株式会社東芝 | 外部記憶装置及び外部記憶装置におけるバッテリ残量通知方法 |
JP3677252B2 (ja) * | 2002-03-22 | 2005-07-27 | 株式会社東芝 | 情報機器、記憶媒体、及び初期状態復元方法 |
JP3777136B2 (ja) * | 2002-04-01 | 2006-05-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ装置、データのデッドコピー方法、プログラム、コンピュータ装置の稼動方法 |
JP4066325B2 (ja) | 2002-06-07 | 2008-03-26 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ユーザデータのバックアップ方法 |
US8336044B2 (en) * | 2002-10-09 | 2012-12-18 | Rpx Corporation | Method and system for deploying a software image |
US7024581B1 (en) | 2002-10-09 | 2006-04-04 | Xpoint Technologies, Inc. | Data processing recovery system and method spanning multiple operating system |
US20040088697A1 (en) * | 2002-10-31 | 2004-05-06 | Schwartz Jeffrey D. | Software loading system and method |
CN1308846C (zh) * | 2002-12-16 | 2007-04-04 | 联想(北京)有限公司 | 在硬盘上实现保护计算机操作系统的方法 |
US7000159B2 (en) * | 2003-03-10 | 2006-02-14 | Dell Products L.P. | System and method for testing memory |
US7546638B2 (en) * | 2003-03-18 | 2009-06-09 | Symantec Corporation | Automated identification and clean-up of malicious computer code |
CN1282923C (zh) * | 2003-03-20 | 2006-11-01 | 宏碁股份有限公司 | 可在多种操作模式下运作的计算机系统及其操作方法 |
US7073052B2 (en) * | 2003-05-22 | 2006-07-04 | International Business Machines Corporation | Method and system for storing active files and programs in a hibernation mode |
KR100959133B1 (ko) * | 2003-07-01 | 2010-05-26 | 삼성전자주식회사 | 핫 루틴 메모리를 갖는 마이크로프로세서 시스템 및구현방법 |
TWI223774B (en) * | 2003-07-18 | 2004-11-11 | Mitac Technology Corp | Selectable booting operation method by the bios with the multi-partition in the disk |
EP1503284A1 (en) * | 2003-08-01 | 2005-02-02 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
EP1503283A1 (en) * | 2003-08-01 | 2005-02-02 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US7162629B2 (en) * | 2003-11-20 | 2007-01-09 | Intel Corporation | Method to suspend-and-resume across various operational environment contexts |
US20060106793A1 (en) * | 2003-12-29 | 2006-05-18 | Ping Liang | Internet and computer information retrieval and mining with intelligent conceptual filtering, visualization and automation |
US7363510B2 (en) * | 2004-05-26 | 2008-04-22 | Mount Sinai School Of Medicine Of New York University | System and method for presenting copy protected content to a user |
US7337368B2 (en) * | 2004-06-07 | 2008-02-26 | Dell Products L.P. | System and method for shutdown memory testing |
US8914606B2 (en) * | 2004-07-08 | 2014-12-16 | Hewlett-Packard Development Company, L.P. | System and method for soft partitioning a computer system |
US7484247B2 (en) * | 2004-08-07 | 2009-01-27 | Allen F Rozman | System and method for protecting a computer system from malicious software |
US20060080521A1 (en) * | 2004-09-23 | 2006-04-13 | Eric Barr | System and method for offline archiving of data |
US7484082B2 (en) * | 2004-11-18 | 2009-01-27 | Samsung Electronics Co., Ltd. | Method and apparatus for multiple boot environments within a hard disk drive |
US20060123220A1 (en) * | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Speech recognition in BIOS |
US7529921B2 (en) * | 2004-12-17 | 2009-05-05 | Cardiac Pacemakers, Inc. | Fast initialization of medical device system having multiple operating systems |
JP2006236193A (ja) | 2005-02-28 | 2006-09-07 | Fujitsu Ltd | 起動プログラム実行方法、デバイス、記憶媒体及びプログラム |
CN100383761C (zh) * | 2005-03-10 | 2008-04-23 | 联想(北京)有限公司 | 一种建立硬盘物理分区的方法 |
US7661126B2 (en) | 2005-04-01 | 2010-02-09 | Microsoft Corporation | Systems and methods for authenticating a user interface to a computer user |
US7565535B2 (en) * | 2005-05-06 | 2009-07-21 | Microsoft Corporation | Systems and methods for demonstrating authenticity of a virtual machine using a security image |
US7721094B2 (en) * | 2005-05-06 | 2010-05-18 | Microsoft Corporation | Systems and methods for determining if applications executing on a computer system are trusted |
JP4640071B2 (ja) * | 2005-09-21 | 2011-03-02 | 富士通株式会社 | 情報処理装置、情報処理復旧方法及び情報処理復旧プログラム |
US8200869B2 (en) | 2006-02-07 | 2012-06-12 | Seagate Technology Llc | Storage system with alterable background behaviors |
CN100418319C (zh) * | 2006-05-18 | 2008-09-10 | 清华大学 | 透明计算系统中端设备间数据的传送方法 |
US20070283114A1 (en) * | 2006-06-01 | 2007-12-06 | Lawrence Andy V | Method and system for dividing a hard disk drive into multiple host access spaces |
KR101121641B1 (ko) * | 2006-07-03 | 2012-04-16 | 엘지전자 주식회사 | 시스템 동작 제어 장치 및 방법 |
AU2008202556B2 (en) * | 2007-06-26 | 2013-01-17 | Universal Entertainment Corporation | Information processing unit for automatically copying system information |
JP2009009227A (ja) * | 2007-06-26 | 2009-01-15 | Aruze Corp | システム情報を自動複写する情報処理装置 |
CN101359356B (zh) | 2007-08-03 | 2010-08-25 | 联想(北京)有限公司 | 删除或隔离计算机病毒的方法及系统 |
US8793796B2 (en) * | 2008-01-09 | 2014-07-29 | Microsoft Corporation | Booting a device from a trusted environment responsive to device hibernation |
CN101620462A (zh) * | 2008-07-03 | 2010-01-06 | 鸿富锦精密工业(深圳)有限公司 | 计算机装置 |
KR101530412B1 (ko) * | 2008-10-15 | 2015-06-19 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 화상 형성 재료 공급 카트리지 및 인쇄 카트리지 |
JP5289153B2 (ja) * | 2009-04-14 | 2013-09-11 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにコンピュータプログラム |
JP5037586B2 (ja) * | 2009-10-30 | 2012-09-26 | 東芝テック株式会社 | 商品販売データ処理装置およびその制御プログラム |
JP5471365B2 (ja) * | 2009-11-27 | 2014-04-16 | 富士通株式会社 | 情報処理装置及びコンピュータプログラム |
JP5511506B2 (ja) | 2010-05-25 | 2014-06-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法及び該方法を装置で実行することが可能なコンピュータプログラム |
US9003415B2 (en) | 2010-05-25 | 2015-04-07 | International Business Machines Corporation | Method and apparatus having resistance to forced termination attack on monitoring program for monitoring a predetermined resource |
WO2012076266A1 (en) | 2010-12-09 | 2012-06-14 | International Business Machines Corporation | Computer-readable storage mediums for encrypting and decrypting a virtual disc |
JP5911504B2 (ja) | 2010-12-13 | 2016-05-11 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ストリーミング技術に基づくソフトウェア・イメージのアップグレード |
JP6070115B2 (ja) * | 2012-11-28 | 2017-02-01 | 日本電気株式会社 | 情報処理装置、bmcおよびbiosアップデート方法 |
CN104008070A (zh) * | 2013-02-25 | 2014-08-27 | Lsi公司 | 固态驱动器中的主引导记录保护 |
US10528116B2 (en) * | 2013-03-14 | 2020-01-07 | Seagate Technology Llc | Fast resume from hibernate |
US9940039B2 (en) | 2015-05-21 | 2018-04-10 | Western Digital Technologies, Inc. | Method and data storage device with enhanced data retention |
US10157093B2 (en) * | 2015-05-27 | 2018-12-18 | Nxp Usa, Inc. | Data integrity check within a data processing system |
US10635451B2 (en) * | 2016-09-08 | 2020-04-28 | Hewlett-Packard Development Company, L.P. | Mass storage medium having an operating system but not a partition table pre-installed |
US10474473B2 (en) * | 2017-04-11 | 2019-11-12 | Intel Corporation | Technology to facilitate rapid booting with high-speed and low-speed nonvolatile memory |
JP7067270B2 (ja) * | 2018-05-25 | 2022-05-16 | 富士通株式会社 | 情報処理装置,ロードプログラムおよびロード方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261104A (en) | 1990-03-22 | 1993-11-09 | International Business Machines | Flexible computer initialization |
EP0483865A3 (en) | 1990-11-02 | 1992-09-02 | Kabushiki Kaisha Toshiba | Personal computer capable of changing boot priority |
FR2691556B1 (fr) | 1992-05-25 | 1994-08-26 | Hewlett Packard Co | Procédé et dispositif de démarrage d'un ordinateur à un instant programmé. |
US5390324A (en) * | 1992-10-02 | 1995-02-14 | Compaq Computer Corporation | Computer failure recovery and alert system |
US5802363A (en) * | 1994-09-27 | 1998-09-01 | International Business Machines Corporation | Bios dynamic emulation of multiple diskettes from a single media |
US5537540A (en) | 1994-09-30 | 1996-07-16 | Compaq Computer Corporation | Transparent, secure computer virus detection method and apparatus |
US5680540A (en) * | 1995-01-31 | 1997-10-21 | Bell Usa, L.P. | Suspend-to-disk system for removable hard drive |
US5754853A (en) * | 1995-12-15 | 1998-05-19 | Dell Usa, Lp | System for executing utility programs while preserving the state of a native operating system |
US5787491A (en) | 1996-01-26 | 1998-07-28 | Dell Usa Lp | Fast method and apparatus for creating a partition on a hard disk drive of a computer system and installing software into the new partition |
US5875344A (en) * | 1996-07-16 | 1999-02-23 | Compaq Computer Corporation | Using a file enabler with firmware |
US5822582A (en) | 1996-07-19 | 1998-10-13 | Compaq Computer Corporation | Boot drive selection and hibernation file detection |
US5974517A (en) * | 1996-09-17 | 1999-10-26 | Compaq Computer Corporation | Method and system for mounting a system partition as a logical drive while an operating system is operational by modifying a partition table |
US5974567A (en) * | 1997-06-20 | 1999-10-26 | Compaq Computer Corporation | Ghost partition |
US6041395A (en) * | 1997-12-03 | 2000-03-21 | Dell Usa, L.P. | System and method for changing partition mappings to logical drives in a computer memory |
-
1999
- 1999-01-22 US US09/235,965 patent/US6385721B1/en not_active Expired - Fee Related
-
2000
- 2000-01-17 DE DE60037606T patent/DE60037606T2/de not_active Expired - Lifetime
- 2000-01-17 EP EP00300308A patent/EP1022655B1/en not_active Expired - Lifetime
- 2000-01-24 JP JP2000014376A patent/JP3539907B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000215065A (ja) | 2000-08-04 |
EP1022655A3 (en) | 2002-09-11 |
DE60037606D1 (de) | 2008-02-14 |
US6385721B1 (en) | 2002-05-07 |
EP1022655B1 (en) | 2008-01-02 |
EP1022655A2 (en) | 2000-07-26 |
DE60037606T2 (de) | 2008-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3539907B2 (ja) | ブート可能プログラムを備えたコンピュータ | |
US6862681B2 (en) | Method and system for master boot record recovery | |
US5128995A (en) | Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system | |
CA2520707C (en) | Security system and method for computer operating systems | |
US6993649B2 (en) | Method of altering a computer operating system to boot and run from protected media | |
US5214695A (en) | Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system | |
JP4916576B2 (ja) | マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法 | |
US7702894B2 (en) | System and method for loading programs from HDD independent of operating system | |
US7146525B2 (en) | Method for backing up and recovering data in the hard disk of a computer | |
US9430250B2 (en) | Bootability with multiple logical unit numbers | |
US8281116B2 (en) | System and method for utilizing a protected/hidden region of semiconductor based memory/storage | |
US7395420B2 (en) | Using protected/hidden region of a magnetic media under firmware control | |
US20170262341A1 (en) | Flash memory-hosted local and remote out-of-service platform manageability | |
WO2001027770A1 (en) | Security card | |
KR19980046409A (ko) | 씨디롬드라이브에 의한 부팅 방법 및 그 장치 | |
Terzić et al. | BASIC INPUT/OUTPUT SYSTEM BIOS FUNCTIONS AND MODIFICATIONS | |
AU7890500A (en) | Security card |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040323 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |