説明

計算機システム及びその計算機システムへのレガシーブート方法

【課題】BIOS機構を持たない計算機システムへのレガシーオペレーティングシステムのブーティングを可能とする。
【解決手段】計算機システムは、レガシーペレーティングシステムの初期起動で使用されるブートストラップが動作するためのBIOS機構が搭載されておらず、CPU10及びメモリ20を備え、メモリ20内に拡張ファームウェア2010及びブートストラッププログラム203を有し、拡張ファームウェア2010は、BIOSエミュレータ2020及び複数のデバイスドライバ2011〜2013を有する。拡張ファームウェア2010は、ブートストラッププログラム203発行されたBIOSコールを、デバイスドライバを使用し、BIOSエミュレータによりBIOS動作のエミュレーションを行わせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算機システム及びその計算機システムへのレガシーブート方法に係り、特に、物理的なBIOS機構を備えていない計算機システムにレガシーオペレーティングシステムをブートすることができる計算機システム及びその計算機システムへのレガシーブート方法に関する。
【背景技術】
【0002】
計算機システムが備えるBIOS機構を必要とする古いタイプのオペレーティングシステムであるレガシーオペレーティングシステムのブート処理で行われるI/O装置に対する制御は、ブートストラップコードから発行されるINT命令によりBIOSがコールされ、ハードウェアに備える物理I/OデバイスのROMに組み込まれたBIOSコードを実行することにより行われている。従来、この制御は、ブート処理における低水準のI/O動作を仮想マシンのモニタ上で実現するに留まっている。
【0003】
レガシーオペレーティングシステムのブーティングに関する従来技術として、例えば、特許文献1等に記載された技術が知られている。この従来技術は、仮想計算機上におけるI/O制御のセキュリティ向上を図る技術、BIOSコール時の拡張ファームウェアを使用した場合に、I/OデバイスのBIOSコードのエミュレーションを行う技術に関するものである。
【特許文献1】特表2005−528665号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
前述した従来技術は、仮想マシン上でベンダーが提供するI/Oデバイスドライバが複数動作する場合におけるセキュリティ対策に関する技術であり、仮想マシンモニタを持たない計算機システムで、かつ、BIOS機構が備わっていない計算機システムにおけるレガシーオペレーティングシステムのブートを実現する方法については配慮されていない。
【0005】
一般に、新しいオペレーティングシステムのブートは、BIOS機構を必要としない方式が広がりつつあるが、現在に至ってもレガシーオペレーティングシステムの利用は多く見られる。BIOSの実装は、BIOSを提供するベンダーに依存しているため、ベンダーから提供されるBIOSは、拡張ファームウェアで計算機システムを提供する製造側にとっては拡張や改変に融通が利きにくいものである。
【0006】
本発明の目的は、前述したような点に鑑み、BIOS機構を持たない計算機システムへのレガシーオペレーティングシステムのブーティングを可能とした計算機システム及びその計算機システムへのレガシーオペレーティングシステムのブート方法を提供することにある。
【0007】
また、本発明の目的は、本来、BIOSコードをサポートしていないI/Oデバイスにおいてエミュレーションを行う際に、I/Oデバイスドライバが提供する初期化及びI/O駆動に関する実行コードそのもののエミュレーションを、I/Oデバイスベンダが提供するドライババイナリコードを利用して行うことを可能にした計算機システム及びその計算機システムへのレガシーオペレーティングシステムのブート方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明によれば、レガシーペレーティングシステムの初期起動で使用されるブートストラップが動作するためのBIOS機構が搭載されていない計算機システムにおいて、CPU及びメモリを備え、該メモリ内に拡張ファームウェア及びブートストラッププログラムを有し、前記拡張ファームウェアが、BIOSエミュレータ及び複数のデバイスドライバを有し、前記拡張ファームウェアが、前記ブートストラッププログラムから発行されたBIOSコールを、前記デバイスドライバを使用し、前記BIOSエミュレータによりBIOS動作のエミュレーションを行わせることにより達成される。
【発明の効果】
【0009】
本発明によれば、BIOSコードを持たないベンダー提供のI/Oデバイスに対して及びBIOS機構を備えるI/Oデバイスの両方に対してレガシーオペレーションシステムのブートを行うことが可能になる。
【発明を実施するための最良の形態】
【0010】
以下、本発明による計算機システム及びその計算機システムへのレガシーブート方法の実施形態を図面により詳細に説明する。
【0011】
本発明の実施形態を説明する前に、まず、従来技術によるBIOS機構を必要とするレガシーペレーティングシステムが動作可能な計算機システムの構成について説明する。
【0012】
図1は従来技術によるBIOS機構を必要とするレガシーペレーティングシステムが動作可能な計算機システムの構成例を示すブロック図である。
【0013】
図1に示す計算機システムは、物理計算機としてマザーボード1上に構成されるものであり、マザーボード1の上に、CPU10、メモリ20、複数のI/Oデバイス301〜303が搭載され、I/Oデバイス301〜303のそれぞれにI/O装置401〜403が接続されて構成されている。そして、メモリ20には、I/Oデバイス301〜303のそれぞれに対応するBIOS3011〜3013がロードされる。
【0014】
前述のように構成された計算機システムの電源オン、すなわち、パワーオンが実行されると、メモリ20には、マザーボード上に設けられている図示しないROM、あるいは、図示しない外部の記憶装置等から初期起動動作に必要なBIOS201とINTベクタ202とがロードされ、実装されているI/Oデバイス301〜303のデバイスのうち適切なブートデバイスを選択し、BIOS201の実行コードにより選択済みのデバイスのI/Oからレガシーペレーティングシステムのブートストラッププログラム203がロードされ、CPU10がブートストラッププログラム203の命令コードの実行を行う。
【0015】
レガシーブートストラッププログラム203の命令コードには、BIOSコールを発行するINT命令が含まれ、ブートストラッププログラム203の中のINT命令が実行されると、ソフトウェアによる割り込み処理が発生し、INTベクタ202の設定に従って特定の割り込プログラムが実行される。この割込プログラムは、BIOSコードであり、I/Oデバイス301〜303のBIOSコードを実行してI/O装置401〜403の駆動制御を行う。このようなI/O装置401〜403の駆動制御により、1つのI/O装置からオペレーティングシステムが読み込まれて、計算機システムにブートされることになる。
【0016】
図2は本発明の一実施形態によるBIOSエミュレータを搭載した計算機システムの構成例を示すブロック図である。
【0017】
図2に示す計算機システムは、物理計算機あるいは仮想計算機としてマザーボード2上に構成されるものであり、マザーボード2の上に、CPU10、メモリ20、複数のI/Oデバイス301〜303が搭載され、I/Oデバイス301〜303のそれぞれにI/O装置401〜403が接続されて構成されている。そして、メモリ20には、I/Oデバイス301〜303のそれぞれに対応するBIOS3011〜3013がロードされる。そして、図2に示す計算機システムは、本発明により、拡張ファームウェア2010がメモリ20にロードされて構成される。拡張ファームウェア2010は、I/Oデバイスを駆動するための複数の拡張ファームウェアデバイスドライバ2011〜2013と、拡張ファームウェア2010をプラットフォームとするBIOSエミュレータ2020とが組み込まれて構成されている。
【0018】
なお、前述したI/Oデバイス301〜303のそれぞれに対応するBIOS3011〜3013は、メモリカードとして提供される場合もあり、また、I/Oデバイス301〜303に備えられていない場合もある。
【0019】
前述のように構成された本発明の実施形態による計算機システムの電源オン、すなわち、パワーオンが実行されると、メモリ20には、マザーボード上に設けられている図示しないROM、あるいは、図示しない外部の記憶装置等から拡張ファームウェア2010がロードされ、この拡張ファームウェア2010により、デバイスドライバ2011〜2013と、INTベクタ202とが適切にロードされ、また、ブートストラッププログラム230がロードされる。拡張ファームウェア2010は、BIOSエミュレータ2020をロードするよう拡張ファームウェア2010にバンドルする形態をとり、拡張ファームウェア2010によりBIOSエミュレータ2020がロードされる。
【0020】
また、拡張ファームウェア2010は、実装されるI/Oデバイス301〜303のデバイス初期化を適切に実行し、I/Oデバイス301〜303のそれぞれに接続されているI/O装置401〜403の接続状況を確認して適切にブート可能なデバイスを検出する。図2に示す例では、I/O装置401がストレージデバイスであり、I/O装置401に、ブートストラップファイル501とオペレーティングシステムファイル502とが登録されているものとする。このとき、ブート起動I/OデバイスとしてのI/O装置401を起動選択すると、拡張ファームウェア2010により、I/Oデバイス301に対するデバイスドライバ2013のI/O駆動によりメモリ20にブートストラップファイル501がロードされブートストラッププログラム203が実行される。
【0021】
ブートストラッププログラム203は、命令コードを順次実行し、やがてBIOSによるI/O動作を必要とするINT命令が実行され、このINT命令が実行されたときソフトウェア割り込みによりINTベクタ202が索引され、このベクタにリンクするBIOSエミュレータ2020のコード呼び出しを行い、BIOSエミュレーション/モード移行を得て拡張ファームウェア2010のデバイスドライバ2013の制御を行うことによりI/O駆動が実行される。このI/O駆動により、オペレーティングシステムが読み込まれて、計算機システムにブートされることになる。
【0022】
図3はBIOSエミュレータ2010の処理動作を説明する図であり、次に、前述したBIOSエミュレーションの処理動作について説明する。
【0023】
(1)メモリ2にロードされたINTベクタ202には、拡張ファームウェア2010の持つBIOSエミュレータベクタ2021が上書きされて設定されており、INT命令によりBIOSコールが発生すると、BIOSエミュレータベクタ2021は、BIOSエミュレータ2020にハンドリングする。
【0024】
(2)BIOSエミュレータ2020は、最初にBIOSスイッチング2101を判断し、BIOSサポートのデバイスでありレガシーサポートのBIOSをコールする場合、元のBIOS INTハンドラ204に処理を引き渡し、従来通りのレガシーBIOSの実行によりBIOSサポートのI/Oデバイス3002のI/O駆動を行う。
【0025】
(3)BIOSスイッチング2101の判断で、エミュレーションを行うとされた場合、INT発行時におけるソフト割り込みタイプを分析し割り込み発生時の情報保持等を行った後、BIOSモード、32/64ビットモード移行2103により、X86またはX64CPUアーキテクチャで動作するBIOSモードの16ビットモードから拡張ファームウェア2010が動作可能な32ビットプロテクトまたは64ビットモードに移行させる。
【0026】
(4)その後、拡張ファームウェアエミュレーションコール2104を実行し、拡張ファームウェア2010を呼び出すことにより、拡張ファームウェア2010が持つI/Oドライバ2201により拡張ファームウェアサポートのI/Oデバイス3001のI/O駆動を行う。
【0027】
前述したBIOSエミュレータ2020での処理によるI/O駆動の結果は、拡張ファームウェア2010より拡張ファームウェアエミュレーションコール2104に返送され、32/64ビットモードからBIOSモード移行2103に移され、BIOSスイッチング2101からINT発行元にBIOSコール結果として返送される。
【0028】
なお、前述したエミュレーション処理において、拡張ファームウェア2010にBIOSサポートI/Oデバイス3002を制御するI/Oデバイスドライバ2201が実装されている場合、これらもエミュレーション可能となる。
【0029】
図4はBIOSエミュレータ環境の初期化からブートストラップの実行に至るディスパッチングとBIOSコール時におけるBIOSエミュレータ及び拡張ファームウェアの処理動作を説明するシーケンスチャートであり、次に、これについて説明する。
【0030】
(1)計算機システムがパワーオンされると、初動動作で拡張ファームウェア2010が起動され、拡張ファームウェア2010は、処理A4101によりBIOSエミュレータ2020の32/64ビットエミュレーション実行部421(図3に示すBIOSモード、32/64ビットモード移行2103に相当)を初期化する。
【0031】
(2)その後、32/64ビットエミュレーション実行部421は、処理B4211によりBIOSエミュレータ2020のBIOSモード実行部422(図3に示す拡張ファームウェアエミュレーションコール2104に相当)のコード32/64ビットコード及びBIOSモード移行エミュレータの初期化を行う。
【0032】
(3)また、32/64ビットエミュレーション実行部421は、処理C4212によりINTベクタをBIOSエミュレータH4223をエントリーとするように括り付けを行って初期化を行うと共に、処理D4213によりブートストラップファイルをメモリにロードした後、処理E4214によりBIOSモードエミュレーションディスパッチを行う。
【0033】
(4)ディスパッチの後、BIOSモード実行部422は、処理F4222によりブート起動の起動準備を実施し、ブートストラッププログラム203のブートストラップコード430に実行を遷移させる。
【0034】
(5)その後、ブートストラップコード430は、処理G4301の実行により、順次命令の実行を進め、BIOS実行の処理に必要なINT命令が出現するとBIOSコールによりBIOSエミュレータ2020のBIOSモード実行部422の処理H4223にハンドリングする。
【0035】
(6)BIOSモード実行部422は、処理H4223によりBIOSモードから32/64ビットへのモード移行を行い、BIOSエミュレータ2020の32/64ビットモード実行部421の処理J4215をコールする。
【0036】
(7)BIOSエミュレータ2020の32/64ビットモード実行部421は、処理J4215によりエミュレーション対応毎の動作要求が必要なI/Oデバイスの制御のための拡張ファームウェア2020の処理K4102を呼び出しI/O動作を実行させる。
【0037】
(8)拡張ファームウェア2010は、処理K4102でのI/O動作結果を適切にBIOSエミュレータ2020の32/64ビットモード実行部421の処理L4216により受領させる。
【0038】
(9)32/64ビットモード実行部421は、処理L4216によりBIOSモード移行を行い、BIOS実行部422に結果の報告を行う。BIOS実行部422は、処理M422を呼び出してエミュレーション結果をブートストラップコード430に返す。
【0039】
(10)ブートストラップコード430は、処理N4302により、前回のINT命令直後の命令コードからの命令コードを順次実行す。以降ブートストラップコード430の実行でINT命令が発行されれば、処理G4301からのシーケンスをブートストラップ実行終了まで繰り返す。
【0040】
前述した本発明の実施形態によれば、BIOSコードを持たないベンダー提供のI/Oデバイスに対して及びBIOS機構を備えるI/Oデバイスの両方に対してレガシーオペレーションシステムのブートを行うことが可能になる。また、本発明の実施形態によれば、ベンダー提供のデバイスドライバをそのままI/O駆動制御として使用することができるので、エミュレーションによる駆動制御の動作不具合や駆動中における性能には影響を及ぼさないため質を維持することができる。
【0041】
前述した本発明の実施形態での拡張ファームウェアでの処理は、プログラムにより構成し、本発明が備えるCPUに実行させることができ、また、それらのプログラムは、FD、CDROM、DVD等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【0042】
前述した本発明の実施形態は、本発明を物理計算機に適用したものとして説明したが、本発明は、仮想計算機に対しても適用することができる。
【産業上の利用可能性】
【0043】
本発明によれば、レガシーペレーティングシステムを利用している個人ユーザならびに企業サーバを提供するサーバ開発者にとって、拡張ファームウェアと併用してレガシー環境を提供する計算機システムの開発が可能になる。
【図面の簡単な説明】
【0044】
【図1】従来技術によるBIOS機構を必要とするレガシーペレーティングシステムが動作可能な計算機システムの構成例を示すブロック図である。
【図2】本発明の一実施形態によるBIOSエミュレータを搭載した計算機システムの構成例を示すブロック図である。
【図3】BIOSエミュレータの処理動作を説明する図である。
【図4】BIOSエミュレータ環境の初期化からブートストラップの実行に至るディスパッチングとBIOSコール時におけるBIOSエミュレータ及び拡張ファームウェアの処理動作を説明するシーケンスチャートである。
【符号の説明】
【0045】
1 マザーボード(物理計算機)
2 マザーボード(物理計算機)/仮想計算機
10 CPU
20 メモリ
201、3011〜3013 BIOS
202 INTベクタ
203 ブートストラッププログラム
301〜303 I/Oデバイス
401〜403 I/O装置
2010 拡張ファームウェア
2011〜2013 デバイスドライバ
2020 BIOSエミュレータ

【特許請求の範囲】
【請求項1】
レガシーペレーティングシステムの初期起動で使用されるブートストラップが動作するためのBIOS機構が搭載されていない計算機システムにおいて、
CPU及びメモリを備え、該メモリ内に拡張ファームウェア及びブートストラッププログラムを有し、前記拡張ファームウェアは、BIOSエミュレータ及び複数のデバイスドライバを有し、
前記拡張ファームウェアは、前記ブートストラッププログラムから発行されたBIOSコールを、前記デバイスドライバを使用し、前記BIOSエミュレータによりBIOS動作のエミュレーションを行わせることを特徴とする計算機システム。
【請求項2】
前記BIOSエミュレータは、BIOS動作のエミュレーションの実行時に、ブートストラップ実行中のBIOSコール発生毎に、X86またはX64CPUアーキテクチャのCPU動作モードの16ビットリアルモードから、拡張ファームウェアエミュレーション実行環境時の32ビットプロテクトモードあるいは64ビットモードへのCPU動作モード移行処理を実行することにより、ブートストラップ処理側でBIOS動作モードを変更することなくエミュレーションを行うことを特徴とする請求項1記載の計算機システム。
【請求項3】
前記BIOSエミュレータは、エミュレーション対象として搭載されるI/OデバイスであってBIOSによりサポートさていないI/Oデバイスに対して、拡張ファームウェアがサポートするI/OデバイスをBIOSエミュレーションの対象とすることを特徴とする請求項1記載の計算機システム。
【請求項4】
前記BIOSエミュレータは、搭載されるI/Oデバイスに対応するカードにより提供されるBIOSコードを使用することなく、拡張ファームウェアのデバイスドライバを使用したI/O駆動によりエミュレーションを行うことを特徴とする計算機システム。
【請求項5】
前記BIOSエミュレータは、前記ブートストラッププログラムから発行されるBIOSコール命令のINT命令に対する割り込みイベントを前記拡張ファームウェアに処理させるよう処理を渡し、命令コードのデコード、解釈の変更を要するエミュレーション行わずに前記拡張ファームウェアにI/O処理を肩代わりさせることを特徴とする請求項1記載の計算機システム。
【請求項6】
レガシーペレーティングシステムの初期起動で使用されるブートストラップが動作するためのBIOS機構が搭載されていない計算機システムへのレガシーブート方法において、
前記計算機システムは、CPU及びメモリを備え、該メモリ内に拡張ファームウェア及びブートストラッププログラムを有し、前記拡張ファームウェアは、BIOSエミュレータ及び複数のデバイスドライバを有し、
前記拡張ファームウェアは、前記ブートストラッププログラムから発行されたBIOSコールを、前記デバイスドライバを使用し、前記BIOSエミュレータによりBIOS動作のエミュレーションを行わせることを特徴とする計算機システムへのレガシーブート方法。
【請求項7】
前記BIOSエミュレータは、BIOS動作のエミュレーションの実行時に、ブートストラップ実行中のBIOSコール発生毎に、X86またはX64CPUアーキテクチャのCPU動作モードの16ビットリアルモードから、拡張ファームウェアエミュレーション実行環境時の32ビットプロテクトモードあるいは64ビットモードへのCPU動作モード移行処理を実行することにより、ブートストラップ処理側でBIOS動作モードを変更することなくエミュレーションを行うことを特徴とする請求項6記載の計算機システムへのレガシーブート方法。
【請求項8】
前記拡張ファームウェアに、BIOS機構が搭載されている計算機システムのI/Oデバイスのドライバを実装し、前記BIOSエミュレータが、BIOS動作のエミュレーションを実行可能として、拡張ファームウエアを使用したBIOS機構を持つ計算機システムが必要とするレガシーオペレーションシステムのブートを行うことを特徴とする請求項6記載の計算機システムへのレガシーブート方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2009−169450(P2009−169450A)
【公開日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願番号】特願2008−3333(P2008−3333)
【出願日】平成20年1月10日(2008.1.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】