以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(第1の実施形態)
本発明の第1の実施形態について図面を参照して詳細に説明する。
図1は、本実施形態の情報処理システム3の構成を表すブロック図である。図1を参照すると、情報処理システム3は、情報処理装置2と、記憶装置31と、記憶装置32とを含む。記憶装置31及び記憶装置32は、情報処理装置2に接続されている。記憶装置31及び記憶装置32は、情報処理装置2に含まれていてもよい。情報処理装置2は、ネットワーク4に接続されていてもよい。
情報処理装置2は、起動制御装置1と、処理部20とを含む。処理部20は、例えばCPU(Central Processing Unit)である。情報処理装置2には、デバイス21、デバイス22、デバイス23、及びデバイス24が接続されている。図1に示す例では、デバイスの数は4個であるが、デバイスの数は4個に限られない。
デバイス21、デバイス22、デバイス23、及びデバイス24は、図1に示す例のように、それぞれ、情報処理装置2に含まれる形で、情報処理装置2に接続されていてもよい。デバイス21、デバイス22、デバイス23、及びデバイス24は、それぞれ、情報処理装置2に含まれない形で、情報処理装置2に接続されていてもよい。情報処理装置2に含まれるデバイスと、情報処理装置2に含まれないデバイスが混在していてもよい。デバイス21、デバイス22、デバイス23、及びデバイス24は、情報処理装置2から取り外せるように、通信可能に接続されていてもよい。デバイス21、デバイス22、デバイス23、及びデバイス24は、情報処理装置2から取り外せないように接続されていてもよい。情報処理装置2から取り外せるデバイスと取り外せないデバイスが混在していてもよい。
各デバイスは、例えば、インタフェースカードや通信ポートである。デバイスは、例えば、PCIe(Peripheral Component Interconnect Express)スロットに装着されたインタフェースカードであってもよい。インタフェースカードは、例えば、SAS(Serial Attached SCSI(Small Computer System Interface))インタフェースカードや、NIC(Network Interface Card)である。デバイスは、例えば、USB(Universal Serial Bus)ポートであってもよい。全てのデバイスが同じ種類のデバイスでなくてもよい。例えば、デバイスに、複数の種類のデバイスが含まれていてもよい。図1に示す例では、記憶装置31は、デバイス21を介して、情報処理装置2に接続されている。記憶装置32は、デバイス23を介して、情報処理装置2に接続されている。
記憶装置31及び記憶装置32は、ハードディスクドライブや、SSD(Solid State Drive)等の記憶装置である。
起動制御装置1は、各デバイスに接続されている。処理部20は、各デバイスに接続されている。処理部20は、起動制御装置1を介して、各デバイスに接続されていてもよい。図1において、簡略化のため、起動制御装置1及び処理部20が、デバイスのグループに接続されるように描かれている。
図2は、情報処理システム3に含まれる装置の間における接続の例を表す模式図である。図2に示す例では、処理部20は、起動制御装置1を介して、各デバイスに接続されている。記憶装置31は、情報処理装置2に含まれる。そして、記憶装置31は、デバイス21に接続されている。処理部20は、起動制御装置1とデバイス21とを介して、記憶装置31にアクセスすることができる。記憶装置32は、デバイス23を介して、情報処理装置2に接続されている。
起動制御装置1は、対象記憶部11と、検出部12と、設定部13と、初期化部14と、起動部15とを含む。
対象記憶部11は、デバイスに関する識別子であるデバイス識別子と、そのデバイスの初期化に関する設定値とを関連付けて記憶する。
検出部12は、情報処理装置2の電源が投入されると、情報処理装置2に接続されている一つ以上のデバイスを検出する。
設定部13は、検出されたデバイスの中から、そのデバイスのデバイス識別子に関連付けられている設定値に基づき、一つ以上のデバイスを選択する。そして、設定部13は、選択されたデバイスである選択デバイスを、情報処理装置2が前記デバイスにアクセスできる有効状態にする。また、設定部13は、選択デバイス以外の検出されたデバイスを、情報処理装置2がデバイスにアクセスできない無効状態にする。
初期化部14は、選択デバイスの初期化処理を実行する。
起動部15は、初期化処理が終了すると、無効状態であるデバイスを有効状態にする。そして、起動部15は、無効状態である各デバイスを有効状態にした後、情報処理装置2のOSを起動する。
次に、本実施形態の起動制御装置1の動作について、図面を参照して詳細に説明する。
図3は、本実施形態の起動制御装置1の動作を表すフローチャートである。起動制御装置1は、情報処理装置2の電源が投入されると、図3の動作を開始する。
図3を参照すると、まず、検出部12が、情報処理装置2に取り付けられているデバイスを検出する(ステップS101)。検出部12は、さらに、検出されたデバイスと通信が可能なように設定を行ってもよい。例えば、デバイスがPCIeによって接続されている場合、検出部12は、例えば、検出されたデバイスに対してリンクを確立してもよい。
図3の動作が、POST(Power On Self Test)処理の一部として行われる場合、ステップS101において、検出部12は、POST処理において検出される全てのデバイスを検出すればよい。図3の動作が、POST処理とは別に行われる場合、検出部12は、対象記憶部11にデバイス識別子が格納されていないデバイスの検出を行わなくてもよい。
設定部13は、検出されたデバイスのデバイス識別子に関連付けられている設定値を読み出し、読み出された設定値に基づき、検出されたデバイスから選択デバイスを選択する(ステップS102)。
図4は、対象記憶部11に格納されているデバイス識別子と設定値の例を表す図である。例えば、情報処理システム3の管理者が、互いに関連付けられたデバイス識別子と設定値とを、あらかじめ対象記憶部11に格納しておけばよい。デバイス識別子は、デバイスを特定する識別子であってもよい。デバイス識別子は、例えば、デバイスが接続されているスロットやポートを特定する識別子であってもよい。デバイス識別子は、例えば、デバイスが接続されているPCIeスロットを特定する識別子であってもよい。そして、デバイスは、そのデバイスが接続されているスロットやポートを特定する識別子によって特定されてもよい。
設定値は、例えば、Enabled又はDisabledである。図4において、デバイス識別子に関連付けられている設定値がEnabledであるデバイスは、例えば、情報処理装置2のOSがブートを開始する前に初期化が行われる必要があるデバイスである。情報処理装置2のOSがブートを開始する前に初期化が行われる必要があるデバイスは、例えば、情報処理装置2のOSが格納されている記憶装置が接続されているインタフェースである。図4において、値がDisabledである設定値にデバイス識別子が関連付けられているデバイスは、例えば、情報処理装置2のOSがブートを開始する前に初期化が行われる必要がないデバイスである。Enabled及びDisabledは、互いに異なる、あらかじめ定められた値を表す。図4に示す例において、設定部13は、例えばデバイス識別子に関連付けられている設定値がEnabledであるデバイスを選択デバイスとして選択する。
デバイスは、情報処理装置2の電源が投入されてから情報処理装置2のOSの起動が開始する(すなわち、OSがブートする)までの間に実行されることにより、デバイスの初期化を行うファームウェアを備えていてもよい。そのようなファームウェアは、オプションROM(Read Only Memory)と呼ばれることもある。以下の説明において、そのようなファームウェアを、オプションROMと表記する。また、デバイスが備えるファームウェアを処理部20や他のプロセッサに実行させることを、「オプションROMを実行する」あるいは「オプションROMを起動する」と表記する。
一般に、オプションROMは、例えば、オプションROMを備えたデバイスが接続されている情報処理装置2の電源が投入されると、例えばその情報処理装置2のファームウェアによって呼び出されて実行される。オプションROMの呼び出しと実行は、例えば、情報処理装置2の電源が投入されてから、その情報処理装置2のOSがブートするまでの間に行われる。オプションROMが実行されることにより、そのオプションROMを備えるデバイスにおいて、そのデバイスに独自の初期化が行われる。デバイスに記憶装置が接続されている場合、そのデバイスが備えるオプションROMによって、例えば、そのデバイスに接続されている記憶装置が検出される。情報処理装置2のOSが格納されている記憶装置が接続されている場合、そのデバイスが備えるオプションROMによって、例えば、デバイスが備えるオプションROMによってOSが格納されている記憶装置が検出される。このことにより、その記憶装置に格納されているOSのブートが可能になる。
デバイスがUSBポートである場合、例えば、情報処理装置2のOSが格納された記憶装置が接続されているUSBポートのデバイス識別子に、Enabledである設定値を関連付けられていればよい。この場合、さらに、入力装置が接続されているUSBポートのデバイス識別子に、Enabledである設定値を関連付けられていてもよい。入力装置は、例えば、キーボードなどである。入力装置又は情報処理装置2のOSが格納された記憶装置が接続されていないUSBポート以外のUSBポートのデバイス識別子には、Disabledである設定値が関連付けられていればよい。
次に、設定部13は、選択デバイスを有効状態にする。そして、設定部13は、選択デバイス以外の、検出されたデバイスを無効状態にする(ステップS103)。有効状態は、例えば、情報処理装置2がデバイスにアクセスできる状態である。無効状態は、例えば、情報処理装置2がデバイスにアクセスできない状態である。
デバイスがPCIeによって情報処理装置2に接続されるデバイスである場合、設定部13は、例えば、選択デバイスに対するPCIeリンクをリンクアップする。例えばステップS101や後述するステップS106において、各デバイスに対するPCIeリンクが既にリンクアップされているなら、設定部13は、選択デバイスに対するPCIeリンクがリンクアップされている状態を維持すればよい。また、各デバイスに対するPCIeリンクが既にリンクアップされているなら、設定部13は、例えば、選択デバイス以外の検出されたデバイスに対するPCIeリンクをリンクダウンする(すなわち、切断する)。選択デバイス以外の検出されたデバイスに対するPCIeリンクがリンクアップされていないなら、設定部13は、選択デバイス以外の検出されたデバイスに対するPCIeリンクがリンクアップされていない状態を維持すればよい。本実施形態において、PCIeリンクの切断及び接続(すなわち、リンクダウン及びリンクアップ)は、PCIeの規格に基づいて行われる。
デバイスがUSBポートである場合、設定部13は、ポート毎に個別に、USBポートを一時的に無効に設定する機能を備えていればよい。そして、設定部13は、選択デバイスであるUSBポートが有効に設定された状態を保てばよい。さらに、設定部13は、選択デバイス以外の、検出されたデバイスであるUSBポートを、無効に設定すればよい。
図5は、選択デバイス以外の検出されたデバイスが無効状態にされた状態における、情報処理システム3に含まれる装置間の接続の第1の例を表す模式図である。図5において、破線によって起動制御装置1と接続されているデバイスは、無効状態に設定されたデバイスである。設定値が図4に示す例のように設定されている場合、設定部13は、選択デバイスとして、デバイス21を選択する。そして、設定部13は、設定値がDisabledである、デバイス21、デバイス22、デバイス23、及びデバイス24を無効状態にする。
次に、初期化部14が、選択デバイスの初期化処理を行う(ステップS104)。ステップS104における初期化処理は、たとえば、選択デバイスが備えるオプションROMによる、選択デバイスに独自の初期化である。初期化部14は、選択デバイスが備えるオプションROMを実行することによって、ステップS104の動作を行えばよい。
選択デバイス以外の検出されたデバイスは無効状態であるので、初期化部14は、選択デバイス以外の検出されたデバイスにアクセスできない。選択デバイス以外の検出されたデバイスがオプションROMを備えていても、初期化部14は、選択デバイス以外の検出されたデバイスが備えるオプションROMを実行しない。
次に、起動部15は、起動デバイスを特定する(ステップS105)。起動デバイスは、例えば、情報処理装置2のOSが格納されている記憶装置である。
例えば起動部15が、あらかじめ起動デバイスの識別子である、起動デバイス識別子を記憶していればよい。その場合、起動部15は、記憶する起動デバイス識別子によって、起動デバイスを特定すればよい。あるいは、起動部15は、例えば、それぞれ優先順位が関連付けられた、複数の起動デバイス識別子を、あらかじめ記憶していてもよい。起動部15がそれぞれ優先順位が関連付けられた複数の起動デバイス識別子を記憶している場合、起動部15は、例えば、選択デバイスに接続されている、起動デバイス識別子に関連付けられている優先順位が最も高い起動デバイスを特定すればよい。そして、起動部15は、特定された起動デバイスに基づき、ブートパスを生成する。すなわち、起動部15は、制御部20が起動デバイスにアクセスする際に、経由するデバイスの順番を特定する。
あるいは、例えば起動部15が、あらかじめブートパスを記憶していてもよい。起動部15は、優先順位が付与された複数のブートパスを、あらかじめ記憶していてもよい。例えば、優先順位が付与された複数のブートパスがあらかじめ起動部15に設定されている場合、起動部15は、選択デバイスを経由するブートパスのうち、最も高い優先順位が付与されているブートパスを特定する。
起動部15ではなく、起動部15が読み取り可能な記憶部(図示されない)が、起動デバイス識別子又はブートパスを記憶していてもよい。そして、起動部15が、その記憶部から、起動デバイス識別子又はブートパスを読み出してもよい。
次に、起動部15は、検出されたデバイスのうち、無効状態であるデバイスを、有効状態にする(ステップS106)。起動部15は、例えば、対象記憶部11から、各デバイスのデバイス識別子とそのデバイス識別子に関連付けられている設定値を読み出せばよい。そして、起動部15は、デバイス識別子に関連付けられている設定値がDisabledであるデバイスを、有効状態に設定すればよい。
デバイスがPCIeによって接続されるデバイスである場合、起動部15は、デバイス識別子に関連付けられている設定値がDisabledであるデバイスにおいて、PCIeリンクをつなげばよい(すなわち、リンクアップすればよい)。デバイスがUSBポートである場合、起動部15は、デバイス識別子に関連付けられている設定値がDisabledであるデバイス(すなわちUSBポート)の設定を、無効から有効に変更すればよい。
起動部15は、情報処理装置2のハードウェアやOSに応じた、情報処理装置2のOSが起動するために必要な処理や設定が存在するなら、その必要な処理や設定を行う。
次に、起動部15は、情報処理装置2のOSを起動する(ステップS107)。OSが起動すると、OSが備えるドライバによって、情報処理装置2が備える各デバイスの初期化が行われる。OSによるデバイスの初期化は、OSが起動している情報処理装置2において、デバイスを使用可能な状態に設定する処理である。従って、ステップS104において初期化が行われていないデバイスであっても、OSが起動すると、OSによる初期化が行われることによって使用可能になる。
以上で説明した本実施形態には、情報処理装置2が備えるデバイスが使用できなくなることなく、情報処理装置2の起動時間を短縮できるという第1の効果がある。
その理由は、設定部13が、デバイスの初期化が行われる前に、OSが起動する前に初期化が行われる必要がないデバイスを無効状態に設定するからである。そして、起動部15が、初期化部14によるデバイスの初期化が行われた後、OSが起動される前に、無効状態に設定されているデバイスを有効状態に設定するからである。無効状態に設定されたデバイスの対する初期化は行われない。従って、無効状態に設定されているデバイスに対する初期化処理が不要になる。一方、設定部13は、OSが起動するために初期化が必要なデバイスを有効状態に保つ。そして、有効状態に保たれているデバイスに対して、初期化部14によってデバイスの初期化が行われる。従って、OSの起動は可能である。そして、起動部15が、無効状態に設定されているデバイスを、OSが起動される前に、有効状態に設定する。従って、無効状態に設定されているデバイスに対する、OSによる初期化は行われる。従って、OSが起動された後、初期化部14による初期化が行われないデバイスの使用が可能になる。
本実施形態には、さらに、デバイスが備えるファームウェアによる初期化が失敗するリスクを低減することができるという第2の効果がある。そのような初期化の失敗は、例えば、デバイスのベンダが想定しない状態で、デバイスが情報処理装置2に搭載されることが原因で発生する。
第2の効果が生じる理由は、第1の効果の理由と同様に、設定部13が、デバイスの初期化が行われる前に、OSが起動する前に初期化が行われる必要がないデバイスを無効状態に設定するからである。
以下の説明において、デバイスのベンダが想定しない状態で、デバイスが情報処理装置2に搭載されることに起因する、デバイスが備えるファームウェアによる初期化において発生するエラーを、想定外初期化エラーと表記する。想定外初期化エラーが発生する状況として、例えば、情報処理装置2に搭載されているあるデバイスの個数が、そのデバイスのベンダが想定する個数と異なる状況が考えられる。具体的には、あるデバイスのファームウェアによってサポートされる個数を上回る個数のそのデバイスが、情報処理装置2に搭載されている状況が考えられる。そのような状況で、そのデバイスのファームウェアによる初期化において、ファームウェアが正常に動作しなければ、上述の想定外初期化エラーが発生する。
しかし、情報処理装置2のOSが起動できる最低限のデバイスのみが情報処理装置2に接続されている状況は、通常、そのデバイスのベンダによって想定される。そして、そのデバイスのベンダは、通常、想定された状態において、デバイスのファームウェアによる初期化においてエラーが発生しないように、ファームウェアを作成する。従って、情報処理装置2のOSが起動する最低限のデバイスのみが情報処理装置2に接続されている状況において、通常、上述の想定外初期化エラーは発生しない。そして、本実施形態の設定部13によって、情報処理装置2のOSが起動されるのに必要なデバイス以外のデバイスが無効状態に設定されている状況は、情報処理装置2のOSが起動する最低限のデバイスのみが情報処理装置2に接続されている状況と同等である。
上述のように、設定部13は、情報処理装置2のOSが起動するために不要なデバイスを無効状態に設定する。そのため情報処理装置2に搭載されているデバイスの状況が、想定外初期化エラーが発生する状況であっても、想定外初期化エラーが通常発生しない状況になる。従って、想定外初期化エラーが発生するリスクは減少する。不要なデバイスを無効状態に設定するための設定は、対象記憶部11に格納される設定値を、あらかじめ適宜設定しておくことによって行われる。なお、対象記憶部11に格納されている設定値は、必ずしも、情報処理装置2のOSが起動されるのに必要なデバイス以外の全てのデバイスが無効状態になるように設定されていなくてもよい。対象記憶部11に格納されている設定値は、情報処理装置2のOSが起動でき、かつ、想定外初期化エラーが発生しないよう、あらかじめ設定されていればよい。設定部13は、そのような設定に従って、デバイスを無効状態に設定すればよい。
ところで、例えばBIOS(Basic Input/Output System)の設定によって、デバイスが備えるファームウェアによる初期化が実行されるか否かを選択する方法も考えられる。しかし、ファームウェアが実行されると、BIOSの設定によらず、そのファームウェアを備えるデバイスと同じ又は同じ種類の、情報処理装置2に搭載されている他のデバイスに対する初期化を行うファームウェアも存在する。デバイスがそのようなファームウェアを備える場合、その種類のデバイスのうち少なくとも1個のデバイスにおいてファームウェアによる初期化が実行されると、前述のBIOSの設定によって、上述のエラーを防ぐことはできない。一方、本実施形態では、そのデバイスが無効状態に設定されるとそのデバイスに対してアクセスできない。従って、本実施形態では、デバイスが上述のようなファームウェアを備える場合であっても、デバイスのベンダが想定する個数のデバイスに対してのみ初期化が実行されるように設定値をあらかじめ設定しておくことによって、上述のエラーは発生しない。
また、上述の想定外初期化エラーが発生する構成を備える情報処理システムを、製品として出荷しなければならない場合が考えられる。さらに、想定外初期化エラーによって、OSが起動する前に情報処理システムが停止する場合がある。そのような場合、その情報処理システムに搭載されるデバイスのファームウェアを、想定外初期化エラーが発生しないよう修正する必要がある。そして、想定外初期化エラーによる情報処理システムの停止を回避できなければ、想定外初期化エラーが発生するデバイスのベンダによる、ファームウェアの修正が完了するまで、情報処理システムのテストを行うことはできない。しかし、上述のように、本実施形態では、想定外初期化エラーの発生を回避することができるので、OSを起動することができる。従って、ファームウェアの修正が完了する前に、情報処理システムの運用テスト等の情報処理システムを動作させて行うテストを開始することができる。そのため、本実施形態では、製品を出荷するまでの時間を短縮することができる。そして、それにより、情報処理システムを構築するために必要なコストを削減することができる。
(第2の実施形態)
次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。
図1は、本実施形態の情報処理システム3の構成を表すブロック図である。本実施形態の情報処理システム3の構成は、第1の実施形態の情報処理システムの構成と同じである。
本実施形態の対象記憶部11は、設定値に加えて、デバイスの優先順位を、デバイス識別子に関連付けて記憶する。対象記憶部11は、デバイス識別子に関連付けられた設定値として、デバイスの優先順位を記憶してもよい。
設定部13は、デバイス識別子に関連付けられている設定値に基づき、デバイスを選択する。設定部13は、さらに、設定値に基づき選択されたデバイスにおいて、関連付けられている優先順位が高い所定個数のデバイスを、選択デバイスとして選択する。
起動部15は、選択デバイスにおいて、情報処理装置2のOSを読み出す起動元デバイスを特定する。そして、起動部15は、特定された起動元デバイスからOSを起動する。
OSの起動が失敗した場合、設定部13は、OSの起動が失敗したデバイスを除く、設定値に基づき選択されたデバイスにおいて、デバイス識別子に関連付けられてい記優先順位が最も高いデバイスを、新たに選択デバイスとして選択する。
起動部15は、新たに選択された選択デバイスにおいて起動元デバイスを特定し、特定された起動元デバイスからOSを起動する。
本実施形態の各構成要素は、他の点において、第1の実施形態における、同じ符号が付与された構成要素と同じである。
次に、本実施形態の起動制御装置1の動作について、図面を参照して詳細に説明する。
図6は、本実施形態の起動制御装置1の動作を表すフローチャートである。図6に示すステップS101と、ステップS103からステップS107までの各ステップは、以下で説明する点を除き、図1において同じ符号が付与されているステップと同じである。
ステップS101の動作の後、設定部13は、検出部12がステップS101において検出したデバイスのデバイス識別子に設定値として関連付けられている優先順位を、対象記憶部11から読み出す。そして、設定部13は、例えば、最も高い優先順位にデバイス識別子が関連付けられているデバイスを、選択デバイスとして選択する(ステップS202)。
図7は、本実施形態の対象記憶部11が記憶する、デバイス識別子と設定値の第1の例を表す図である。そして、デバイス識別子に関連付けられている設定値が、そのデバイス識別子によって特定されるデバイスに付与されている優先順位を表す。そして、図7に示す例では、設定値の値が小さいほど、優先順位が高い。また、図7に示す例において、値がDisabledである設定値は、その設定値が付与されているデバイスに優先順位が付与されていないことを表す。なお、同じ優先順位が、設定値として複数のデバイスのデバイス識別子に関連付けられていてもよい。複数のデバイスに最も高い優先順位が付与されている場合、設定値は、最も高い優先順位が付与されている複数のデバイスを選択デバイスとして選択すればよい。
図7に示す例では、値がDisabled以外である設定値が、第1の実施形態において値がEnabledである設定値に相当する。すなわち、デバイスに図7に示す設定値が付与されている場合、設定部13は、Disabled以外の設定値にデバイス識別子が関連付けられているデバイスを、まず選択すればよい。そして、設定部13は、Disabled以外の設定値にデバイス識別子が関連付けられているデバイスから、設定値によって表される優先順位が最も高いデバイス21を、選択デバイスとして選択すればよい。設定値がEnalbedであるデバイスが存在する場合、設定部13は、さらに、そのデバイスを選択デバイスとして選択すればよい。
図8は、本実施形態の対象記憶部11が記憶する、デバイス識別子と設定値の第2の例を表す図である。図8に示す例では、デバイス識別子に、設定値及び優先順位が関連付けられている。図8に示す例のように、デバイス識別子に設定値及び優先順位が関連付けられている場合、設定部13は、まず、デバイス識別子に値がEnalbedである設定値が関連付けられているデバイスを選択する。そして、設定部13は、選択されたデバイスから、デバイス識別子に関連付けられている優先順位が最も高いデバイスを、選択デバイスとして選択する。
そして、起動制御装置1は、ステップS103からステップS107までの動作を行う。
例えば、図2に示す構成を備える情報処理装置2において、図7に示すデバイス識別子及び設定値が対象記憶部11に格納されている場合、設定部13は、選択デバイスとして、上述のようにデバイス21が選択する。そして、設定部13は、デバイス21を有効状態に設定する。さらに、設定部13は、デバイス22からデバイス24を無効状態に設定する。図5は、デバイス21が有効状態に設定され、デバイス22からデバイス24が無効状態に設定された、情報処理装置2の構成を表す。
なお、本実施形態の起動部15は、例えば1個以上の、起動デバイス識別子を記憶していてもよい。そして、起動部15は、選択デバイスに接続されているデバイスを検出してもよい。起動部15は、選択デバイスに接続されているデバイスの中から、識別子が起動デバイス識別子として記憶されている起動デバイスを特定してもよい。そして、起動部15は、特定された起動デバイスに基づき、ブートパスを生成してもよい。あるいは、本実施形態の起動部15は、例えば1個以上の、ブートパスを記憶していてもよい。そして、起動部15は、記憶されているブートパスの中から、選択デバイスを含むブートパスを特定してもよい。あるいは、本実施形態の起動部15は、選択デバイスに接続されているデバイスの中から、OSの起動が可能なデバイスを起動デバイスとして検出してもよい。そして、起動部15は、選択デバイスと検出され起動デバイスとに基づき、ブートパスを生成してもよい。
選択デバイスにたいして複数のブートパスが存在する場合、起動部15は、例えば、起動デバイスあるいはブートパスにあらかじめ付与されている順番に応じて、ブートパスの順番を決めればよい。その場合、起動部15がその順番を記憶していればよい。起動部15は、他の方法によってブートパスの順番を決めてもよい。
ステップS107において、起動部15は、特定されたブートパスからのOSの起動を試みる。複数のブートパスが存在する場合、起動部15は、決められた順番に従って、順にブートパスを選択する。そして、起動部15は、選択されたブートパスからのOSの起動を試みればよい。
ステップS107において起動部15によって行われたOSの起動が成功した場合(ステップS208においてYes)、すなわち、いずれかのブートパスからOSが起動した場合、起動制御装置1の動作は終了する。
ステップS107において起動部15によって行われたOSの起動が失敗した場合(ステップS208においてNo)、すなわち、いずれのブートパスにおいてもOSが起動しなかった場合、起動制御装置1の動作はステップS209に進む。
そして、設定部13は、OSの起動が失敗した選択デバイスを、新しく選択デバイスが選択される対象のデバイスから除外する(ステップS209)。
例えば、情報処理装置2が、図7に示すデバイス識別子と設定値に基づき選択されたデバイス21からOSを起動できなかった場合、設定部13は、デバイス21を無効状態にする。そして、設定部13は、デバイス21を、選択デバイスが選択されるデバイスから除外する。
そして、起動制御装置1の動作は、ステップS202に戻る。ステップS202では、設定部13は、ステップS107においてOSの起動が失敗したデバイスを除くデバイスから、新しく選択デバイスを選択する。設定部13は、ステップS107においてOSの起動が失敗したデバイスを除く、優先順位が設定されているデバイスから、優先順位が最も高いデバイスを、新しい選択デバイスとして選択すればよい。
例えば、対象記憶部11に図7に示すデバイス識別子と設定値が格納され、かつ、デバイス21からOSを起動できなかった場合、デバイス21は、選択デバイスが選択されるデバイスから除隊されている。従って、設定部13は、デバイス21を除くデバイスの中で、優先順位が最も高いデバイス23を、新しい選択デバイスとして選択する。
図9は、選択デバイス以外の検出されたデバイスが無効状態にされた状態における、情報処理システム3に含まれる装置間の接続の第2の例を表す模式図である。図2に示す構成を備える情報処理装置2において、デバイス23が選択デバイスとして選択されると、図9に示すように、設定部13は、デバイス23を有効状態にする。そして、設定部13は、デバイス21、デバイス22、デバイス24を無効状態に設定する。そして、起動部15は、デバイス23に接続されている記憶装置からOSの起動を試みる。
起動制御装置1は、OSの起動が成功するまで、以上の動作を繰り返せばよい。優先順位が設定されている全てのデバイスにおいて特定された全ての起動デバイスにおいて、OSの起動が失敗した場合、起動制御装置1は、例えば、情報処理装置2が備える表示装置(図示されない)に、エラーメッセージを表示し、動作を終了すればよい。
以上で説明した本実施形態には、本発明の第1の実施形態と同じ効果がある。その理由は、第1の実施形態の効果が生じる理由と同じである。
また、メインOSが格納されている記憶装置が接続されているデバイスとサブOSが格納されている記憶装置が接続されているデバイスの双方が情報処理装置2に搭載されている場合、前述の想定外初期化エラーが生じる場合がある。
本実施形態には、そのような場合であっても、情報処理装置2がメインのOSを起動できない場合、サブOSを起動できるという効果がある。
その理由は、設定部13が、デバイスの初期化が行われる前に、OSが起動する前に初期化が行われる必要がないデバイスを無効状態に設定するからである。そして、OSの起動に失敗した場合、設定部13が、OSの起動に失敗した選択デバイス以外のデバイスを選択デバイスとして選択するからである。
<第1の実装例>
次に、本実施形態の第1の実装例について、図面を参照して詳細に説明する。本実装例は、第1の実施形態に基づく実装例である。
図10は、本実装例における情報処理装置100のハードウェア構成の例を表す模式図である。情報処理装置100は、第1の実施形態に係る情報処理装置2の、具体的なハードウェア構成を模式的に表す。
図10を参照すると、情報処理装置100は、CPU110と、コントローラ120と、メモリ130と、チップセット140と、NVRAM(Non−Volatile Random Access Memory)150と、PCIeインタフェース180と、SAS I/F(Interface)160〜162と、NIC163とを備える。SAS I/F160には、記憶装置170が接続されている。記憶装置170は、情報処理装置100の筐体に含まれる。SAS I/F162には、記憶装置171が接続されている。記憶装置171は、情報処理装置100の筐体の外に配置される。記憶装置170及び記憶装置171は、ハードディスクドライブや、SSD等の記憶装置である。メモリ130は、複数のメモリモジュールによって実現されていてもよい。チップセット140は、各種インタフェースを持つ。NVRAM150には、CPU110により実行されるBIOSの実行コードや、コンピュータの設定情報が格納される。記憶装置170には、情報処理装置100のOSがインストールされている。記憶装置171は、データ保存に使用される。記憶装置171には、情報処理装置100のOSはインストールされていない。
CPU110は、チップセット140を介して、NVRAM150からBIOSのコードを読み出す。CPU110は、読み出されたBIOSのコードを、メモリコントローラ120を介して、メモリ130にロードする。そして、CPU110、メモリコントローラ120、メモリ130、チップセット140、及びNVRAM150は、CPU110が、メモリ130にロードされたBIOSのコードを実行することによって、起動制御装置1として動作する。BIOSのコードを実行するCPU110が、検出部12と、設定部13と、初期化部14と、起動部15として動作する。例えば、NVRAM150が、対象記憶部11として動作する。SAS I/F160〜SAS I/F162と、NIC163が、第1の実施形態におけるデバイス21〜デバイス24である。AS I/F160〜SAS I/F162と、NIC163は、それぞれ、オプションROMを備える。
図11は、第1の実装例において、NVRAM150に格納されている、デバイス識別子と設定値の例を表す図である。NVRAM150は、第1の実施形態の対象記憶部11として動作する。図11に示す例では、デバイス識別子として、デバイスが接続されているPCIeスロットの番号を表す文字列が使用されている。例えば、「PCIe Slot #1」は、1番目のPCIeスロットを表す。設定値は、図4に示す例における設定値と同じである。SAS I/F160〜SAS I/F162と、NIC163は、順に、「PCIe Slot #1」〜「PCIe Slot #4」によって表されるPCIeスロットに接続されている。図11の例では、SAS I/F160が接続されているPCIeスロットの番号に、Enabledである設定値が関連付けられている。すなわち、SAS I/F160のデバイス識別子に関連付けられている設定値が、Enabledである。
NVRAM150に格納される設定値は、情報処理装置100の電源が投入された後OSが起動される前に、デバイスのオプションROMが実行されるか否かを表す値として入力されてもよい。すなわち、情報処理装置100が起動される際にデバイスのオプションROMが実行されるか否かを表す値が、本実装例の設定値として使用されてもよい。
図12は、設定値が入力される画面の例を表す模式図である。図12の例では、情報処理装置100が起動される際にデバイスのオプションROMが実行されるか否かを表す値が入力される。そして、その入力された値が、設定値として使用される。
図12に示す画面は、情報処理装置100にBIOSの設定値を入力する画面の一つである。図12に示す画面は、情報処理装置100が備える表示装置(図示されない)に表示される。そして、情報処理装置100の管理者は、表示装置に表示された図12に示す画面を見ながら、キーボードなどの入力装置(図示されない)を使用して、各PCIeスロットに対して、Enable又はDisableを設定する。そして、Enableが設定されたPCIeスロットに対する設定値として、NVRAM150にEnabledが格納される。Disableが設定されたPCIeスロットに対する設定値として、NVRAM150にDisabledが格納される。
次に、本実装例の起動制御装置1の動作について、図面を参照して詳細に説明する。
図3が、本実装例の起動制御装置1の動作を表すフローチャートである。本実装例の起動制御装置1の動作は、第1の実施形態の起動制御装置1の動作と同じである。以下、本実装例の起動制御装置1の動作について、具体的に説明する。
情報処理装置100の電源が投入されると、CPU110がNVRAM150からBIOSのコードを読み出す。CPU110は、読み出したBIOSのコードをメモリ130にロードする。そして、CPU110は、メモリ130にロードされたBIOSのコードを実行する。このことにより、CPU110は、BIOSに制御されることにより、起動制御装置1として動作する。以下の説明において、BIOSによって制御されるCPU110が行う動作を、BIOSが行う動作として表記する。
ステップS101において、BIOSは、情報処理装置100に接続されているデバイス(すなわち、SAS I/F160〜SAS I/F162、NIC163)の認識を行う。BIOSは、各デバイスに対して、各デバイスが備えるオプションROMを読み出して実行することができるまでの初期化を行ってもよい。例えば、BIOSは、各デバイスに対するPCIeリンクを接続してもよい。ただし、ステップS101において、BIOSはオプションROMを実行しない。
ステップS102において、BIOSは、各デバイスの設定値を、NVRAM150から読み出す。本実装例では、デバイスの設定値は、そのデバイスが接続されているPCIeスロットの番号に関連付けられている設定値である。そして、本実装例では、設定値は、PCIeスロットに接続されているデバイスのオプションROMを実行するか否かを表す値として設定された値である。BIOSは、設定値がEnabledであるPCIeスロットを特定する。そして、BIOSは、特定されたPCIeスロットに接続されているデバイスを、選択デバイスとして選択する。
ステップS103において、各デバイスに対してPCIeリンクが接続されている場合、BIOSは、設定値がDisabledである各PCIeスロットに接続されているデバイスに対するPCIeリンクを、順次切断する。各デバイスに対してPCIeリンクが接続されていない場合、BIOSは、設定値がEnabledである各PCIeスロットに接続されているデバイスに対して、PCIeリンクを接続すればよい。
図13は、本実装例の情報処理装置100における、PCIeリンクの接続状態の例を表す模式図である。図13は、SAS I/F160に対してPCIeリンクが接続されていることを表す、そして、図13は、SAS I/F161、SAS I/F162、及びNIC163に対するPCIeリンクは切断されていることを表す。各設定値が、図11に示す例のように設定されている場合、ステップS103において、PCIeリンクは図13に示す例のように設定される。
ステップS104において、BIOSは、PCIeリンクが接続されているデバイスのオプションROMを読み出す。BIOSは、読み出したオプションROMをメモリ130にロードする。CPU110は、ロードされたオプションROMを実行する。本実装例では、実行されるプションROMは、SAS I/F160から読み出されたオプションROMである。CPU110は、SAS I/F160から読み出されたオプションROMに制御されて、SAS I/F160に対して、SAS I/F160に独自の初期化を行う。この初期化が完了すると、動作はステップS105に進む。
ステップS105において、BIOSは、情報処理装置100のOSをロードするデバイスである起動デバイスを特定する。BIOSは、例えば、起動デバイスの起動デバイス識別子をNVRAM150から読み出せばよい。その場合、起動デバイス識別子は、例えば、情報処理装置100の管理者がBIOSセットアップのメニューを使用して起動デバイスを設定することによって、あらかじめNVRAM150に格納されていればよい。あるいは、BIOSは、ステップS105において、起動デバイスを指定するメニューを情報処理装置100が備える表示装置に表示してもよい。そして、BIOSは、表示されたメニューを使用して指定されたデバイスを、起動デバイスにすればよい。本実装例では、起動デバイスは、SAS I/F160に接続されている記憶装置170である。BIOSは、記憶装置170にインストールされているOSを起動できるように、環境を設定する。BIOSが、OSを起動するための環境の設定を終了すると、動作はステップS106に進む。
ステップS106において、BIOSは、PCIeリンクが切断されている状態であるデバイスに対して、PCIeリンクを接続する。その際、BIOSは、NVRAM150から、各PCIeスロットの番号に関連付けられている設定値を読み出せばよい。そして、BIOSは、設定値がDisabledであるPCIeスロットに接続されているデバイスに対して、順次PCIeリンクを接続すればよい。全てのデバイスに対するPCIeリンクの接続が終了すると、動作はステップS107に進む。
ステップS107において、BIOSは、起動デバイスにインストールされている情報処理装置100のOSを起動する。OSが起動すると、OSのドライバによって、各デバイスの初期化が行われることにより、各デバイスは使用可能になる。すなわち、各デバイスは、そのデバイスが備えるオプションROMによる初期化が行われた否かに関わらず、使用可能になる。
<第2の実装例>
次に、本発明の第2の実装例について、図面を参照して詳細に説明する。本実装例は、第1の実施形態に基づく実装例である。
図14は、本実装例における情報処理装置200のハードウェア構成の例を表す模式図である。本実装例の情報処理装置200は、第1の実施形態に係る情報処理装置2の、具体的なハードウェア構成を模式的に表す。
本実装例の情報処理装置200は、CPU110と、メモリコントローラ120と、メモリ130と、チップセット140と、RVRAM150と、USBポート260と、USBポート261と、USBポート262と、USBポート263とを備える。CPU110と、メモリコントローラ120と、メモリ130と、チップセット140と、RVRAM150は、以下で説明する点を除き、第1の実装例における同じ名称の構成要素と同じである。
チップセット140は、チップセット140のUSBインタフェースに接続されているUSB280を介して、USBポート260〜USBポート263に接続されている。各USBポートが、第1の実施形態におけるデバイスである。本実装例のチップセット140は、各USBポートを個別に一時的に無効に設定することができる。USBポートが無効に設定されると、チップセット140は、その無効に設定されたUSBポートにアクセスすることはできない。USBポート260には、入力装置290が接続されている。入力装置290は、例えば、キーボードである。USBポート262には、記憶装置270が接続されている。USBポート263には、記憶装置271が接続されている。本実装例では、記憶装置270に、情報処理装置200のOSがインストールされている。記憶装置270及び記憶装置271は、ハードディスクドライブや、SSD等の記憶装置である。
図15は、第2の実装例において、NVRAM150に格納されている、デバイス識別子と設定値の例を表す図である。NVRAM150は、第1の実施形態の対象記憶部11として動作する。図15に示す例では、デバイス識別子として、USBポートのポート番号を表す文字列が使用されている。例えば、「USB Port #1」は、1番目のUSBポートを表す。本実装例では、「USB Port #1」は、USBポート260の識別子である。同様に、「USB Port #2」〜「USB Port #4」は、それぞれ、USBポート261〜USBポート263の識別子である。設定値は、第1の実施形態の設定値と同じである。
これらの設定値は、例えば、BIOSセットアップのメニューに用意されたUSB設定項目におけるUSBブート設定において、情報処理装置200の管理者が行った設定に基づき、BIOSによって決定されればよい。そして、決定された設定値は、BIOSによってNVRAM150に格納されればよい。USBブート設定は、例えば、情報処理装置200のOSが格納されているデバイスが接続されているUSBポート等を指定する設定である。
図16は、第2の実装例において、設定値が入力される画面の例を表す模式図である。本実装例では、USBポート260には、例えばキーボードである入力装置290が接続されている。従って、図16に示す例では、USBポート260を表す識別子である「USB Port #1」に対して、「Keyboard/Mouse」が設定されている。また、本実装例では、USBポート262には、OSがインストールされた記憶装置270が接続されている。従って、図16に示す例では、USBポート260を表す識別子である「USB Port #3」に対して、起動デバイスを表す「System Disk」が設定されている。そして、他のポートに対して、「None」が設定されている。本実装例のBIOSは、「None」が設定されているUSBポートの識別子に、設定値として「Disabled」を関連付ける。そして、本実装例のBIOSは、「Keyboard/Mouse」と「System Disk」が設定されているUSBポートの識別子に、設定値として「Enabled」を関連付ける。そして、本実装例のBIOSは、各USBポートの識別子とその識別子に関連付けられている設定値とを、NVRAM150に格納する。
次に、本実装例の起動制御装置1の動作について、図面を参照して詳細に説明する。
図3が、本実装例の起動制御装置1の動作を表すフローチャートである。本実装例の起動制御装置1の動作は、第1の実施形態の起動制御装置1の動作と同じである。以下、本実装例の起動制御装置1の動作について、具体的に説明する。
ステップS101において、本実施形態のBIOSは、各USBポートを検出する。検出されたUSBポートは、アクセスが可能な状態である有効に設定される。有効に設定された状態が、第1の実施形態における有効状態に対応する。
ステップS102において、本実装例のBIOSは、入力装置290が接続されているUSBポート260と、記憶装置270が接続されているUSBポート262とを、選択デバイスとして選択する。
ステップS103において、本実装例のBIOSは、選択デバイスとして選択されなかった、USBポート261及びUSBポート263を、無効に設定する。無効に設定された状態が、第1の実施形態における無効状態に対応する。
図17は、第2の実装例の情報処理装置2における、USBポートの状態の例を表す模式図である。図17は、ステップS103において設定された、本実装例におけるUSBポートの状態を表す。図17に示す例では、USBポート261及びUSBポート263が、無効に設定されている。
ステップS104において、BIOSは、状態が有効に設定されているUSBポートと、状態が有効に設定されているUSBポートに接続されているデバイスを、OS起動時にアクセすることができるようにするための初期化を行う。上述のように、本実装例では、状態が有効に設定されているUSBポートは、USBポート260及びUSBポート262である。ステップS104における初期化は、例えば、状態が有効に設定されているUSBポートに接続されている、入力装置や記憶装置などのデバイスを検出することを含んでいてもよい。
ステップS105は、第1の実装例に基づく動作におけるステップS105の動作と同様に、起動デバイスを特定する。本実装例では、記憶装置270が起動デバイスとして特定される。
ステップS106において、BIOSは、無効に設定されているUSBポートを「有効」に設定する。BIOSは、例えば、NVRAM150に格納されている設定値がDisabledであるUSBポートを、「有効」に設定すればよい。
ステップS107において、BIOSは、起動デバイスである記憶装置270にインストールされているOSを起動する。OSが起動すると、OSが含むドライバによって、各USBポートと、USBポートに接続されている各デバイスの初期化が行われる。
USBポートに接続されるUSBデバイスによっては、そのUSBデバイスがUSBポートに接続されたままBIOSによるUSBポートの初期化が行われると、情報処理装置200がストールすることがある。あるいは、USBデバイスによっては、BIOSによる初期化に長い時間が必要な場合がある。設定値の設定によって、OSが起動する際必要なデバイスが接続されているUSBポート以外のUSBポートを無効に設定しておくことにより、BIOSによるUSBの初期化が原因で生じる、情報処理装置200のストールが発生するリスクを低減できる。あるいは、USBポートの初期化に要する時間を短縮することができる。
<第3の実装例>
次に、本発明の第3の実装例について、図面を参照して詳細に説明する。本実装例は、本発明の第2の実施形態に基づく実装例である。
図14が、本実装例の情報処理装置200の構成を表すブロック図である。本実装例の情報処理装置200は、第2の実施形態に係る情報処理装置2の、具体的なハードウェア構成を模式的に表す。本実装例の情報処理装置200の構成は、第2の実装例の情報処理装置200の構成と同じである。本実装例の情報処理装置200の各構成要素は、以下で説明する点を除き、同じ符号が付与された第2の実装例の構成要素と同じである。
本実装例のNVRAM150には、設定値として、優先順位が格納される。
図18は、第3の実装例において、対象記憶部11として動作するNVRAM150に格納されている、デバイス識別子と設定値の例を表す図である。図18において、値が数字である設定値が優先順位を表す。値が「Enabled」である設定値は、その設定値に関連付けられているデバイス識別子により特定されるデバイスが、後述するステップS103において有効状態に設定されることを表す。なお、値が「Disabled」である設定値は、その設定値に関連付けられているデバイス識別子により特定されるデバイスが、後述するステップS103において無効状態に設定されることを表していればよい。
本実装例の設定値は、例えば、前述のUSBブート設定と、USB設定項目におけるUSBブート優先度設定において、情報処理装置200の管理者が行った設定に基づき、BIOSによって決定されればよい。そして、決定された設定値は、例えばBIOSによって、NVRAM150に格納されればよい。USBブート優先度設定は、BIOSがインストールされているOSの起動を試みる順番に関する設定である。
図16は、本実装例において、USBブート設定が設定される画面の例を表す模式図である。図16に示す各設定項目の意味は、第2の実施形態における同じ設定項目の意味と同じである。
図19は、本実装例において、USBブート優先度設定が設定される画面の例を表す模式図である。図19に示す例では、優先順位が高い順に、USBポートの番号が入力される。図19に示す例では、「Port#3」が、3番目のUSBポート(すなわちUSBポート262)のポート番号を表す。図19に示す例では、USBポート262の優先順位は1である。同様に、「Port#2」が、2番目のUSBポート(すなわちUSBポート261)のポート番号を表す。そして、USBポート261の優先順位は2である。さらに、「Port#4」が、4番目のUSBポート(すなわちUSBポート263)のポート番号を表す。そして、USBポート263の優先順位は3である。また、図19に示す例では、1番目のUSBポート(すなわちUSBポート260)には、優先順位は設定されていない。
本実装例のBIOSは、例えば、図16に示すUSBブート設定と、図19に示すUSBブート優先度設定に基づき、設定値を決定する。BIOSは、例えば、優先順位が設定されているUSBポートの設定値を、設定されている優先順位に決定する。さらに、優先順位が設定されていないUSBポートが、OS起動前に初期化を行うUSBポートであれば、BIOSは、そのUSBポートの設定値をEnabledに決定すればよい。例えば、BIOSは、優先順位が設定されていないUSBポートのUSBブート設定に設定されている値が「Keybord/Mouse」であれば、設定値をEnabledに決定すればよい。また、優先順位が設定されていないUSBポートが、OS起動前に初期化を行う必要がないUSBポートであれば、BIOSは、そのUSBポートの設定値をEnabledに決定すればよい。例えば、優先順位が設定されていないUSBポートのUSBブート設定に設定されている値が「None」であれば、BIOSは、そのUSBポートの設定値をDisabledに決定すればよい。
USBブート設定が図16に示すように設定され、USBブート優先度設定が図19の用に設定されている場合、BIOSは、図18に示すデバイス識別子及び設定値を、NVRAM150に格納する。
次に、本実装例の起動制御装置1の動作について、図面を参照して詳細に説明する。
図6が、本実装例の起動制御装置1の動作を表すフローチャートである。本実装例の起動制御装置1の動作は、第2の実施形態の起動制御装置1の動作と同じである。以下、本実装例の起動制御装置1の動作について、具体的に説明する。
ステップS101において、BIOSは、情報処理装置200が含む各USBポートを検出する。
ステップS201において、BIOSは、NVRAM150から検出された各USBポートの設定値を読み出す。そして、設定値としてNVRAM150に格納されている優先順位が最も高いUSBポートを、選択デバイスとして選択する。設定値がEnabledであるUSBポートが存在すれば、BIOSは、さらに、設定値がEnabledであるUSBポートを選択デバイスとして選択する。
ステップS103からステップS105までの動作及びステップS107の動作は、同じ符号が付与された第2の実装襟の動作と同じである。
ステップS106において、BIOSは、無効に設定されているUSBポートを「有効」に設定する。BIOSは、例えば、ステップS202において選択デバイスとして選択されたUSBポート以外のUSBポートを、「有効」に設定すればよい。
(第3の実施形態)
次に、本発明の第3の実施形態について、図面を参照して詳細に説明する。
図20は、本実施形態の起動制御装置1Aの構成を表す図である。
図20を参照すると、本実施形態の起動制御装置1Aは、デバイスに関する識別子と前記デバイスの初期化に関する設定値とを関連付けて記憶する対象記憶部11と、情報処理装置2の電源が投入されると、当該情報処理装置2に接続されている一つ以上の前記デバイスを検出する検出部12と、検出された前記デバイスの中から、当該デバイスの識別子に関連付けられている前記設定値に基づきいずれか一つ以上の前記デバイスを選択し、選択された当該デバイスである選択デバイスを、前記情報処理装置2が前記デバイスにアクセスできる有効状態にし、前記選択デバイス以外の検出された前記デバイスを、前記情報処理装置2が前記デバイスにアクセスできない無効状態にする設定部14と、前記選択デバイスに対して初期化処理を行う初期化部14による前記初期化処理が終了すると、前記無効状態である前記デバイスを前記有効状態にする起動部15と、を備える。
以上で説明した本実施形態には、第1の実施形態の第1の効果と同じ効果がある。その理由は、第1の実施形態の第1の効果が生じる理由と同じである。
起動制御装置1、及び起動制御装置1Aは、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
図21は、起動制御装置1、及び起動制御装置1Aを実現することができる、コンピュータ1000の構成の一例を表す図である。図21を参照すると、コンピュータ1000は、プロセッサ1001と、メモリ1002と、記憶装置1003と、I/O(Input/Output)インタフェース1004とを含む。また、コンピュータ1000は、記録媒体1005にアクセスすることができる。メモリ1002と記憶装置1003は、例えば、RAM(Random Access Memory)、ハードディスクなどの記憶装置である。記録媒体1005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記録媒体である。記憶装置1003が記録媒体1005であってもよい。プロセッサ1001は、メモリ1002と、記憶装置1003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ1001は、I/Oインタフェース1004を介して、例えば、各デバイスにアクセスすることができる。プロセッサ1001は、記録媒体1005にアクセスすることができる。記録媒体1005には、コンピュータ1000を、起動制御装置1、又は起動制御装置1Aとして動作させるプログラムが格納されている。
プロセッサ1001は、記録媒体1005に格納されている、コンピュータ1000を、起動制御装置1、又は起動制御装置1Aとして動作させるプログラムを、メモリ1002にロードする。そして、プロセッサ1001が、メモリ1002にロードされたプログラムを実行することにより、コンピュータ1000は、起動制御装置1、又は起動制御装置1Aとして動作する。
検出部12、設定部13、初期化部14、起動部15は、例えば、プログラムを記憶する記録媒体1005からメモリ1002に読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサ1001により実現することができる。また、対象記憶部11は、コンピュータ1000が含むメモリ1002やハードディスク装置等の記憶装置1003により実現することができる。あるいは、対象記憶部11、検出部12、設定部13、初期化部14、起動部15の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。