(57)【特許請求の範囲】
【請求項１】
ＣＰＵ、メモリ、及びＩ／Ｏデバイスを備えた計算機と、前記Ｉ／Ｏデバイスに接続されたＩ／Ｏ装置と、を備えた計算機システムにおいて、
前記メモリは、前記Ｉ／Ｏデバイスを駆動するための拡張ファームウェア及び前記計算機システムの初期動作で使用されるブートストラッププログラムを有し、
前記拡張ファームウェアは、ＢＩＯＳエミュレータ及び複数のデバイスドライバを有し、
前記計算機で前記Ｉ／ＯデバイスのＩ／Ｏ駆動を行う際、前記ＢＩＯＳエミュレータは、前記ブートストラッププログラムからＢＩＯＳコールが発行されると処理を引き継いでＢＩＯＳスイッチングを判断した結果、当該Ｉ／Ｏデバイスがレガシーオペレーティングシステムの初期起動で使用されるブートストラップを動作するためのＢＩＯＳ機構を搭載していれば当該処理を当該ＢＩＯＳ機構に引き渡し、ＢＩＯＳサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行い、当該ＢＩＯＳ機構を搭載していなければ前記デバイスドライバを使用して当該ＢＩＯＳ機構をエミュレーションして前記拡張ファームウェアを呼び出し、拡張ファームウェアサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行わせることを特徴とする計算機システム。
【請求項２】
請求項１記載の計算機システムにおいて、前記ＢＩＯＳエミュレータは、前記ＢＩＯＳ機構のＢＩＯＳ動作のエミュレーションの実行時に、前記ブートストラップ実行中の前記ＢＩＯＳコールの発生毎に、Ｘ８６またはＸ６４ＣＰＵアーキテクチャのＣＰＵ動作モードの１６ビットリアルモードから、前記拡張ファームウェアのエミュレーション実行環境時の３２ビットプロテクトモードまたは６４ビットモードへのＣＰＵ動作モード移行処理を実行することにより、当該ブートストラップの処理側で当該ＢＩＯＳ動作モードを変更することなくエミュレーションを行うことを特徴とする計算機システム。
【請求項３】
請求項１記載の計算機システムにおいて、前記ＢＩＯＳエミュレータは、エミュレーション対象として搭載される前記Ｉ／Ｏデバイス中の前記ＢＩＯＳサポートされていないＩ／Ｏデバイスに対して、前記拡張ファームウェアがサポートするＩ／ＯデバイスをＢＩＯＳエミュレーションの対象とすることを特徴とする計算機システム。
【請求項４】
請求項１記載の計算機システムにおいて、前記ＢＩＯＳエミュレータは、搭載される前記Ｉ／Ｏデバイスに対応するカードにより提供されるＢＩＯＳコードを使用することなく、前記デバイスドライバを使用したＩ／Ｏ駆動によりエミュレーションを行うことを特徴とする計算機システム。
【請求項５】
請求項１記載の計算機システムにおいて、前記ＢＩＯＳエミュレータは、前記ブートストラッププログラムから発行される前記ＢＩＯＳコール命令のＩＮＴ命令に対する割り込みイベントを前記拡張ファームウェアに処理させるように渡し、命令コードのデコード、解釈の変更を要するエミュレーションを行わずに当該拡張ファームウェアに前記Ｉ／Ｏ処理を肩代わりさせることを特徴とする計算機システム。
【請求項６】
ＣＰＵ、メモリ、及びＩ／Ｏデバイスを備えた計算機と、前記Ｉ／Ｏデバイスに接続されたＩ／Ｏ装置と、を備えた計算機システムへのレガシーブート方法において、
前記メモリには、前記Ｉ／Ｏデバイスを駆動するための拡張ファームウェア及び前記計算機システムの初期動作で使用されるブートストラッププログラムを持たせ、
前記拡張ファームウェアには、ＢＩＯＳエミュレータ及び複数のデバイスドライバを持たせ、
前記計算機で前記Ｉ／ＯデバイスのＩ／Ｏ駆動を行う際、前記ＢＩＯＳエミュレータによって、前記ブートストラッププログラムからＢＩＯＳコールが発行されると処理を引き継いでＢＩＯＳスイッチングを判断した結果、当該Ｉ／Ｏデバイスがレガシーオペレーティングシステムの初期起動で使用されるブートストラップを動作するためのＢＩＯＳ機構を搭載していれば当該処理を当該ＢＩＯＳ機構に引き渡し、ＢＩＯＳサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行い、当該ＢＩＯＳ機構を搭載していなければ前記デバイスドライバを使用して当該ＢＩＯＳ機構をエミュレーションして前記拡張ファームウェアを呼び出し、拡張ファームウェアサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行うステップを有することを特徴とする計算機システムへのレガシーブート方法。
【請求項７】
請求項６記載の計算機システムへのレガシーブート方法において、前記ＢＩＯＳエミュレータは、前記ＢＩＯＳ機構のＢＩＯＳ動作のエミュレーションの実行時に、前記ブートストラップ実行中の前記ＢＩＯＳコールの発生毎に、Ｘ８６またはＸ６４ＣＰＵアーキテクチャのＣＰＵ動作モードの１６ビットリアルモードから、前記拡張ファームウェアのエミュレーション実行環境時の３２ビットプロテクトモードまたは６４ビットモードへのＣＰＵ動作モード移行処理を実行することにより、当該ブートストラップの処理側で当該ＢＩＯＳ動作モードを変更することなくエミュレーションを行うことを特徴とする計算機システムへのレガシーブート方法。
【請求項８】
請求項６記載の計算機システムへのレガシーブート方法において、前記拡張ファームウェアに前記ＢＩＯＳ機構が搭載されている計算機システムのＩ／Ｏデバイスのドライバを実装し、前記ＢＩＯＳエミュレータは、前記ドライバを使用してＢＩＯＳ動作のエミュレーションを実行可能とし、前記拡張ファームウェアを使用した当該ＢＩＯＳ機構を持つ計算機システムが必要とする前記レガシーオペレーティングシステムのブートを行うことを特徴とする計算機システムへのレガシーブート方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システム及びその計算機システムへのレガシーブート方法に係り、特に、物理的なＢＩＯＳ機構を備えていない計算機システムにレガシーオペレーティングシステムをブートすることができる計算機システム及びその計算機システムへのレガシーブート方法に関する。
【背景技術】
【０００２】
計算機システムが備えるＢＩＯＳ機構を必要とする古いタイプのオペレーティングシステムであるレガシーオペレーティングシステムのブート処理で行われるＩ／Ｏ装置に対する制御は、ブートストラップコードから発行されるＩＮＴ命令によりＢＩＯＳがコールされ、ハードウェアに備える物理Ｉ／ＯデバイスのＲＯＭに組み込まれたＢＩＯＳコードを実行することにより行われている。従来、この制御は、ブート処理における低水準のＩ／Ｏ動作を仮想マシンのモニタ上で実現するに留まっている。
【０００３】
レガシーオペレーティングシステムのブーティングに関する従来技術として、例えば、特許文献１等に記載された技術が知られている。この従来技術は、仮想計算機上におけるＩ／Ｏ制御のセキュリティ向上を図る技術、ＢＩＯＳコール時の拡張ファームウェアを使用した場合に、Ｉ／ＯデバイスのＢＩＯＳコードのエミュレーションを行う技術に関するものである。
【特許文献１】特表２００５−５２８６６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述した従来技術は、仮想マシン上でベンダーが提供するＩ／Ｏデバイスドライバが複数動作する場合におけるセキュリティ対策に関する技術であり、仮想マシンモニタを持たない計算機システムで、かつ、ＢＩＯＳ機構が備わっていない計算機システムにおけるレガシーオペレーティングシステムのブートを実現する方法については配慮されていない。
【０００５】
一般に、新しいオペレーティングシステムのブートは、ＢＩＯＳ機構を必要としない方式が広がりつつあるが、現在に至ってもレガシーオペレーティングシステムの利用は多く見られる。ＢＩＯＳの実装は、ＢＩＯＳを提供するベンダーに依存しているため、ベンダーから提供されるＢＩＯＳは、拡張ファームウェアで計算機システムを提供する製造側にとっては拡張や改変に融通が利きにくいものである。
【０００６】
本発明の目的は、前述したような点に鑑み、ＢＩＯＳ機構を持たない計算機システムへのレガシーオペレーティングシステムのブーティングを可能とした計算機システム及びその計算機システムへのレガシーオペレーティングシステムのブート方法を提供することにある。
【０００７】
また、本発明の目的は、本来、ＢＩＯＳコードをサポートしていないＩ／Ｏデバイスにおいてエミュレーションを行う際に、Ｉ／Ｏデバイスドライバが提供する初期化及びＩ／Ｏ駆動に関する実行コードそのもののエミュレーションを、Ｉ／Ｏデバイスベンダが提供するドライババイナリコードを利用して行うことを可能にした計算機システム及びその計算機システムへのレガシーオペレーティングシステムのブート方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の第１の手段は、ＣＰＵ、メモリ、及びＩ／Ｏデバイスを備えた計算機と、Ｉ／Ｏデバイスに接続されたＩ／Ｏ装置と、を備えた計算機システムにおいて、メモリは、Ｉ／Ｏデバイスを駆動するための拡張ファームウェア及び計算機システムの初期動作で使用されるブートストラッププログラムを有し、拡張ファームウェアは、ＢＩＯＳエミュレータ及び複数のデバイスドライバを有し、計算機でＩ／ＯデバイスのＩ／Ｏ駆動を行う際、ＢＩＯＳエミュレータは、ブートストラッププログラムからＢＩＯＳコールが発行されると処理を引き継いでＢＩＯＳスイッチングを判断した結果、当該Ｉ／Ｏデバイスがレガシーオペレーティングシステムの初期起動で使用されるブートストラップを動作するためのＢＩＯＳ機構を搭載していれば当該処理を当該ＢＩＯＳに引き渡し、ＢＩＯＳサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行い、当該ＢＩＯＳ機構を搭載していなければ複数のデバイスドライバを使用して当該ＢＩＯＳ機構をエミュレーションして拡張ファームウェアを呼び出し、拡張ファームウェアサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行うことを特徴とする。また、本発明の第２の手段は、ＣＰＵ、メモリ、及びＩ／Ｏデバイスを備えた計算機と、Ｉ／Ｏデバイスに接続されたＩ／Ｏ装置と、を備えた計算機システムへのレガシーブート方法において、メモリには、Ｉ／Ｏデバイスを駆動するための拡張ファームウェア及び計算機システムの初期動作で使用されるブートストラッププログラムを持たせ、拡張ファームウェアには、ＢＩＯＳエミュレータ及び複数のデバイスドライバを持たせ、計算機でＩ／ＯデバイスのＩ／Ｏ駆動を行う際、ＢＩＯＳエミュレータによって、ブートストラッププログラムからＢＩＯＳコールが発行されると処理を引き継いでＢＩＯＳスイッチングを判断した結果、当該Ｉ／Ｏデバイスがレガシーオペレーティングシステムの初期起動で使用されるブートストラップを動作するためのＢＩＯＳ機構を搭載していれば当該処理を当該ＢＩＯＳに引き渡し、ＢＩＯＳサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行い、当該ＢＩＯＳ機構を搭載していなければデバイスドライバを使用して当該ＢＩＯＳ機構をエミュレーションして拡張ファームウェアを呼び出し、拡張ファームウェアサポートの当該Ｉ／Ｏデバイスの当該Ｉ／Ｏ駆動を行うステップを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ＢＩＯＳエミュレータがブートストラッププログラムからのＢＩＯＳコール発行時にＢＩＯＳ機構の搭載有無を判断した結果に応じて、ＢＩＯＳ機構を搭載していればＢＩＯＳサポートのＩ／ＯデバイスのＩ／Ｏ駆動を行い、ＢＩＯＳ機構を搭載していなければ拡張ファームウェアサポートのＩ／ＯデバイスのＩ／Ｏ駆動を行うため、ＢＩＯＳコードを持たないベンダー提供のＩ／Ｏデバイス、及びＢＩＯＳ機構を備えるＩ／Ｏデバイスの両方に対してレガシーオペレーティングシステムのブートを行うことが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明による計算機システム及びその計算機システムへのレガシーブート方法の実施形態を図面により詳細に説明する。
【００１１】
本発明の実施形態を説明する前に、まず、従来技術によるＢＩＯＳ機構を必要とするレガシーペレーティングシステムが動作可能な計算機システムの構成について説明する。
【００１２】
図１は従来技術によるＢＩＯＳ機構を必要とするレガシーペレーティングシステムが動作可能な計算機システムの構成例を示すブロック図である。
【００１３】
図１に示す計算機システムは、物理計算機としてマザーボード１上に構成されるものであり、マザーボード１の上に、ＣＰＵ１０、メモリ２０、複数のＩ／Ｏデバイス３０１〜３０３が搭載され、Ｉ／Ｏデバイス３０１〜３０３のそれぞれにＩ／Ｏ装置４０１〜４０３が接続されて構成されている。そして、メモリ２０には、Ｉ／Ｏデバイス３０１〜３０３のそれぞれに対応するＢＩＯＳ３０１１〜３０１３がロードされる。
【００１４】
前述のように構成された計算機システムの電源オン、すなわち、パワーオンが実行されると、メモリ２０には、マザーボード上に設けられている図示しないＲＯＭ、あるいは、図示しない外部の記憶装置等から初期起動動作に必要なＢＩＯＳ２０１とＩＮＴベクタ２０２とがロードされ、実装されているＩ／Ｏデバイス３０１〜３０３のデバイスのうち適切なブートデバイスを選択し、ＢＩＯＳ２０１の実行コードにより選択済みのデバイスのＩ／Ｏからレガシーペレーティングシステムのブートストラッププログラム２０３がロードされ、ＣＰＵ１０がブートストラッププログラム２０３の命令コードの実行を行う。
【００１５】
レガシーブートストラッププログラム２０３の命令コードには、ＢＩＯＳコールを発行するＩＮＴ命令が含まれ、ブートストラッププログラム２０３の中のＩＮＴ命令が実行されると、ソフトウェアによる割り込み処理が発生し、ＩＮＴベクタ２０２の設定に従って特定の割り込プログラムが実行される。この割込プログラムは、ＢＩＯＳコードであり、Ｉ／Ｏデバイス３０１〜３０３のＢＩＯＳコードを実行してＩ／Ｏ装置４０１〜４０３の駆動制御を行う。このようなＩ／Ｏ装置４０１〜４０３の駆動制御により、１つのＩ／Ｏ装置からオペレーティングシステムが読み込まれて、計算機システムにブートされることになる。
【００１６】
図２は本発明の一実施形態によるＢＩＯＳエミュレータを搭載した計算機システムの構成例を示すブロック図である。
【００１７】
図２に示す計算機システムは、物理計算機あるいは仮想計算機としてマザーボード２上に構成されるものであり、マザーボード２の上に、ＣＰＵ１０、メモリ２０、複数のＩ／Ｏデバイス３０１〜３０３が搭載され、Ｉ／Ｏデバイス３０１〜３０３のそれぞれにＩ／Ｏ装置４０１〜４０３が接続されて構成されている。そして、メモリ２０には、Ｉ／Ｏデバイス３０１〜３０３のそれぞれに対応するＢＩＯＳ３０１１〜３０１３がロードされる。そして、図２に示す計算機システムは、本発明により、拡張ファームウェア２０１０がメモリ２０にロードされて構成される。拡張ファームウェア２０１０は、Ｉ／Ｏデバイスを駆動するための複数の拡張ファームウェアデバイスドライバ２０１１〜２０１３と、拡張ファームウェア２０１０をプラットフォームとするＢＩＯＳエミュレータ２０２０とが組み込まれて構成されている。
【００１８】
なお、前述したＩ／Ｏデバイス３０１〜３０３のそれぞれに対応するＢＩＯＳ３０１１〜３０１３は、メモリカードとして提供される場合もあり、また、Ｉ／Ｏデバイス３０１〜３０３に備えられていない場合もある。
【００１９】
前述のように構成された本発明の実施形態による計算機システムの電源オン、すなわち、パワーオンが実行されると、メモリ２０には、マザーボード上に設けられている図示しないＲＯＭ、あるいは、図示しない外部の記憶装置等から拡張ファームウェア２０１０がロードされ、この拡張ファームウェア２０１０により、デバイスドライバ２０１１〜２０１３と、ＩＮＴベクタ２０２とが適切にロードされ、また、ブートストラッププログラム２３０がロードされる。拡張ファームウェア２０１０は、ＢＩＯＳエミュレータ２０２０をロードするよう拡張ファームウェア２０１０にバンドルする形態をとり、拡張ファームウェア２０１０によりＢＩＯＳエミュレータ２０２０がロードされる。
【００２０】
また、拡張ファームウェア２０１０は、実装されるＩ／Ｏデバイス３０１〜３０３のデバイス初期化を適切に実行し、Ｉ／Ｏデバイス３０１〜３０３のそれぞれに接続されているＩ／Ｏ装置４０１〜４０３の接続状況を確認して適切にブート可能なデバイスを検出する。図２に示す例では、Ｉ／Ｏ装置４０１がストレージデバイスであり、Ｉ／Ｏ装置４０１に、ブートストラップファイル５０１とオペレーティングシステムファイル５０２とが登録されているものとする。このとき、ブート起動Ｉ／ＯデバイスとしてのＩ／Ｏ装置４０１を起動選択すると、拡張ファームウェア２０１０により、Ｉ／Ｏデバイス３０１に対するデバイスドライバ２０１３のＩ／Ｏ駆動によりメモリ２０にブートストラップファイル５０１がロードされブートストラッププログラム２０３が実行される。
【００２１】
ブートストラッププログラム２０３は、命令コードを順次実行し、やがてＢＩＯＳによるＩ／Ｏ動作を必要とするＩＮＴ命令が実行され、このＩＮＴ命令が実行されたときソフトウェア割り込みによりＩＮＴベクタ２０２が索引され、このベクタにリンクするＢＩＯＳエミュレータ２０２０のコード呼び出しを行い、ＢＩＯＳエミュレーション／モード移行を得て拡張ファームウェア２０１０のデバイスドライバ２０１３の制御を行うことによりＩ／Ｏ駆動が実行される。このＩ／Ｏ駆動により、オペレーティングシステムが読み込まれて、計算機システムにブートされることになる。
【００２２】
図３はＢＩＯＳエミュレータ２０１０の処理動作を説明する図であり、次に、前述したＢＩＯＳエミュレーションの処理動作について説明する。
【００２３】
（１）メモリ２にロードされたＩＮＴベクタ２０２には、拡張ファームウェア２０１０の持つＢＩＯＳエミュレータベクタ２０２１が上書きされて設定されており、ＩＮＴ命令によりＢＩＯＳコールが発生すると、ＢＩＯＳエミュレータベクタ２０２１は、ＢＩＯＳエミュレータ２０２０にハンドリングする。
【００２４】
（２）ＢＩＯＳエミュレータ２０２０は、最初にＢＩＯＳスイッチング２１０１を判断し、ＢＩＯＳサポートのデバイスでありレガシーサポートのＢＩＯＳをコールする場合、元のＢＩＯＳ  ＩＮＴハンドラ２０４に処理を引き渡し、従来通りのレガシーＢＩＯＳの実行によりＢＩＯＳサポートのＩ／Ｏデバイス３００２のＩ／Ｏ駆動を行う。
【００２５】
（３）ＢＩＯＳスイッチング２１０１の判断で、エミュレーションを行うとされた場合、ＩＮＴ発行時におけるソフト割り込みタイプを分析し割り込み発生時の情報保持等を行った後、ＢＩＯＳモード、３２／６４ビットモード移行２１０３により、Ｘ８６またはＸ６４ＣＰＵアーキテクチャで動作するＢＩＯＳモードの１６ビットモードから拡張ファームウェア２０１０が動作可能な３２ビットプロテクトまたは６４ビットモードに移行させる。
【００２６】
（４）その後、拡張ファームウェアエミュレーションコール２１０４を実行し、拡張ファームウェア２０１０を呼び出すことにより、拡張ファームウェア２０１０が持つＩ／Ｏドライバ２２０１により拡張ファームウェアサポートのＩ／Ｏデバイス３００１のＩ／Ｏ駆動を行う。
【００２７】
前述したＢＩＯＳエミュレータ２０２０での処理によるＩ／Ｏ駆動の結果は、拡張ファームウェア２０１０より拡張ファームウェアエミュレーションコール２１０４に返送され、３２／６４ビットモードからＢＩＯＳモード移行２１０３に移され、ＢＩＯＳスイッチング２１０１からＩＮＴ発行元にＢＩＯＳコール結果として返送される。
【００２８】
なお、前述したエミュレーション処理において、拡張ファームウェア２０１０にＢＩＯＳサポートＩ／Ｏデバイス３００２を制御するＩ／Ｏデバイスドライバ２２０１が実装されている場合、これらもエミュレーション可能となる。
【００２９】
図４はＢＩＯＳエミュレータ環境の初期化からブートストラップの実行に至るディスパッチングとＢＩＯＳコール時におけるＢＩＯＳエミュレータ及び拡張ファームウェアの処理動作を説明するシーケンスチャートであり、次に、これについて説明する。
【００３０】
（１）計算機システムがパワーオンされると、初動動作で拡張ファームウェア２０１０が起動され、拡張ファームウェア２０１０は、処理Ａ４１０１によりＢＩＯＳエミュレータ２０２０の３２／６４ビットエミュレーション実行部４２１（図３に示すＢＩＯＳモード、３２／６４ビットモード移行２１０３に相当）を初期化する。
【００３１】
（２）その後、３２／６４ビットエミュレーション実行部４２１は、処理Ｂ４２１１によりＢＩＯＳエミュレータ２０２０のＢＩＯＳモード実行部４２２（図３に示す拡張ファームウェアエミュレーションコール２１０４に相当）のコード３２／６４ビットコード及びＢＩＯＳモード移行エミュレータの初期化を行う。
【００３２】
（３）また、３２／６４ビットエミュレーション実行部４２１は、処理Ｃ４２１２によりＩＮＴベクタをＢＩＯＳエミュレータＨ４２２３をエントリーとするように括り付けを行って初期化を行うと共に、処理Ｄ４２１３によりブートストラップファイルをメモリにロードした後、処理Ｅ４２１４によりＢＩＯＳモードエミュレーションディスパッチを行う。
【００３３】
（４）ディスパッチの後、ＢＩＯＳモード実行部４２２は、処理Ｆ４２２２によりブート起動の起動準備を実施し、ブートストラッププログラム２０３のブートストラップコード４３０に実行を遷移させる。
【００３４】
（５）その後、ブートストラップコード４３０は、処理Ｇ４３０１の実行により、順次命令の実行を進め、ＢＩＯＳ実行の処理に必要なＩＮＴ命令が出現するとＢＩＯＳコールによりＢＩＯＳエミュレータ２０２０のＢＩＯＳモード実行部４２２の処理Ｈ４２２３にハンドリングする。
【００３５】
（６）ＢＩＯＳモード実行部４２２は、処理Ｈ４２２３によりＢＩＯＳモードから３２／６４ビットへのモード移行を行い、ＢＩＯＳエミュレータ２０２０の３２／６４ビットモード実行部４２１の処理Ｊ４２１５をコールする。
【００３６】
（７）ＢＩＯＳエミュレータ２０２０の３２／６４ビットモード実行部４２１は、処理Ｊ４２１５によりエミュレーション対応毎の動作要求が必要なＩ／Ｏデバイスの制御のための拡張ファームウェア２０２０の処理Ｋ４１０２を呼び出しＩ／Ｏ動作を実行させる。
【００３７】
（８）拡張ファームウェア２０１０は、処理Ｋ４１０２でのＩ／Ｏ動作結果を適切にＢＩＯＳエミュレータ２０２０の３２／６４ビットモード実行部４２１の処理Ｌ４２１６により受領させる。
【００３８】
（９）３２／６４ビットモード実行部４２１は、処理Ｌ４２１６によりＢＩＯＳモード移行を行い、ＢＩＯＳ実行部４２２に結果の報告を行う。ＢＩＯＳ実行部４２２は、処理Ｍ４２２を呼び出してエミュレーション結果をブートストラップコード４３０に返す。
【００３９】
（10）ブートストラップコード４３０は、処理Ｎ４３０２により、前回のＩＮＴ命令直後の命令コードからの命令コードを順次実行す。以降ブートストラップコード４３０の実行でＩＮＴ命令が発行されれば、処理Ｇ４３０１からのシーケンスをブートストラップ実行終了まで繰り返す。
【００４０】
前述した本発明の実施形態によれば、ＢＩＯＳコードを持たないベンダー提供のＩ／Ｏデバイスに対して及びＢＩＯＳ機構を備えるＩ／Ｏデバイスの両方に対してレガシーオペレーションシステムのブートを行うことが可能になる。また、本発明の実施形態によれば、ベンダー提供のデバイスドライバをそのままＩ／Ｏ駆動制御として使用することができるので、エミュレーションによる駆動制御の動作不具合や駆動中における性能には影響を及ぼさないため質を維持することができる。
【００４１】
前述した本発明の実施形態での拡張ファームウェアでの処理は、プログラムにより構成し、本発明が備えるＣＰＵに実行させることができ、また、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【００４２】
前述した本発明の実施形態は、本発明を物理計算機に適用したものとして説明したが、本発明は、仮想計算機に対しても適用することができる。
【産業上の利用可能性】
【００４３】
本発明によれば、レガシーペレーティングシステムを利用している個人ユーザならびに企業サーバを提供するサーバ開発者にとって、拡張ファームウェアと併用してレガシー環境を提供する計算機システムの開発が可能になる。
【図面の簡単な説明】
【００４４】
【図１】従来技術によるＢＩＯＳ機構を必要とするレガシーペレーティングシステムが動作可能な計算機システムの構成例を示すブロック図である。
【図２】本発明の一実施形態によるＢＩＯＳエミュレータを搭載した計算機システムの構成例を示すブロック図である。
【図３】ＢＩＯＳエミュレータの処理動作を説明する図である。
【図４】ＢＩＯＳエミュレータ環境の初期化からブートストラップの実行に至るディスパッチングとＢＩＯＳコール時におけるＢＩＯＳエミュレータ及び拡張ファームウェアの処理動作を説明するシーケンスチャートである。
【符号の説明】
【００４５】
１  マザーボード(物理計算機)
２  マザーボード(物理計算機)／仮想計算機
１０  ＣＰＵ
２０  メモリ
２０１、３０１１〜３０１３  ＢＩＯＳ
２０２  ＩＮＴベクタ
２０３  ブートストラッププログラム
３０１〜３０３  Ｉ／Ｏデバイス
４０１〜４０３  Ｉ／Ｏ装置
２０１０  拡張ファームウェア
２０１１〜２０１３  デバイスドライバ
２０２０  ＢＩＯＳエミュレータ
【図１】
0005048526.tif 000002
【図２】
0005048526.tif 000003
【図３】
0005048526.tif 000004
【図４】
0005048526.tif 000005