(57)【要約】【課題】  ハードウェア構成の異なる複数のコンピュータがブートするためのＯＳのデータ量を少なくして、ＯＳを格納する記憶領域を節約し、簡易にＯＳを管理する。【解決手段】  ネットワークブートシステム１０と、ネットワーク２０と、クライアント３０と、ＯＳ格納ディスク４０とで構成され、ＯＳをモジュール単位で管理し、クライアント３０ごとに対応するＯＳを作成するネットワークブートシステム１０が、クライアント３０からのブートリクエストに従ってネットワーク２０を経由してＯＳ格納ディスク４０に作成したＯＳを格納し、クライアント３０にＯＳ格納ディスク４０からＯＳをブートさせるクライアントサーバシステムとした。【選択図】      図１
2006127169.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを経由してオペレーティングシステムをコンピュータにブートさせるネットワークブートシステムのネットワークブート方法であって、
複数のオペレーティングシステムをそれぞれ複数の単体のモジュールに分けて記憶するモジュール記憶手段からブート先の前記コンピュータのハードウェア構成に対応する前記各モジュールを読み出すステップと、
読み出した前記各モジュールを組み合わせて前記コンピュータごとの前記オペレーティングシステムを作成するステップと、
作成した前記オペレーティングシステムを前記コンピュータに前記ネットワークを経由して送ってブートさせるステップとを
実行することを特徴とするネットワークブート方法。
【請求項２】
請求項１に記載のネットワークブート方法において、
前記単体のモジュールを、ハードウェアに依存する依存モジュールとハードウェアに依存しない共通モジュールとに分けて前記モジュール記憶手段に記憶しておき、
前記読み出すステップでは、前記コンピュータのハードウェア構成に対応する前記依存モジュールを前記モジュール記憶手段から読み出すと共に前記共通モジュールを前記モジュール記憶手段から読み出し、
前記作成するステップでは、読み出した前記共通モジュールと前記依存モジュールとを組み合わせて、前記コンピュータに応じた前記オペレーティングシステムを作成する
ことを特徴とするネットワークブート方法。
【請求項３】
請求項２に記載のネットワークブート方法において、
前記モジュール記憶手段に記憶された依存モジュールをコンパイルしてブート先のコンピュータで実行可能な形式に変換するステップを
さらに実行することを特徴とするネットワークブート方法。
【請求項４】
請求項１から請求項３までのいずれか１項に記載のネットワークブート方法において、
前記モジュール記憶手段から前記各モジュールを読み出してオペレーティングシステムを作成するためにキーとして用いるハードウェア構成情報を、ハードウェア構成を調査するためのエージェントプログラムを実行したブート先の前記コンピュータから取得するステップを
さらに実行することを特徴とするネットワークブート方法。
【請求項５】
ネットワークを経由してオペレーティングシステムをコンピュータにブートさせるネットワークブートシステムであって、
複数のオペレーティングシステムを複数の単体のモジュールに分けて記憶するモジュール記憶手段と、
前記コンピュータとの間で前記ネットワークを経由して通信する通信手段と、
この通信手段により前記コンピュータからのブートリクエストを受け取り、このブートリクエストに基づいて前記モジュール記憶手段からブート先の前記コンピュータのハードウェア構成に対応する前記各モジュールを読み出し、読み出した各モジュールを組み合わせて前記コンピュータごとの前記オペレーティングシステムを作成し、作成したオペレーティングシステムを前記コンピュータに送ってブートさせるＯＳ作成手段とを
備えたことを特徴とするネットワークブートシステム。
【請求項６】
請求項５に記載のネットワークブートシステムにおいて、
前記モジュール記憶手段は、前記単体のモジュールを、ハードウェアに依存する依存モジュールとハードウェアに依存しない共通モジュールとに分けて記憶し、
前記ＯＳ作成手段は、前記コンピュータのハードウェア構成に対応する前記依存モジュールを前記モジュール記憶手段から読み出すと共に前記共通モジュールを前記モジュール記憶手段から読み出し、読み出した前記共通モジュールと前記依存モジュールとを組み合わせて、前記コンピュータに応じた前記オペレーティングシステムを作成すること
を特徴とするネットワークブートシステム。
【請求項７】
請求項６に記載のネットワークブートシステムにおいて、
前記ＯＳ作成手段は、前記モジュール記憶手段に記憶された前記依存モジュールをコンパイルして前記コンピュータで実行可能な形式に変換すること
を特徴とするネットワークブートシステム。
【請求項８】
請求項５から請求項７までのいずれか１項に記載のネットワークブートシステムにおいて、
前記ＯＳ作成手段は、
前記モジュール記憶手段から前記各モジュールを読み出してオペレーティングシステムを作成するためにキーとして用いるハードウェア構成情報を、ハードウェア構成を調査するためのエージェントプログラムを実行したブート先の前記コンピュータから取得する
ことを特徴とするネットワークブートシステム。
【請求項９】
請求項１から請求項４のいずれか１項に記載のネットワークブート方法の前記各ステップをネットワークブートシステムに実行させることを特徴とするネットワークブートプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークブート方法、ネットワークブートシステムおよびネットワークブートプログラムに係り、特に、クライアントがネットワークを経由してブートするためのオペレーティングシステム（ＯＳ（Operating System））を管理するものに関する。
【背景技術】
【０００２】
従来のネットワークブートシステムとしては、ネットワークに接続されるコンピュータごとに、ブートさせるためのプラットフォームを提供する技術が知られている（例えば、特許文献１参照）。
【特許文献１】特開２００３−３３０７２８号公報（段落００１３〜００２９、図１〜５）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記特許文献１に記載の技術では、コンピュータの種類が増えるに従って管理するＯＳも増えてしまうため、管理するデータ量が増えて記憶領域を圧迫し、管理が煩雑になるという不具合があった。
【０００４】
そのため、本発明は、複数のコンピュータがブートするためのＯＳを少なくして、ＯＳを格納する記憶領域を節約し、簡易にＯＳを管理することを課題とする。
【課題を解決するための手段】
【０００５】
そこで、本発明は、前記課題を解決するための手段として、ネットワークを経由してオペレーティングシステムをコンピュータにブートさせるネットワークブートシステムのネットワークブート方法であって、複数のオペレーティングシステムをそれぞれ複数の単体のモジュールに分けて記憶するモジュール記憶手段からブート先の前記コンピュータのハードウェア構成に対応する前記各モジュールを読み出すステップと、読み出した前記各モジュールを組み合わせて前記コンピュータごとの前記オペレーティングシステムを作成するステップと、作成した前記オペレーティングシステムを前記コンピュータに前記ネットワークを経由して送ってブートさせるステップとを実行することにした。
【発明の効果】
【０００６】
本発明によれば、ハードウェア構成の異なる複数のコンピュータがブートするためのＯＳを少なくして、ＯＳを格納する記憶領域を節約し、簡易にＯＳを管理できる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施形態のネットワークブートシステムについて図面を参照して説明する。
まず、図１に示す全体構成図に従って、ネットワークブートシステム１０をサーバとして構成する一例のクライアントサーバシステムを説明する。なお、以下の説明では、構成要素に対応する図番について特に断りがなければ図１を参照することとする。
このクライアントサーバシステムは、ネットワークブートシステム１０と、ネットワーク２０と、クライアント３０と、ＯＳ格納ディスク４０とで構成されている。そして、ＯＳの構成要素となるモジュール単位で管理し、クライアント３０ごとに対応するＯＳを作成するネットワークブートシステム１０が、クライアント３０からのブートリクエストに従ってネットワーク２０を経由してＯＳ格納ディスク４０に作成したＯＳを格納し、クライアント３０にＯＳ格納ディスク４０からＯＳをブートさせるようになっている。
【０００８】
次に、このクライアントサーバシステムの各構成について詳細に説明する。
なお、ここでは、ネットワークブートシステム１０は、１台の装置（サーバ）を想定して説明するが、各機能を実現する複数のコンピュータによって構成し、ＬＡＮやインターネットで互いを接続して分散処理可能な構成としてもよい。クライアント３０は、１台として説明するが、その台数に制限はない。ＯＳ格納ディスク４０は、例えば、ファイルサーバを用いることとするが、ＯＳを格納することが可能であれば、他のものを用いてもよい。また、ＯＳ格納ディスク４０は、ネットワークブートシステム１０にネットワーク２０を経由して接続する外部に備える構成として説明するが、ネットワークブートシステム１０の内部に備える構成としてもよい。
【０００９】
まず、ネットワークブートシステム１０の構成を説明する。
ネットワークブートシステム１０は、一般的なコンピュータであって、図示しないＣＰＵ（Central Processing Unit）、ＨＤＤ（Hard Disk Drive）、インターフェース等のハードウェアから構成され、ＯＳをモジュールとして管理してブート先のコンピュータのハードウェア構成に従ってモジュールを組み合わせてＯＳを作成するためのネットワークブートプログラムを実行することで、後記するネットワークブート処理を実現するものである。
【００１０】
そのため、このネットワークブートシステム１０は、クライアント３０とのやりとりを行うクライアント連絡部（通信手段）１００と、クライアント３０からのブートリクエストに従って、クライアント３０のハードウェア構成を調査結果（デバイスＩＤやＯＳ種類等の構成情報）として抽出するためのエージェントプログラムを作成するＯＳ構成情報作成手段２００と、ブートリクエストと構成情報とに従ってＯＳを作成してＯＳ格納ディスク４０上に格納するＯＳ作成手段３００と、クライアント３０がブートするＯＳ種類を特定するための一覧を格納したクライアントＯＳテーブル４００とを機能として備えている。
以下、このネットワークブートシステム１０の各機能について説明する。
【００１１】
クライアント連絡部１００は、ネットワーク２０を経由してクライアント３０からブートリクエストを受け取り、クライアント３０へブート指示を送信する。また、クライアント連絡部１００は、クライアント３０にどのＯＳをブートさせるかという判断をクライアントＯＳテーブル４００を用いて行う。例えば、ブートリクエストに含まれる後記マシンタイプをキーとしてクライアントＯＳテーブル４００を検索しＯＳ種類を抽出する。そして、クライアント連絡部１００は、抽出したＯＳ種類のＯＳをクライアント３０にブートさせると判断し、抽出したＯＳ種類とブートリクエストとを、ＯＳ構成情報作成手段２００とＯＳ作成手段３００とに渡す。
【００１２】
ＯＳ構成情報作成手段２００は、クライアント３０からのブートリクエストに従って、クライアント３０のハードウェア構成を示すハードウェア構成情報を調査結果として取得するためのエージェントプログラムを抽出するものであり、ＯＳ構成情報作成部２１０と、構成調査エージェントテーブル２２０とから構成されている。
ＯＳ構成情報作成部２１０は、クライアント３０のハードウェア構成を構成情報（調査結果）として得るために適切なエージェントプログラムを構成調査エージェントテーブル２２０から抽出して、クライアント３０に送るものである。
【００１３】
構成調査エージェントテーブル２２０には、図２に示すように、「CpuType１」等のＣＰＵ種類２２１と、「マシン１」等のマシンタイプ２２２とに、ファイル名「Type1Check.exe」等のエージェントプログラム２２３が関係付けられている。
ＯＳ作成手段３００は、クライアント３０にブートさせるＯＳを作成して、作成したＯＳをＯＳ格納ディスク４０に格納するものであり、ＯＳ作成部３１０と、コンパイル部３２０と、共通モジュールテーブル３３０と、ハードウェア依存モジュールテーブル３４０とから構成されている。
【００１４】
以下、ＯＳ作成手段３００の各構成について説明する。
ＯＳ作成部３１０は、クライアント３０から送られてくるブートリクエストおよびハードウェア構成情報に基づいて、共通モジュールテーブル３３０から共通モジュールを抽出すると共にハードウェア依存モジュールテーブル３４０から依存モジュールを抽出し、抽出した共通モジュールと依存モジュールとを組み合わせる。なお、共通モジュールは、ハードウェアに依存しないＯＳの上位層のモジュールであり、中間コード形式としている。また、ここでは、同様に、依存モジュールも中間コード形式として説明する。
【００１５】
また、このＯＳ作成部３１０は、双方のモジュールを組み合わせたＯＳ中間コードをコンパイル部３２０にコンパイルさせて、クライアント３０向けのＯＳを作成する。さらに、このＯＳ作成部３１０は、作成したＯＳをＯＳ格納ディスク４０に格納すると共にクライアント３０にブート指示を出す。このブート指示には、ＯＳ格納ディスク４０内のＯＳの格納先（アドレス）が含まれる。
【００１６】
なお、ここでは、共通モジュールと依存モジュールとの双方のモジュールを組み合わせてコンパイルすることとしたが、実行可能な形式となるのであれば、各テーブルに格納されているモジュールの形式は問わない。例えば、依存モジュールは、中間コード形式ではなく、ハードウェアに依存した実行形式としてもよい。特に、ドライバは、ハードウェアを仮想化するために使用されるＯＳのコンポーネントであり、ハードウェアに非常に密着しているため、実行形式とするのが好ましい。
【００１７】
ここで、前記したコンパイル部３２０、共通モジュールテーブル３３０、ハードウェア依存モジュールテーブル３４０について順を追って詳述する。
コンパイル部３２０は、ＯＳ作成部３１０から渡される中間コードをクライアント３０のハードウェア上で実行可能な形式にコンパイルするものである。なお、ここでは、コンパイルして作成されたＯＳは、ＯＳ作成部３１０を経由してＯＳ格納ディスク４０に格納するものとして説明するが、ＯＳ作成部３１０を介さずにコンパイル部３２０がＯＳ格納ディスク４０に格納させるようにしてもよい。
【００１８】
共通モジュールテーブル３３０は、共通モジュール抽出のために必要な一覧であり、クライアント３０がブートするためのＯＳを構成するモジュールの中で、ハードウェア依存のないＯＳの上位層のモジュールを中間コードの形で格納するものである。
この共通モジュールテーブル３３０には、具体的には、図３に示すように、「OS1」等のＯＳ種類３３１と、「OS1Kernel.exe」等のモジュール名３３２と、「5.0.0.1025」等のモジュールのバージョン３３３と、前記したバージョン３３３のモジュール名３３２のモジュールの格納先を示す位置３３４と、クライアント３０の図示しないＣＰＵの種類に依存しない中間コード形式のＯＳのモジュールの実体である「982e77fb・・・・・」等で表されるＯＳバイナリ３３５とが関係付けられている。なお、「\OS1System」等で表される位置３３４は、ＯＳ格納ディスク４０の格納先を示している。
【００１９】
ハードウェア依存モジュールテーブル３４０は、ハードウェア依存のドライバ等のモジュールを特定するための一覧であって、ＯＳの上位層に対してクライアント３０を構成するハードウェアを仮想化するためのドライバやＨＡＬ（Hardware Abstraction Layer）等のモジュールを格納するものである。
【００２０】
このハードウェア依存モジュールテーブル３４０には、具体的には、図４に示すように、デバイスを特定するための「PNP0001」等のデバイスＩＤ３４１と、ドライバ等のモジュールの実行可能な「CpuType1」等のＣＰＵ種類３４２と、そのモジュールを使用可能な「OS1」等のＯＳ種類３４３と、「OS1driver1.sys」等のドライバ名３４４と、「5.0.0.1025」等のドライバのバージョン３４５と、ドライバのＯＳ格納ディスク４０の格納先を示す位置３４６と、「982e77fd・・・・」等のドライバの実体であるドライババイナリ３４７とが関係付けられている。なお、「\OS1System\drivers」等で表される位置３３４は、ＯＳ格納ディスク４０の格納先を示している。
【００２１】
また、クライアントＯＳテーブル４００には、クライアント３０がブートするＯＳ種類を特定するための一覧を格納するものであって、クライアント３０がブートするものとしてクライアント３０のネットワークブートシステム１０の登録時に設定される。
このクライアントＯＳテーブル４００は、図５に示すように、クライアント３０を一意に識別するために使用するクライアント識別ＩＤ４０１と、ＯＳ種類４０２とが関係付けられている。例えば、「ID-XYZ」のクライアント識別ＩＤと「OS2」等のＣＰＵ種類とが関係付けられている。
【００２２】
ネットワーク２０は、ネットワークブートシステム１０と、クライアント３０と、ＯＳ格納ディスク４０とを互いに通信可能にするものであり、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、インターネット等で構成されている。なお、ネットワーク２０は、ＳＡＮ（Storage Area Network）等のストレージネットワークとしてもよい。
【００２３】
クライアント３０は、パーソナルコンピュータ等のコンピュータであって、図示しないＣＰＵ、ＨＤ、インターフェース等のハードウェアから構成され、ネットワーク２０経由でＯＳをブートするための基本的なデバイスを備えている。このクライアント３０は、電源ＯＮにより、ＢＩＯＳ（Basic Input Output System）が立ち上がり、このＢＩＯＳ上で動く通信プロトコルに従ってネットワーク２０を経由し、図６に示すようなブートリクエスト５００をネットワークブートシステム１０に送信する。このブートリクエスト５００には、例えば、クライアント３０を識別するための「ID-XYZ」５０１ａ等のクライアント識別ＩＤ５０１と、「CpuType3」５０２ａ等のクライアント３０のＣＰＵ種類５０２と、クライアントマシンの総称（ＰＣ−ＡＴ（登録商標）互換等）を示すためのマシンタイプ５０３（例えば「マシン３」５０３ａ）とが含まれている。
【００２４】
また、クライアント３０は、ネットワークブートシステム１０からのブート指示に従って指定されるＯＳ格納ディスク４０からネットワーク２０を経由してＯＳをブートするようになっている。さらに、クライアント３０は、ネットワークブートシステム１０から転送されるエージェントプログラムをＢＩＯＳ上で動かし、エージェントプログラムにより自己のハードウェア構成を調査するようになっている。
ＯＳ格納ディスク４０には、ネットワークブートシステム１０からネットワーク２０を経由して送られてくるＯＳが格納される。
【００２５】
ここで、図２，４，７を参照して、クライアント３０がエージェントプログラム２２３によりハードウェア構成を調査した結果を説明する。
図７に示すように、このハードウェア構成の調査結果６００では、デバイス固有のＩＤであるデバイスＩＤ６０１の羅列（「XP001」６０１ａ，「XP002」６０１ｂ・・・）となっている。このデバイスＩＤ６０１は、図４に示したハードウェア依存モジュールテーブル３４０のデバイスＩＤ３４１を特定するものである。
【００２６】
次に、図５，６を参照して、クライアント連絡部１００のクライアントＯＳテーブル４００からＯＳ種類４０２を抽出する処理を説明する。
クライアント連絡部１００は、図６に示したブートリクエスト５００のクライアント識別ＩＤ５０１をキーとして、図５に示したＯＳ種類４０２をクライアントＯＳテーブル４００から抽出する。例えば、図６に示した「ID-XYZ」５０１ａをキーとして、図５に示した「OS2」４０２ａを抽出する。
【００２７】
次に、図２，６を参照して、ＯＳ構成情報作成部２１０がエージェントプログラムを抽出する処理を説明する。
ＯＳ構成情報作成部２１０は、図６に示したブートリクエスト５００に含まれるＣＰＵ種類５０２とマシンタイプ５０３とをキーとして、図２に示した構成調査エージェントテーブル２２０から対応するＣＰＵ種類２２１とマシンタイプ２２２とを含むレコード中のエージェントプログラム２２３を抽出する。例えば、図６に示した「CpuType3」と「マシン３」とをキーとして図２に示した「Type3Check.exe」２２３ａ等のエージェントプログラム２２３を抽出する。
【００２８】
次に、図３〜７を参照して、ＯＳ作成部３１０が、クライアント３０から送られてくる図６に示したブートリクエスト５００および図７に示したハードウェア構成の調査結果６００により、図３に示した共通モジュールテーブル３３０から共通モジュールを抽出し、ハードウェア依存モジュールテーブル３４０からモジュール（ドライバ）を抽出する処理を説明する。
【００２９】
ＯＳ作成部３１０は、クライアント連絡部１００により抽出されるＯＳ種類４０２をキーとして、図３に示した共通モジュールテーブル３３０を検索し、対応するＯＳ種類３３１のモジュール名３３２とバージョン３３３と位置３３４とを抽出し、対応する位置３３４から共通モジュールとしてのＯＳバイナリ３３５を共通モジュールテーブル３３０から抽出する。例えば、図５に示した「OS2」４０２ａをキーとして、対応する「OS2」のＯＳ種類３３１を含むレコードを検索し、「OS2Kernel」のモジュール名３３２と「6.0.0.1025」のバージョン３３３と「\OS2System」の位置３３４とＯＳバイナリ３３５の「21gaff9a・・・・」３３５ａを抽出する。同様に、「c97a6f29・・・・」３３５ｂも抽出する。
【００３０】
また、ＯＳ作成部３１０は、クライアント連絡部１００により抽出されたＯＳ種類４０２と、図６に示したＣＰＵ種類５０２と、図７に示したハードウェア構成の調査結果６００のデバイスＩＤ６０１とをキーとして、図４に示したハードウェア依存モジュールテーブル３４０を検索する。そして、ハードウェア依存モジュールテーブル３４０のデバイスＩＤ３４１と、ＣＰＵ種類３４２と、ＯＳ種類３４３とに対応するレコードのドライバ名３４４とバージョン３４５と位置３４６とドライババイナリ３４７とを抽出する。例えば、図５に示した「OS2」４０２ａと、図６に示した「CpuType3」５０２ａと、図７に示した「XP0001」６０１ａおよび「XP0002」６０１ｂとをキーとして、図４に示したドライバ名３４４とバージョン３４５と位置３４６と「21gaff9a・・・・」３４７ａ,３４７ｂ等のドライババイナリ３４７とが抽出される。
【００３１】
このように、前記した構成のネットワークブートシステム１０は、構成調査エージェントテーブル２２０と、共通モジュールテーブル３３０と、ハードウェア依存モジュールテーブル３４０と、クライアントＯＳテーブル４００とを集中管理するため、管理者がＯＳのモジュールのバージョンを効率良くかつ簡易に管理できるようになる。
【００３２】
最後に、図８に示すフローチャートに従って、前記したクライアント３０がＯＳをブートするまでの処理の流れを図１〜７を参照しつつ説明する。なお、図８中、左側にはクライアント３０の処理、右側にはネットワークブートシステム１０の処理を表している。また、以下の説明でも、構成要素に対応する図番について特に断りがなければ図１を参照することとする。
【００３３】
まず、クライアント３０では、電源がユーザにより投入されると、ＢＩＯＳが起動する（Ｓａ１）。この起動によりクライアント３０は、ネットワーク２０を経由してネットワークブートシステム１０に図６に示したブートリクエスト５００を送信する（Ｓａ２）。
【００３４】
一方、ネットワークブートシステム１０では、クライアント連絡部１００がブートリクエスト５００を受信すると（Ｓｂ１）、クライアント連絡部１００は、図６に示したブートリクエスト５００のクライアント識別ＩＤ５０１と一致するＩＤを、図５に示すクライアントＯＳテーブル４００のクライアント識別ＩＤ４０１から検索する。そして、それに対応するＯＳ種類４０２を抽出し、クライアント３０にブートさせるＯＳ種類を決定する（Ｓｂ２）。例えば、図６に示したクライアント識別ＩＤ５０１が「ID-XYZ」５０１ａであるので、図５に示したクライアントＯＳテーブル４００を参照すると、クライアント３０にブートさせるＯＳ種類は、「OS2」４０２ａとなる。
【００３５】
次に、クライアント連絡部１００は、ＯＳ種類を決定すると、図６に示したブートリクエスト５００およびＳｂ２で決定したＯＳ種類を、ＯＳ構成情報作成手段２００およびＯＳ作成手段３００に渡す。
そして、ＯＳ構成情報作成手段２００では、クライアント連絡部１００から図６に示したブートリクエスト５００およびＯＳ種類を受け取ると、ＯＳ構成情報作成部２１０が、ブートリクエスト５００に含まれるＣＰＵ種類５０２とマシンタイプ５０３とを基に、図２に示す構成調査エージェントテーブル２２０からクライアント３０のハードウェア構成を調査するためのエージェントプログラム２２３を抽出して、クライアント３０のためのエージェントプログラムを決定する（Ｓｂ３）。
ここでは、図６に示したＣＰＵ種類５０２が「CpuType3」５０２ａであり、図６に示したマシンタイプ５０３が「マシン３」５０３ａなので、図２に示した対応するエージェントプログラム２２３の「Type3Check.exe」２２３ａが抽出される。
【００３６】
その後、ＯＳ構成情報作成部２１０は、クライアント連絡部１００およびネットワーク２０を経由し、決定したエージェントプログラム２２３をクライアント３０に送信する（Ｓｂ４）。ここでは、エージェントプログラム２２３として、図２に示した「Type3Check.exe」２２３ａを送信する。
【００３７】
クライアント３０は、エージェントプログラム２２３を受信すると（Ｓａ３）、受信したエージェントプログラム２２３を実行し（Ｓａ４）、図７に示したハードウェア構成の調査結果６００をネットワークブートシステム１０のクライアント連絡部１００に送信する（Ｓａ５）。ここでは、図７に示したとおり、クライアント３０には、「XP0001」６０１ａと、「XP0002」６０１ｂとのデバイスＩＤ６０１を持つデバイスが存在する調査結果となっている。
【００３８】
一方、ネットワークブートシステム１０では、ＯＳ作成手段３００が、クライアント連絡部１００からブートリクエスト５００とＯＳ種類とを渡され、クライアント３０から図７に示したハードウェア構成の調査結果６００を受信すると（Ｓｂ５）、図３に示した共通モジュールテーブル３３０のＯＳ種類３３１の中で、クライアント連絡部１００から渡されたＯＳ種類４０２と一致する全てのデータを抽出し、その中から図３に示したＯＳバイナリ３３５を抽出する（Ｓｂ６）。
ここでは、「OS2」４０２ａをキーとして、対応する「OS2」のＯＳ種類３３１を含むレコードを検索し、「OS2Kernel」のモジュール名３３２と「6.0.0.1025」のバージョン３３３と「\OS2System」の位置３３４を抽出し、その「\OS2System」からＯＳバイナリ３３５に対応するバイナリデータである「21gaff9a・・・・」３３５ａを抽出する。同様に、「c97a6f29・・・・」３３５ｂも抽出する。
【００３９】
次に、ＯＳ作成手段３００は、ＯＳバイナリ３３５に対応するバイナリデータである「21gaff9a・・・・」３３５ａをコンパイル部３２０に送る。そして、コンパイル部３２０は、図６に示したブートリクエスト５００に含まれるＣＰＵ種類５０２に従い、受け取ったバイナリデータをそのＣＰＵ向けの実行ファイルにコンパイルする（Ｓｂ７）。ここでは、ＣＰＵ種類が「CpuType3」５０２ａであるので、コンパイル部３２０は、バイナリデータである「21gaff9a・・・・」３３５ａおよび「c97a6f29・・・・」３３５ｂを、クライアント３０の図示しないＣＰＵの実行形式にコンパイルする。コンパイル部３２０は、コンパイルが全て終わったら、コンパイル済みのバイナリをＯＳ作成部３１０に渡す。
【００４０】
次に、ＯＳ作成部３１０は、コンパイル部３２０から渡されたコンパイル済みバイナリを、共通モジュールテーブル３３０の図３に示したモジュール名３３２とバージョン３３３と位置３３４とに従い、ネットワーク２０に接続されたＯＳ格納ディスク４０上に配置する（Ｓｂ８）。ここでは、「21gaff9a・・・・」３３５ａがコンパイルされたバイナリは、ＯＳ格納ディスク４０の位置「￥」ルートに、ファイル名「OS2System」、バージョン「６．０」として配置される。「c97a6f29・・・・」３３５ｂも同様にして配置される。
【００４１】
このようにして、ＯＳ作成部３１０は、Ｓｂ５で受信したハードウェア構成の調査結果６００に含まれるデバイスＩＤ６０１全てについて、次の条件１〜３の全てを満たすモジュールをハードウェア依存モジュールテーブル３４０から抽出し、図３に示したドライバ名３４４とバージョン３４５と位置３４６との情報に従い、ＯＳ格納ディスク４０上に配置する。
【００４２】
条件１は、図４に示すハードウェア依存モジュールテーブル３４０のデバイスＩＤ３４１が一致するという条件である。
条件２は、図６に示したブートリクエスト５００のＣＰＵ種類５０２と図４に示したハードウェア依存モジュールテーブル３４０のＣＰＵ種類３４２とが一致するという条件である。
条件３は、クライアント３０がブートする図５に示したＯＳ種類４０２と図４に示したハードウェア依存モジュールテーブル３４０のＯＳ種類３４３とが一致するという条件である。
【００４３】
ここでは、図６に示したＣＰＵ種類５０２が「CpuType3」５０２ａであり、クライアント３０がブートする図５に示したＯＳ種類４０２が「OS2」４０２ａであるので、図７に示したハードウェア構成の調査結果６００に含まれるデバイスＩＤ６０１の「XP0001」６０１ａ用のドライバとして、ドライババイナリである図４に示した「21gaff9a・・・・」３４７ａが、ドライバ名３４４を「OS2driver1.sys」、バージョン３４５を「２．１」として、ＯＳ格納ディスク４０の位置「￥」ルートに配置される。
【００４４】
また、図７に示したデバイスＩＤ６０１の「XP0002」６０１ｂ用のドライバとしては、ドライババイナリである図４に示した「21gaff9a・・・・」３４７ｂが、ドライバ名３４４を
「OS2driver2.sys」、バージョン３４５を「２．１」として、ＯＳ格納ディスク４０の位置「￥」ルートに配置される。
【００４５】
そして、ＯＳ作成部３１０は、全てのＯＳのモジュールおよびドライバのモジュールをＯＳ格納ディスク４０上に配置した後、クライアント連絡部１００にＯＳが完成した旨を通知する。クライアント連絡部１００は、ＯＳが完成した旨の通知を受けると、クライアント３０に対し、ＯＳ格納ディスク４０上に作成されたＯＳをブートする指令であるブート指示を送信する（Ｓｂ９）。なお、ブート指示には、ＯＳ格納ディスク４０上に格納された各モジュールの格納先（アドレス）が含まれている。
【００４６】
その後、クライアント３０は、ネットワークブートシステム１０からのブート指示を受信し（Ｓａ６）、ＯＳ格納ディスク４０上に格納された各モジュールを用いてブートする（Ｓａ７）。これにより、ネットワークブートシステム１０は、クライアント３０にＯＳをブートさせることができる。
また、ＯＳ格納ディスク４０では、クライアント３０によるブートが終了すると、そのモジュールが削除される。この削除は、クライアント３０から電源をオフにする旨の通知を受けたとき、あるいは、ＯＳ格納ディスク４０の記憶容量に余裕がないときに行えばよい。
以上のように、クライアント３０のブートのたびに、クライアント３０のハードウェア構成に従ったモジュールを抽出して構成することによって、ＯＳを格納する記憶容量を少なくすることができる。
【００４７】
なお、前記実施形態の説明では、ネットワークブートシステム１０からクライアント３０にエージェントプログラム２２３を送って実行させるものとして説明したが、あらかじめクライアント３０にＢＩＯＳに組み込むようにしてもよい。また、ネットワーク２０を介さずに、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）からブートのたびにエージェントプログラム２２３を読み出すようにしてもよい。さらに、ネットワークブートシステム１０は、ＯＳ格納ディスク４０を介さず、直接クライアント３０に作成したモジュールを送信してもよい。
【図面の簡単な説明】
【００４８】
【図１】実施形態のネットワークブートシステムを含むクライアントサーバシステムの全体構成図である。
【図２】構成調査エージェントテーブルの構成例を示す図である。
【図３】共通モジュールテーブルの構成例を示す図である。
【図４】ハードウェア依存モジュールテーブルの構成例を示す図である。
【図５】クライアントＯＳテーブルの構成例を示す図である。
【図６】ブートリクエストの構成例を示す図である。
【図７】ハードウェア構成調査結果の構成例を示す図である。
【図８】実施形態のネットワークブート処理を示すフローチャートである。
【符号の説明】
【００４９】
１０…ネットワークブートシステム、２０…ネットワーク、３０…クライアント、４０…ＯＳ格納ディスク、１００…クライアント連絡部（通信手段）、２００…ＯＳ構成情報作成手段、２１０…ＯＳ構成情報作成部、２２０…構成調査エージェントテーブル、３００…ＯＳ作成手段、３１０…ＯＳ作成部、３２０…コンパイル部、３３０…共通モジュールテーブル（モジュール記憶手段）、３４０…ハードウェア依存モジュールテーブル（モジュール記憶手段）
【図１】
2006127169.tif 000003
【図２】
2006127169.tif 000004
【図３】
2006127169.tif 000005
【図４】
2006127169.tif 000006
【図５】
2006127169.tif 000007
【図６】
2006127169.tif 000008
【図７】
2006127169.tif 000009
【図８】
2006127169.tif 000010