(57)【要約】【課題】レガシーBIOS用LANコントローラ制御ドライバ及びEFI用LANコントローラ制御ドライバが１つのLANコントローラを重複して初期化することを防止できるネットワークコントローラの制御方法、プログラム及び情報処理装置を提供する。【解決手段】予め設定されたネットワークコントローラの設定データに基づいて、ネットワークコントローラ５，６をEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバ１５を最優先に起動し、ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、ネットワークコントローラ割当制御ドライバ１５が、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバ１３，１４を排他的に取得する。【選択図】図５
2011150431.tif 000002
【特許請求の範囲】
【請求項１】
EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを最優先に起動し、
前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得することを特徴とするネットワークコントローラの制御方法。
【請求項２】
前記ネットワークコントローラの設定データがEFI用にネットワークコントローラを初期化する指示である場合、前記EFI用ネットワークコントローラ制御ドライバが前記プロトコルを提供するドライバを取得し、ネットワークコントローラを初期化し、
前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記レガシーBIOS用ネットワークコントローラ制御ドライバがネットワークコントローラを初期化し、
EFIシステムファームウエアが、予め設定されたブートの優先順位に従って、前記EFI用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラ及び前記レガシーBIOS用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラを切り替えて、ネットワークブートを実行することを特徴とする請求項１に記載のネットワークコントローラの制御方法。
【請求項３】
コンピュータに、
EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを最優先に起動する第１手順、及び
前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得する第２手順を実行させることを特徴とするプログラム。
【請求項４】
コンピュータに、
前記ネットワークコントローラの設定データがEFI用にネットワークコントローラを初期化する指示である場合、前記EFI用ネットワークコントローラ制御ドライバが前記プロトコルを提供するドライバを取得し、ネットワークコントローラを初期化する第３手順、
前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記レガシーBIOS用ネットワークコントローラ制御ドライバがネットワークコントローラを初期化する第４手順、及び
EFIシステムファームウエアが、予め設定されたブートの優先順位に従って、前記EFI用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラ及び前記レガシーBIOS用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラを切り替えて、ネットワークブートを実行する第５手順を実行させることを特徴とする請求項３に記載のプログラム。
【請求項５】
EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、最優先に起動されると共に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを備え、
前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得することを特徴とする情報処理装置。
【請求項６】
前記ネットワークコントローラの設定データがEFI用にネットワークコントローラを初期化する指示である場合、前記EFI用ネットワークコントローラ制御ドライバが前記プロトコルを提供するドライバを取得し、ネットワークコントローラを初期化し、
前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記レガシーBIOS用ネットワークコントローラ制御ドライバがネットワークコントローラを初期化し、
EFIシステムファームウエアが、予め設定されたブートの優先順位に従って、前記EFI用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラ及び前記レガシーBIOS用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラを切り替えて、ネットワークブートを実行することを特徴とする請求項５に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークコントローラの制御方法、プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
従来のインテル社のアーキテクチャに従ったパソコンやサーバは、BIOS（Basic Input Output System）と呼ばれるファームウエアによるシステムの初期化及び診断、並びにOS（Operating System）ブート機能を持っている。しかし、近年、BIOSを拡張したEFI（Extensible Firmware Interface）と呼ばれるファームウエアが普及する方向にある。EFIを利用するシステムの構成として、例えば、特許文献１が知られている。
【０００３】
EFIでOSをブート（起動）させるには、EFIに対応したOSが必要となる。例えば、EFIに対応したWindows（登録商標）server 2008は、従来のBIOS（以下、レガシーBIOSという）ではブートできない。逆に、EFIに対応していないWindows（登録商標）server 2003やRedHatLinux5（以下、レガシーOSという）は、EFIではブートできない。これらの従来のレガシーOSを幅広くサポートするために、EFIに搭載されるBIOS互換機能有するモジュール（以下、CSM:Compatibility Support Moduleという）が開発されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１８２４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、従来のCSMを搭載したEFIベースのコンピュータシステムでは、特定のLANコントローラを無効化又は有効化する機能と、有効化されたLANコントローラ全体をEFIで制御するか又はレガシーBIOSで制御するかの選択機能しかなかった。このため、例えば、EFIがネットワークブートに失敗した状態で、レガシーBIOSがネットワークブートを実行するためには、ネットワークブートを実行する装置は再起動、設定変更、及び再起動を実行する必要がある。
【０００６】
ここで、従来のCSMを搭載したEFIベースのコンピュータシステムの動作を図１及び図２を参照しながら説明する。
【０００７】
図１は従来のCSMを搭載したEFIベースのコンピュータシステムを示す。図２は、ネットワークブートの失敗時にネットワークブート実行サーバで実行される処理を示す。図１のコンピュータシステムは、ネットワークブートイメージ格納サーバ及びネットワークブート実行サーバを有する。ネットワークブートイメージ格納サーバには、レガシーOSのイメージが格納されている。このレガシーOSのイメージは、EFIのネットワークブート機能ではブートできないイメージである。ネットワークブート実行サーバは、EFIネットワークブート、レガシーネットワークブートの順番でネットワークブートを行うものとする。
【０００８】
図２において、ネットワークブート実行サーバは、電源が投入されると（Ｓ１）、EFIのネットワークブート機能でレガシーOSのイメージをブートするが（Ｓ２）、ブートに失敗する。このため、ネットワークブート実行サーバは、再起動する（Ｓ３）。ユーザは、ネットワークブート実行サーバのLANコントローラの設定をEFIネットワークブート用の設定からレガシーネットワークブート用の設定に変更する（Ｓ４）。その後、ネットワークブート実行サーバは、再起動する（Ｓ５）。これにより、ネットワークブート実行サーバは、レガシーBIOSのネットワークブート機能でレガシーOSのイメージをブートする（Ｓ６）。このように、ネットワークブート実行サーバが再起動、設定変更、及び再起動を実行する理由は、レガシーBIOS用LANコントローラ制御ドライバとEFI用LANコントローラ制御ドライバが別々に存在し、それぞれのドライバが１つのLANコントローラを同時に制御する場合があるためである。
【０００９】
図３は、ネットワークブート実行サーバの概略構成を示す図である。図３では、ネットワークブート実行サーバは、CPU、フラッシュメモリ、NVRAM、メモリ、LANコントローラを有する。メモリには、レガシーBIOS用LANコントローラ制御ドライバ、ハードウエアアクセスEFIドライバ、EFI用LANコントローラ制御ドライバ及びその他のEFIドライバが展開されている。
【００１０】
EFI用LANコントローラ制御ドライバは、ハードウエアアクセスEFIドライバ（PciIoプロトコル）を経由してLANコントローラを制御する。EFIでは、いずれかのEFI用LANコントローラ制御ドライバがハードウエアアクセスEFIドライバを制御対象にすると、他のEFI用LANコントローラ制御ドライバが同一のハードウエアアクセスEFIドライバを制御対象にできない仕組み（後述するコネクト処理）を持つ。EFI用LANコントローラ制御ドライバがLANコントローラを初期化すると、EFIでの動作に適したハードウエア設定やEFIの設定が実行される。同様に、レガシーBIOS用LANコントローラ制御ドライバがLANコントローラを初期化すると、レガシーBIOSでの動作に適したハードウエア設定が実行される。そして、レガシーBIOS用LANコントローラ制御ドライバ及びEFI用LANコントローラ制御ドライバは、お互いを認識せずLANコントローラの初期化動作を行なう。このため、例えば、EFI用LANコントローラ制御ドライバがLANコントローラを初期化した後に、レガシーBIOS用LANコントローラ制御ドライバが同一のLANコントローラを初期化した場合、先に設定されたEFI用のハードウエア設定が動作できなくなる。従って、ネットワークブート実行サーバに含まれるシステムが不安定になる可能性があり、ネットワークブート実行サーバの動作保証ができない状態になる。
【００１１】
図４は、EFIのコネクト処理を示す図である。コネクト処理とは、EFIシステムファームウエアがEFIの関数ConnectControllerを使用する事によってドライバ同士（例えばEFI用LANコントローラ制御ドライバと、ハードウエアアクセスEFIドライバ（PciIoプロトコル））の制御を結びつける処理とする。本コネクト処理は、EFIが基本機能として持っている。
【００１２】
図４において、EFI用LANコントローラ制御ドライバはメモリに展開されると、EFIシステムファームウエアのプロトコルリストに格納される。コネクト処理では、EFIシステムファームウエアは、各EFI用LANコントローラ制御ドライバが各LANコントローラに対して制御可能であるかどうかを調べる。EFI用LANコントローラ制御ドライバがLANコントローラを制御可能である場合、EFI用LANコントローラ制御ドライバは、そのLANコントローラに対応するハードウエアアクセスEFIドライバ（PciIoプロトコル）を排他的に取得する。これにより、他のEFI用LANコントローラ制御ドライバは、同一のハードウエアアクセスEFIドライバ（PciIoプロトコル）を制御対象にできなくなる。この排他的にハードウエアアクセスEFIドライバ（PciIoプロトコル）を取得した状態をコネクト済みと呼ぶこととする。なお、EFIの機能で、コネクト処理を行うEFI用LANコントローラ制御ドライバの順序の制御は可能である。図４では、EFIシステムファームウエアは、EFI用LANコントローラ制御ドライバ１Ａが、EFI用LANコントローラ制御ドライバ２Ａよりも優先して、LANコントローラに接続可能であるか否かを調べている。
【００１３】
通常のEFIでは、コネクト処理によって複数のドライバが１つのハードウエアを重複して制御できない仕組みを持つ。しかし、レガシーBIOS用LANコントローラ制御ドライバは、EFIの機能を利用せずに、直接LANコントローラを制御する。このため、レガシーBIOS用LANコントローラ制御ドライバが初期化したLANコントローラをEFI用LANコントローラ制御ドライバが再度、重複して初期化を実行するおそれがある。一方、EFI用LANコントローラ制御ドライバは、OSのブートに必要なLANコントローラのみを初期化する。このため、レガシーBIOS用LANコントローラ制御ドライバが別のLANコントローラを初期化する場合には、１つのLANコントローラを複数のドライバが重複して初期化を行わない。このため、各LANコントローラは正常に動作できる。
【００１４】
しかし、EFIでは、OSブート可能デバイスの一覧を表示させるセットアップメニューがネットワークブート実行サーバに存在する。このため、EFIシステムファームウエアは、OSブート可能デバイスの一覧を作成するために、全てのLANコントローラに対してEFI用LANコントローラ制御ドライバを接続する必要がある。これをコネクトALLとする。このコネクトALLでは、EFI用LANコントローラ制御ドライバが全てのLANコントローラを制御対象とする。このコネクトALLが実行された後又は実行される前に、レガシーBIOS用LANコントローラ制御ドライバがLANコントローラを初期化すると、当該LANコントローラは２度初期化される。このため、ネットワークブート実行サーバに含まれるシステムが不安定になる可能性があり、ネットワークブート実行サーバの動作保証ができない状態になる。また、EFIでは、ユーザは、EFI SHELLと呼ばれるインタフェース上からコネクトＡＬＬを手動で実行可能であるため、LANコントローラが重複して初期化される状態に容易に陥るおそれがある。
【００１５】
上記課題に鑑み、明細書に開示されたネットワークコントローラの制御方法、プログラム及び情報処理装置は、レガシーBIOS用LANコントローラ制御ドライバ及びEFI用LANコントローラ制御ドライバが１つのLANコントローラを重複して初期化することを防止できることを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、明細書に開示されたネットワークコントローラの制御方法は、EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを最優先に起動し、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得することを特徴とする。
【００１７】
明細書に開示されたプログラムは、コンピュータに、EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを最優先に起動する第１手順、及び前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得する第２手順を実行させることを特徴とする。
【００１８】
明細書に開示された情報処理装置は、EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、最優先に起動されると共に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを備え、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得することを特徴とする。
【発明の効果】
【００１９】
明細書に開示されたネットワークコントローラの制御方法、プログラム及び情報処理装置は、レガシーBIOS用LANコントローラ制御ドライバ及びEFI用LANコントローラ制御ドライバが１つのLANコントローラを重複して初期化することを防止できる。
【図面の簡単な説明】
【００２０】
【図１】従来のCSMを搭載したEFIベースのコンピュータシステムを示す図である。
【図２】ネットワークブートの失敗時にネットワークブート実行サーバで実行される処理を示すフローチャートである。
【図３】ネットワークブート実行サーバの概略構成を示す図である。
【図４】EFI（Extensible Firmware Interface）のコネクト処理を示す図である。
【図５】情報処理装置の概略構成図である。
【図６】情報処理装置の動作の説明図である。
【図７】情報処理装置の動作の説明図である。
【図８】情報処理装置の動作の説明図である。
【図９】情報処理装置の動作の説明図である。
【図１０】LANコントローラ割当て制御ドライバで実行されるコネクト処理を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００２２】
図５は、情報処理装置の概略構成図である。図５の情報処理装置１００は、サーバ又はクライアントなどのコンピュータであり、ネットワークブートを実行する。ネットワークブートとは、OS（Operating System）の起動方法の１つであり、ネットワーク経由でOSのイメージをダウンロードして起動する方法である。
【００２３】
情報処理装置１００は、CPU１、フラッシュメモリ２、不揮発性メモリ（NVRAM；Non Volatile RAM）３、メモリ（DRAM；Dynamic Random Access Memory）４、及びLANコントローラ５，６を備えている。CPU１は、バス７を介して、フラッシュメモリ２、不揮発性メモリ３、メモリ４、及びLANコントローラ５，６に接続されている。
【００２４】
CPU１は、情報処理装置１００の全体の動作を制御する。フラッシュメモリ２は、ファームウエア格納領域２１を備えている。ファームウエア格納領域２１には、EFI（Extensible Firmware Interface）システムファームウエア２２が格納されている。また、フラッシュメモリ２は、CSM（Compatibility Support Module）１１、LANコントローラ設定メニュー１２、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３，１４、及びLANコントローラ割当て制御ドライバ１５を備えている。さらに、フラッシュメモリ２は、レガシーBIOS用LANコントローラ制御ドライバ１６、EFI用LANコントローラ制御ドライバ１７及びEFIネットワークドライバ１８を備えている。
【００２５】
CSM１１は、BIOS互換機能有するモジュールである。LANコントローラ設定メニュー１２は、LANコントローラ５，６を使用するLANコントローラ制御ドライバを設定するためのメニューである。ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３，１４は、LANコントローラ５，６の初期化に使用されるプロトコルを提供する。LANコントローラ割当て制御ドライバ１５は、LANコントローラ５，６を制御するLANコントローラ制御ドライバを決定する。レガシーBIOS用LANコントローラ制御ドライバ１６は、レガシーBIOSを使ってLANコントローラを初期化し、制御する。EFI用LANコントローラ制御ドライバ１７は、ハードウエアアクセスEFIドライバが提供するPciIoプロトコルを使って、LANコントローラを初期化し、制御する。EFIネットワークドライバ１８は、パケット通信用のドライバである。
【００２６】
不揮発性メモリ３は、LANコントローラ５，６をレガシーBIOSで使用するか又はEFIで使用するかの設定を保存する。また、不揮発性メモリ３は、OSブートの優先順位の設定を保存する。図５では、OSブートの優先順位として、EFIネットワークブートが最初に設定されており、次にレガシーBIOSネットワークブートが設定されている。メモリ４は、ワーキングエリアとして機能する。LANコントローラ５，６は、LANポートであり、不図示のネットワークを介してネットワークブート用のOSイメージを格納するサーバに接続されている。尚、情報処理装置１００は、１つ以上のLANコントローラを備えていればよく、２つに限定されるものではない。
【００２７】
情報処理装置１００の電源が投入されると、CPU１は、EFIシステムファームウエア２２を読み出し、メモリ４に展開する。EFIシステムファームウエア２２は、CPU１の制御によって、図５に示すように、CSM１１、LANコントローラ設定メニュー１２、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３，１４、LANコントローラ割当て制御ドライバ１５、EFI用LANコントローラ制御ドライバ１７及びEFIネットワークドライバ１８をメモリ４に展開する。また、EFIシステムファームウエア２２は、LANコントローラの個数に応じて、ハードウエアアクセスEFIドライバ（PciIoプロトコル）をメモリ４に展開する。LANコントローラ割当て制御ドライバ１５は、レガシーBIOS用LANコントローラ制御ドライバ１６を必要に応じてメモリ４に展開する。
【００２８】
次に、図６〜９を参照しながら、情報処理装置１００の動作、即ち、情報処理装置１００で実行されるセットアップ処理、コネクト処理及びネットワークブート処理を説明する。ここでは、図５に示すように、EFIシステムファームウエア２２、CSM１１、LANコントローラ設定メニュー１２、及び各種のドライバがメモリ４に展開されているものとする。
【００２９】
（セットアップ処理）
まず、図６において、LANコントローラ設定メニュー１２は、ユーザの指示に従い、不揮発性メモリ３にLANコントローラ５，６をレガシーBIOSで使用するか又はEFIで使用するかの設定を保存する（Ｓ１１）。この設定は、情報処理装置１００のリセットで反映される。また、LANコントローラ設定メニュー１２は、ユーザの指示に従い、不揮発性メモリ３にOSブートの優先順位を設定する。EFIシステムファームウエア２２は、情報処理装置１００の起動時の初期化処理において、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３，１４をLANコントローラ５，６にそれぞれ割り当てる（Ｓ１２）。
【００３０】
（LANコントローラ５へのコネクト処理）
次に、図７において、LANコントローラ５へのコネクト処理が実行される。具体的には、EFIシステムファームウエア２２が、最優先でLANコントローラ割当て制御ドライバ１５を実行する（Ｓ１３）。LANコントローラ割当て制御ドライバ１５は、不揮発性メモリ３を参照し、LANコントローラ５の設定がレガシーBIOS用にLANコントローラ５を初期化する指示であることを確認する（Ｓ１４）。
【００３１】
LANコントローラ割当て制御ドライバ１５は、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を排他的に取得する（Ｓ１５）。より具体的には、LANコントローラ割当て制御ドライバ１５は、EFIの機能で予め定められているOpenProtocolを使って、ドライバの属性を指定するOPEN_BY_DRIVERによりハードウエアアクセスEFIドライバ（PciIoプロトコル）１３の属性を指定することで、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を取得する。尚、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を排他的に取得するとは、事後的にEFI用LANコントローラ制御ドライバ１７のような他のドライバによってハードウエアアクセスEFIドライバ（PciIoプロトコル）１３が取得されないことを意味する。LANコントローラ割当て制御ドライバ１５は、レガシーBIOS用LANコントローラ制御ドライバ１６を実行する。レガシーBIOS用LANコントローラ制御ドライバ１６は、LANコントローラ５をレガシーBIOSで初期化し（Ｓ１６）、処理を終了する。
【００３２】
この後、EFIシステムファームウエア２２が、EFI用LANコントローラ制御ドライバ１７を実行すると、EFI用LANコントローラ制御ドライバ１７は、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を取得できない。これは、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３が、既にLANコントローラ割当て制御ドライバ１５によって取得されているためである。従って、EFI用LANコントローラ制御ドライバ１７は、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を制御対象としない。
【００３３】
上述したように、LANコントローラ割当て制御ドライバ１５は、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を排他的に取得する。しかしながら、LANコントローラ６をレガシーBIOSで使用する設定及びLANコントローラ５をEFIで使用する設定が不揮発性メモリ３に保存されている場合には、LANコントローラ割当て制御ドライバ１５は、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１４を排他的に取得する。つまり、LANコントローラ割当て制御ドライバ１５は、LANコントローラ５，６の設定に応じて、取得すべきハードウエアアクセスEFIドライバ（PciIoプロトコル）を変更する。
【００３４】
（LANコントローラ６へのコネクト処理）
次に、図８において、LANコントローラ６へのコネクト処理が実行される。具体的には、EFIシステムファームウエア２２が、最優先でLANコントローラ割当て制御ドライバ１５を実行する（Ｓ１７）。LANコントローラ割当て制御ドライバ１５は、不揮発性メモリ３を参照し、LANコントローラ６の設定がEFI用にLANコントローラ６を初期化する指示であることを確認する（Ｓ１８）。LANコントローラ割当て制御ドライバ１５は、レガシーBIOS用にLANコントローラ６を初期化する指示ではないため、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１４を排他的に取得せずに、処理を終了する。
【００３５】
次に、EFIシステムファームウエア２２が、EFI用LANコントローラ制御ドライバ１７を実行する（Ｓ１９）。EFI用LANコントローラ制御ドライバ１７は、EFIの機能で予め定められているOpenProtocolを使って、ドライバの属性を指定するOPEN_BY_DRIVERによりハードウエアアクセスEFIドライバ（PciIoプロトコル）１４の属性を指定することで、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１４を排他的に取得する（Ｓ２０）。EFI用LANコントローラ制御ドライバ１７は、LANコントローラ６をPciIoプロトコルを使用して初期化する（Ｓ２１）。尚、LANコントローラ６をレガシーBIOSで使用する設定及びLANコントローラ５をEFIで使用する設定が不揮発性メモリ３に保存されている場合には、EFI用LANコントローラ制御ドライバ１７は、ハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を排他的に取得する。
【００３６】
（ネットワークブート処理）
図９において、LANコントローラ５，６へのコネクト処理が終了すると、EFIシステムファームウエア２２は、不揮発性メモリ３内のOSブートの優先順位に従って、EFI用LANコントローラ制御ドライバ１７により初期化されたLANコントローラ及びレガシーBIOS用LANコントローラ制御ドライバ１６により初期化されたLANコントローラを切り替えて、ネットワークブートを実行する。このとき、レガシーBIOS用LANコントローラ制御ドライバ１６及びEFI用LANコントローラ制御ドライバ１７が１つのLANコントローラを重複して初期化することはないので、情報処理装置１００の再起動及び／又は設定変更は不要である。
【００３７】
レガシーBIOSネットワークブートでは、CSM１１が、レガシーBIOS用LANコントローラ制御ドライバ１６を初期化した際に取得できるPnP（Plug and Play）拡張ヘッダからBEV（Boot Entry Vector）エントリを取得し、そのエントリポイントを実行する。これにより、EFIシステムファームウエア２２は、レガシーBIOS用LANコントローラ制御ドライバ１６により初期化されたLANコントローラ５を介してネットワークブートを実行する。
【００３８】
一方、EFIネットワークブートでは、EFIネットワークドライバ１８が、ネットワークブート用のOSイメージをOSイメージを格納するサーバからロードし、そのOSイメージのエントリポイントを実行する。これにより、EFIシステムファームウエア２２は、EFI用LANコントローラ制御ドライバ１７により初期化されたLANコントローラ６を介してネットワークブートを実行する。
【００３９】
図９は、LANコントローラ割当て制御ドライバ１５で実行されるコネクト処理を示すフローチャートである。
【００４０】
LANコントローラ割当て制御ドライバ１５は、不揮発性メモリ３からコネクト対象のLANコントローラの設定を取得する（Ｓ３１）。LANコントローラ割当て制御ドライバ１５は、取得したコネクト対象のLANコントローラの設定が、LANコントローラをレガシーBIOS用に初期化する指示であるか否かを判別する（Ｓ３２）。コネクト対象のLANコントローラの設定が、LANコントローラをEFI用に初期化する指示である場合には（Ｓ３２でＮＯ）、LANコントローラ割当て制御ドライバ１５は、コネクト処理を終了する（Ｓ３３）。コネクト対象のLANコントローラの設定が、LANコントローラをレガシーBIOS用に初期化する指示である場合には（Ｓ３２でＹＥＳ）、LANコントローラ割当て制御ドライバ１５は、コネクト対象のLANコントローラに割り当てられたハードウエアアクセスEFIドライバ（PciIoプロトコル）を排他的に取得する（Ｓ３４）。
【００４１】
次に、LANコントローラ割当て制御ドライバ１５は、レガシーBIOS用LANコントローラ制御ドライバ１６をメモリ４に展開する（Ｓ３５）。LANコントローラ割当て制御ドライバ１５は、レガシーBIOS用LANコントローラ制御ドライバ１６の初期化エントリを実行する（Ｓ３６）。Ｓ３６の工程により、レガシーBIOS用LANコントローラ制御ドライバ１６がコネクト対象のLANコントローラを初期化する（Ｓ３７）。その後、LANコントローラ割当て制御ドライバ１５は、コネクト処理を終了する（Ｓ３８）。
【００４２】
以上説明したように、本実施の形態によれば、レガシーBIOS用にLANコントローラ５が初期化される場合に、優先的に起動するLANコントローラ割当制御ドライバ１５がLANコントローラ５の初期化に使用されるプロトコルを提供するハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を排他的に取得するため、EFI用LANコントローラ制御ドライバ１７がハードウエアアクセスEFIドライバ（PciIoプロトコル）１３を取得できない。よって、レガシーBIOS用LANコントローラ制御ドライバ１６及びEFI用LANコントローラ制御ドライバ１７が１つのLANコントローラを重複して初期化することを防止できる。また、本実施の形態によれば、レガシーBIOS用LANコントローラ制御ドライバ１６及びEFI用LANコントローラ制御ドライバ１７が同時にメモリ４上に存在する場合でも、情報処理装置１００の再起動及び／又は設定変更を伴わずに、EFIによるネットワークブートとレガシーBIOSによるネットワークブートとの切り替えができる。
【００４３】
尚、情報処理装置１００の機能を実現するためのソフトウエアのプログラムをコンピュータが実行することによっても、上記実施の形態と同様の効果を奏する。
【００４４】
本発明は、上述した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。
【００４５】
以上の実施の形態に関し、更に以下の付記を開示する。
【００４６】
（付記１）EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを最優先に起動し、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得することを特徴とするネットワークコントローラの制御方法。かかる構成によれば、レガシーBIOS用にネットワークコントローラが初期化される場合に、ネットワークコントローラ割当制御ドライバがネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得するため、EFI用ネットワークコントローラ制御ドライバがネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを取得できない。よって、レガシーBIOS用ネットワークコントローラ制御ドライバ及びEFI用ネットワークコントローラ制御ドライバが１つのネットワークコントローラを重複して初期化することを防止できる。
【００４７】
（付記２）前記ネットワークコントローラの設定データがEFI用にネットワークコントローラを初期化する指示である場合、前記EFI用ネットワークコントローラ制御ドライバが前記プロトコルを提供するドライバを取得し、ネットワークコントローラを初期化し、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記レガシーBIOS用ネットワークコントローラ制御ドライバがネットワークコントローラを初期化し、EFIシステムファームウエアが、予め設定されたブートの優先順位に従って、前記EFI用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラ及び前記レガシーBIOS用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラを切り替えて、ネットワークブートを実行することを特徴とする付記１に記載のネットワークコントローラの制御方法。かかる構成によれば、装置の再起動及び／又は設定変更を伴わずに、EFIによるネットワークブート又はレガシーBIOSによるネットワークブートを実行できる。
【００４８】
（付記３）コンピュータに、EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを最優先に起動する第１手順、及び前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得する第２手順を実行させることを特徴とするプログラム。かかる構成によれば、付記１と同様の効果を奏する。
【００４９】
（付記４）コンピュータに、前記ネットワークコントローラの設定データがEFI用にネットワークコントローラを初期化する指示である場合、前記EFI用ネットワークコントローラ制御ドライバが前記プロトコルを提供するドライバを取得し、ネットワークコントローラを初期化する第３手順、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記レガシーBIOS用ネットワークコントローラ制御ドライバがネットワークコントローラを初期化する第４手順、及びEFIシステムファームウエアが、予め設定されたブートの優先順位に従って、前記EFI用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラ及び前記レガシーBIOS用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラを切り替えて、ネットワークブートを実行する第５手順を実行させることを特徴とする付記３に記載のプログラム。かかる構成によれば、付記２と同様の効果を奏する。
【００５０】
（付記５）EFI用ネットワークコントローラ制御ドライバあるいはレガシーBIOS用ネットワークコントローラ制御ドライバの少なくとも一方がネットワークコントローラを初期化する前に、最優先に起動されると共に、予め設定されたネットワークコントローラの設定データに基づいて、当該ネットワークコントローラをEFI又はレガシーBIOSのいずれで動作するかを決定するネットワークコントローラ割当制御ドライバを備え、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記ネットワークコントローラ割当制御ドライバが、ネットワークコントローラの初期化に使用されるプロトコルを提供するドライバを排他的に取得することを特徴とする情報処理装置。かかる構成によれば、付記１と同様の効果を奏する。
【００５１】
（付記６）前記ネットワークコントローラの設定データがEFI用にネットワークコントローラを初期化する指示である場合、前記EFI用ネットワークコントローラ制御ドライバが前記プロトコルを提供するドライバを取得し、ネットワークコントローラを初期化し、前記ネットワークコントローラの設定データがレガシーBIOS用にネットワークコントローラを初期化する指示である場合、前記レガシーBIOS用ネットワークコントローラ制御ドライバがネットワークコントローラを初期化し、EFIシステムファームウエアが、予め設定されたブートの優先順位に従って、前記EFI用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラ及び前記レガシーBIOS用ネットワークコントローラ制御ドライバにより初期化されたネットワークコントローラを切り替えて、ネットワークブートを実行することを特徴とする付記５に記載の情報処理装置。かかる構成によれば、付記２と同様の効果を奏する。
【符号の説明】
【００５２】
１  CPU
２  フラッシュメモリ
３  不揮発性メモリ
４  メモリ
５，６  LANコントローラ
１１  CSM（Compatibility Support Module）
１２  LANコントローラ設定メニュー
１３，１４  ハードウエアアクセスEFIドライバ（PciIoプロトコル）
１５  LANコントローラ割当て制御ドライバ
１６  レガシーBIOS用LANコントローラ制御ドライバ
１７  EFI用LANコントローラ制御ドライバ
１８  EFIネットワークドライバ
【図１】
2011150431.tif 000003
【図２】
2011150431.tif 000004
【図３】
2011150431.tif 000005
【図４】
2011150431.tif 000006
【図５】
2011150431.tif 000007
【図６】
2011150431.tif 000008
【図７】
2011150431.tif 000009
【図８】
2011150431.tif 000010
【図９】
2011150431.tif 000011
【図１０】
2011150431.tif 000012