(57)【要約】【課題】クライアントコンピューターのオペレーティングシステムのネットワークブーティングのためのシステム及び方法を提供すること。【解決手段】本発明は、ハイバネーションイメージを利用しているパソコン（ＰＣ）等の、１つまたは複数のクライアント装置（２）のオペレーティングシステム（Ｏ／Ｓ）のネットワークブートのためのステップ及び方法を提供する。１つまたは複数のクライアント装置のリモートブーティングは仮想ディスクエミュレーションを利用することによって、また、特定の好まれる実施例において、１つまたは複数のクライアント装置を適切にブートし、初期設定するために必要なネットワークサーバー（４）に存在するハイバネーション（２０）、Ｏ／Ｓ（２８）、及びアプリケーションフィルを含むデータをブロードキャスティングまたはマルチキャスティングすることによって達成される。【選択図】図１
2008198210.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のサーバから１つ以上のクライアント装置にオペレーティングシステムをストリーミングする方法であって、
該方法は、
該１つ以上のクライアント装置上で実行している実行時前ブート環境サービスによって、該ネットワーク上に常駐する仮想ブートドライブのアドレスを有する第１のサーバを識別することと、
該実行時前ブート環境サービスによって、オペレーティングシステムデータを有するハイバネーションファイルを有する該仮想ブートドライブを検出することと、
実行時前ブートコードを用いて、該１つ以上のクライアント装置と該仮想ブートドライブとの間で仮想ドライブ接続を確立することと、
該仮想ブートドライブから、要求されたマスターブートレコードを受信することと、
該１つ以上のクライアント装置上で該マスターブートレコードを実行することであって、該マスターブートレコードは、オペレーティングシステムローダに対する要求を該仮想ブートドライブに発行する、ことと、
該仮想ブートドライブから該オペレーティングシステムローダを受信することと、
マスターブートレコードコードによって発行された該要求に応答して、該仮想ブートドライブからダウンロードされた該ハイバネーションファイルを、該オペレーティングシステムローダによってロードすることと、
該ロードされたハイバネーションファイルを介して、該１つ以上のクライアント装置上にオペレーティングシステムを回復することと、
該オペレーティングシステムを用いて、該オペレーティングシステムを実行することが可能であるドライバを起動することと
を包含する、方法。
【請求項２】
前記ネットワーク上でブートサーバを見つけ出すことをさらに包含し、該ブートサーバは、前記仮想ブートドライブに関連付けられている、請求項１に記載の方法。
【請求項３】
要求されたデータセクターを受信することをさらに包含し、各データセクターは、前記仮想ブートドライブによって前記１つ以上のクライアント装置に送信される、請求項１に記載の方法。
【請求項４】
前記ドライバを起動することは、格納装置ドライバおよびネットワークフィルタドライバのそれぞれを起動することをさらに包含する、請求項１に記載の方法。
【請求項５】
前記ネットワークフィルタドライバによって、前記要求されたデータセクターの一部を格納装置ドライバにリレーすることと、
前記オペレーティングシステムによって、該要求されたデータセクターの一部を読み出すことにより、前記ネットワークフィルタドライバを初期化することと
をさらに包含する、請求項４に記載の方法。
【請求項６】
前記オペレーティングシステムによって発行されたリード要求およびライト要求をキャッシュメモリに格納することと、
前記オペレーティングシステムによって、ネットワークインタフェースカードドライバウを初期化することと、
前記格納装置ドライバによって、該格納されているリード要求およびライト要求の各々をキャッシュメモリから取り出すことであって、該リード要求およびライト要求を取り出すことは、該オペレーティングシステムを回復する、ことと
をさらに包含する、請求項４に記載の方法。
【請求項７】
ネットワーク上のサーバから１つ以上のクライアント装置にオペレーティングシステムをストリーミングするシステムであって、
該システムは、
該１つ以上のクライアント装置上で実行している実行時前ブート環境サービスによって、該ネットワーク上に常駐する仮想ブートドライブのアドレスを有する第１のサーバを識別する手段と、
該実行時前ブート環境サービスによって、オペレーティングシステムデータを有するハイバネーションファイルを有する該仮想ブートドライブを検出する手段と、
実行時前ブートコードを用いて、該１つ以上のクライアント装置と該仮想ブートドライブとの間で仮想ドライブ接続を確立する手段と、
該仮想ブートドライブから、要求されたマスターブートレコードを受信する手段と、
該１つ以上のクライアント装置上で該マスターブートレコードを実行する手段であって、該マスターブートレコードは、オペレーティングシステムローダに対する要求を該仮想ブートドライブに発行する、手段と、
該仮想ブートドライブから該オペレーティングシステムローダを受信する手段と、
マスターブートレコードコードによって発行された該要求に応答して、該仮想ブートドライブからダウンロードされた該ハイバネーションファイルを、該オペレーティングシステムローダによってロードする手段と、
該ロードされたハイバネーションファイルを介して、該１つ以上のクライアント装置上にオペレーティングシステムを回復する手段と、
該オペレーティングシステムを用いて、該オペレーティングシステムを実行することが可能であるドライバを起動する手段と
を含む、システム。
【請求項８】
前記ネットワーク上でブートサーバを見つけ出す手段をさらに含み、該ブートサーバは、前記仮想ブートドライブに関連付けられている、請求項７に記載のシステム。
【請求項９】
要求されたデータセクターを受信する手段をさらに含み、各データセクターは、前記仮想ブートドライブによって前記１つ以上のクライアント装置に送信される、請求項７に記載のシステム。
【請求項１０】
前記ドライバを起動する手段は、格納装置ドライバおよびネットワークフィルタドライバのそれぞれを起動する手段をさらに含む、請求項７に記載のシステム。
【請求項１１】
前記ネットワークフィルタドライバによって、前記要求されたデータセクターの一部を格納装置ドライバにリレーする手段と、
前記オペレーティングシステムによって、該要求されたデータセクターの一部を読み出すことにより、前記ネットワークフィルタドライバを初期化する手段と
をさらに含む、請求項１０に記載のシステム。
【請求項１２】
前記オペレーティングシステムによって発行されたリード要求およびライト要求をキャッシュメモリに格納する手段と、
前記オペレーティングシステムによって、ネットワークインタフェースカードドライバウを初期化する手段と、
前記格納装置ドライバによって、該格納されているリード要求およびライト要求の各々をキャッシュメモリから取り出す手段であって、該リード要求およびライト要求を取り出すことは、該オペレーティングシステムを回復する、手段と
をさらに含む、請求項１０に記載のシステム。
【請求項１３】
ネットワークを介してクライアントコンピュータを所定の状態にブートする方法であって、
該方法は、
クライアント実行型エミュレーションコードおよびクライアントディスクアクセス割り込みプロシージャによって、サーバ演算装置に関連付けられた仮想ハードディスクの第１の組のセクターに対する要求を発行することであって、該第１の組のセクターは、第１のブートファイルを含む、ことと、
該ネットワークを介して、該サーバ演算装置から第１のブートファイルを受信することと、
該第１のブートファイルのコンテントを実行することであって、
第２のクライアントディスクアクセス割り込みハンドラプロシージャをインストールすることであって、該第２のクライアントディスクアクセス割り込みハンドラプロシージャは、ハードディスクへのリード要求およびライト要求を傍受し、該リード要求を該サーバ演算装置に転送し、該ライト要求をキャッシュすることにより、該仮想ハードディスクの状態を保つように、該ライト要求が該仮想ハードディスクにおいて実行されることを防止する、ことと、
第２のブートファイルを含む第２の組のセクターに対する第２の要求を発行することと
を包含する、ことと、
該サーバ演算装置から、該第２のブートファイルを受信することであって、該第２のブートファイルは、Ｏ／Ｓブートファイルを含む、ことと、
該第２のブートファイルを実行することであって、
ハイバネーションイメージを含む第３の組のセクターに対する第３の要求を発行すること
を包含する、ことと、
該ハイバネーションイメージを受信することであって、該ハイバネーションイメージは、ローカルメモリのコンテントと、メモリ管理情報と、該クライアントコンピュータを該所定の状態に回復するために必要とされる他の状態情報とを含む、ことと、
該ハイバネーションイメージをクライアントメモリにロードすることと、
Ｏ／Ｓに関連付けられたドライバ、データ構造およびアプリケーションを初期化することにより、該クライアントコンピュータを該所定の状態に回復することと
を包含する、方法。
【請求項１４】
第２のクライアントディスクアクセス割り込みハンドラが、前記クライアントコンピュータにおいてローカル的に前記ライト要求をキャッシュする、請求項１３に記載の方法。
【請求項１５】
前記第２のクライアントディスクアクセス割り込みハンドラは、前記ネットワーク上の位置に前記ライト要求をキャッシュする、請求項１３に記載の方法。
【請求項１６】
前記エミュレーションコードは、前記クライアントコンピュータに常駐するＰＸＥコードを含む、請求項１３に記載の方法。
【請求項１７】
前記ドライバを初期化することは、サーバエミュレーションを可能にするように、ネットワークフィルタドライバおよび格納装置ドライバを初期化することを包含する、請求項１３に記載の方法。
【請求項１８】
前記ハイバネーションイメージを受信することは、前記サーバを介して、該ハイバネーションイメージを受信することを包含する、請求項１３に記載の方法。
【請求項１９】
前記第２のブートファイルを受信することは、セクターベースで、該第２のブートファイルを受信することを包含する、請求項１３に記載の方法。
【請求項２０】
前記クライアントコンピュータによって、前記第２のブートファイルのセクターのうちの１つの再送信を要求することをさらに包含する、請求項１９に記載の方法。
【請求項２１】
前記ハイバネーションイメージを受信することは、セクターベースで、該ハイバネーションイメージを受信することを包含する、請求項１３に記載の方法。
【請求項２２】
前記クライアントコンピュータによって、前記ハイバネーションイメージのセクターのうちの１つの再送信を要求することをさらに包含する、請求項２１に記載の方法。
【請求項２３】
命令を有するコンピュータ読み取り可能な媒体であって、該命令が実行された場合、該コンピュータ読み取り可能な媒体は、ネットワークを介して、クライアントコンピュータを所定の状態にブートにさせ、
該コンピュータ読み取り可能な媒体は、
クライアント実行型エミュレーションコードおよびクライアントディスクアクセス割り込みプロシージャによって、サーバ演算装置に関連付けられた仮想ハードディスクの第１の組のセクターに対する要求を発行するための命令であって、該第１の組のセクターは、第１のブートファイルを含む、命令と、
該ネットワークを介して、該サーバ演算装置から第１のブートファイルを受信するための命令と、
該第１のブートファイルのコンテントを実行するための命令であって、
第２のクライアントディスクアクセス割り込みハンドラプロシージャをインストールするための命令であって、該第２のクライアントディスクアクセス割り込みハンドラプロシージャは、ハードディスクへのリード要求およびライト要求を傍受し、該リード要求を該サーバ演算装置に転送し、該ライト要求をキャッシュすることにより、該仮想ハードディスクの状態を保つように、該ライト要求が該仮想ハードディスクにおいて実行されることを防止する、命令と、
第２のブートファイルを含む第２の組のセクターに対する第２の要求を発行するための命令と
を含む、命令と
該サーバ演算装置から、該第２のブートファイルを受信するための命令であって、該第２のブートファイルは、Ｏ／Ｓブートファイルを含む、命令と、
該第２のブートファイルを実行するための命令であって、
ハイバネーションイメージを含む第３の組のセクターに対する第３の要求を発行するための命令
を含む、命令と、
該ハイバネーションイメージを受信するための命令であって、該ハイバネーションイメージは、ローカルメモリのコンテントと、メモリ管理情報と、該クライアントコンピュータを該所定の状態に回復するために必要とされる他の状態情報とを含む、命令と、
該ハイバネーションイメージをクライアントメモリにロードするための命令と、
Ｏ／Ｓに関連付けられたドライバ、データ構造およびアプリケーションを初期化することにより、該クライアントコンピュータを該所定の状態に回復するための命令と
を含む、コンピュータ読み取り可能な媒体。
【請求項２４】
第２のクライアントディスクアクセス割り込みハンドラが、前記クライアントコンピュータにおいてローカル的に前記ライト要求をキャッシュする、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２５】
前記第２のクライアントディスクアクセス割り込みハンドラは、前記ネットワーク上の位置に前記ライト要求をキャッシュする、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２６】
前記エミュレーションコードは、前記クライアントコンピュータに常駐するＰＸＥコードを含む、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２７】
前記ドライバを初期化するための命令は、サーバエミュレーションを可能にするように、ネットワークフィルタドライバおよび格納装置ドライバを初期化するための命令を含む、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２８】
前記ハイバネーションイメージを受信するための命令は、前記サーバを介して、該ハイバネーションイメージを受信するための命令を含む、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項２９】
前記第２のブートファイルを受信するための命令は、セクターベースで、該第２のブートファイルを受信するための命令を含む、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項３０】
前記クライアントコンピュータによって、前記第２のブートファイルのセクターのうちの１つの再送信を要求するための命令をさらに含む、請求項２９に記載のコンピュータ読み取り可能な媒体。
【請求項３１】
前記ハイバネーションイメージを受信するための命令は、セクターベースで、該ハイバネーションイメージを受信するための命令を含む、請求項２３に記載のコンピュータ読み取り可能な媒体。
【請求項３２】
前記クライアントコンピュータによって、前記ハイバネーションイメージのセクターのうちの１つの再送信を要求するための命令をさらに含む、請求項３１に記載のコンピュータ読み取り可能な媒体。
【請求項３３】
ネットワークを介してクライアントコンピュータを所定の状態にブートするシステムであって、
該システムは、
クライアント実行型エミュレーションコードおよびクライアントディスクアクセス割り込みプロシージャによって、サーバ演算装置に関連付けられた仮想ハードディスクの第１の組のセクターに対する要求を発行する手段であって、該第１の組のセクターは、第１のブートファイルを含む、手段と、
該ネットワークを介して、該サーバ演算装置から第１のブートファイルを受信する手段と、
該第１のブートファイルのコンテントを実行する手段であって、
第２のクライアントディスクアクセス割り込みハンドラプロシージャをインストールする手段であって、該第２のクライアントディスクアクセス割り込みハンドラプロシージャは、ハードディスクへのリード要求およびライト要求を傍受し、該リード要求を該サーバ演算装置に転送し、該ライト要求をキャッシュすることにより、該仮想ハードディスクの状態を保つように、該ライト要求が該仮想ハードディスクにおいて実行されることを防止する、手段と、
第２のブートファイルを含む第２の組のセクターに対する第２の要求を発行する手段と
を含む、手段と
該サーバ演算装置から、該第２のブートファイルを受信する手段であって、該第２のブートファイルは、Ｏ／Ｓブートファイルを含む、手段と、
該第２のブートファイルを実行する手段であって、
ハイバネーションイメージを含む第３の組のセクターに対する第３の要求を発行する手段
を含む、手段と、
該ハイバネーションイメージを受信する手段であって、該ハイバネーションイメージは、ローカルメモリのコンテントと、メモリ管理情報と、該クライアントコンピュータを該所定の状態に回復するために必要とされる他の状態情報とを含む、手段と、
該ハイバネーションイメージをクライアントメモリにロードする手段と、
Ｏ／Ｓに関連付けられたドライバ、データ構造およびアプリケーションを初期化することにより、該クライアントコンピュータを該所定の状態に回復する手段と
を含む、システム。
【請求項３４】
第２のクライアントディスクアクセス割り込みハンドラが、前記クライアントコンピュータにおいてローカル的に前記ライト要求をキャッシュする、請求項３３に記載のシステム。
【請求項３５】
前記第２のクライアントディスクアクセス割り込みハンドラは、前記ネットワーク上の位置に前記ライト要求をキャッシュする、請求項３３に記載のシステム。
【請求項３６】
前記エミュレーションコードは、前記クライアントコンピュータに常駐するＰＸＥコードを含む、請求項３３に記載のシステム。
【請求項３７】
前記ドライバを初期化する手段は、サーバエミュレーションを可能にするように、ネットワークフィルタドライバおよび格納装置ドライバを初期化する手段を含む、請求項３３に記載のシステム。
【請求項３８】
前記ハイバネーションイメージを受信する手段は、前記サーバを介して、該ハイバネーションイメージを受信する手段を含む、請求項３３に記載のシステム。
【請求項３９】
前記第２のブートファイルを受信する手段は、セクターベースで、該第２のブートファイルを受信する手段を含む、請求項３３に記載のシステム。
【請求項４０】
前記クライアントコンピュータによって、前記第２のブートファイルのセクターのうちの１つの再送信を要求する手段をさらに含む、請求項３９に記載のシステム。
【請求項４１】
前記ハイバネーションイメージを受信する手段は、セクターベースで、該ハイバネーションイメージを受信する手段を含む、請求項３３に記載のシステム。
【請求項４２】
前記クライアントコンピュータによって、前記ハイバネーションイメージのセクターのうちの１つの再送信を要求する手段をさらに含む、請求項４１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハイバネーションイメージを利用したパソコン（ＰＣ）等の、１つまたは複数
のクライアント装置上のオペレーティングシステムＯ／Ｓのネットワークブーティング（
または、ブート処理）に関する。詳細に述べると、本発明は仮想ディスクエミュレーショ
ンを利用することによって、また、特定の実施例において、１つまたは複数のクライアン
ト装置を適切にブートし、初期設定するために必要なネットワークサーバー上に存在する
ハイバネーション、Ｏ／Ｓ、及びアプリケーションフィルを含むデータをブロードキャス
ティングまたはマルチキャスティングすることによってクライアント装置の遠隔ブーティ
ングを促進する。
【背景技術】
【０００２】
コンピューターネットワークはオフィスや企業の他の環境においてパソコン（ＰＣ）を
相互接続するために使用されている。ＰＣの使用の拡大とともに、コンピューターファイ
ルの共有化及びインストール後の各ＰＣの管理の促進に対する要求が増している。多数の
ＰＣから成るネットワークにおいて、組織が、各ＰＣを実際に訪問及びサービスするため
のＩＴ用人員を保有することは非常にコストがかかることである。このようなコストを抑
えるために、ソフトウェア及びコンピューターの製造業者はソフトウェア製品をネットワ
ークサーバーで集中的に維持し、ネットワークを介して各クライアントＰＣに所望のソフ
トウェアをダウンロードするための技術を開発している。
【０００３】
組み込み型のインテリジェント接続された装置の設計者及び製造者はコストを削減し、
管理性及び信頼性を向上させ、展開を促進し、装置内の知的財産を保護するための方法を
模索している。これらを達成する１つの方法はクライアントＰＣがネットワークからブー
ト（または、起動）される能力を導入することである。ＰＣのブートプロセスの目的は必
要なオペレーティングシステム要素をロードし、ハードウェア装置を初期化し、ユーザー
にアプリケーションを提示すことである。これは長い処理であり、通常の条件下において
、ハードウェアまたはソフトウェアの初期設定の変化及び認可されたユーザーの変化を考
慮する必要がある。ネットワークブートは、ＰＣに関連した（または、ＰＣに直接接続し
た）ハードウェアが固定的であり、クライアントＰＣの役割がたびたび変化しない状況に
より適している。ネットワークブートはＰＣのハードディスクの除去を可能にし、ソフト
ウェアコンテントの中央管理を促進する。現状のネットワークの帯域（10/100Mbs及び1Gb
s）はクライアントＰＣのローカルハードディスクの速度に達していないので、クライア
ントＰＣのオペレーティングシステム（Ｏ／Ｓ）の遠隔的な「コールドブート」は効率的
ではなく、非常に時間がかかる。さらに、ネットワークの有効な帯域幅及びネットワーク
サーバーのリソースは多数のクライアント装置を同時にブート（「ブートストーム」）し
ようとしたときにさらに悪化する可能性がある。「コールドブート」のために必要な長い
時間は通常の組み込み型装置の認知及び挙動の魅力を奪う。したがって、ネットワーク上
のローディングサーバー（または、ロード用サーバー）からの複数のクライアント装置の
ブーティングをスピードアップするスケーラブルな（または、拡張及び縮小が容易な）方
法が要求されている。
【０００４】
基本入出力システム（ＢＩＯＳ）、ＰＣ、及びＯ／Ｓの製造者は「ハイバネーション」
と呼ばれる技術を導入した。ハイバネーションにおいて、全てのＰＣのメモリー及び状態
はディスクにセーブされ、その後、特定の時間後に回復される。ハイバネーションはバッ
テリーの電力を節約するために、主に、ノート型パソコンで使用されている。例えば、「
ハイバーネートモード」に設定されたノート型パソコンは、それの蓋が閉じられたときに
、または特定の無活動時間が経過した後に、それの状態をそれのローカルハードディスク
にセーブし、電源をオフし、蓋が開けられたときにそれ自体を回復する。ハイバネーショ
ンの本来の目的はバッテリーを節約することであるが、それはＰＣが完全な「コールドブ
ート」を実施したときよりも素早く、ハイバネーション前のＰＣの状態に戻ることを可能
にする。ノート型パソコンに電力が再印加されたとき、パソコンはＯ／Ｓの非常に少ない
部分だけをロードすればよい。Ｏ／Ｓはハイバネーションイメージが有効であるかをチェ
ックする。ハイバネーションイメージが存在する場合、Ｏ／Ｓはハイバネーションファイ
ルに保存されたメモリーのコンテント（または、内容）をＰＣのメモリーにコピーし直す
。ハイバネーションイメージが存在しない場合は、通常の「コールドブート」処理が開始
される。ここでハイバネーションイメージを使用したハイバネーションの「再開（または
、回復）」がより少ないデータの初期化を必要とし、それにより、ＰＣが「コールドブー
ト」を実施されるよりも素早く所望の状態に戻れるとうい長所を持つことに注意する必要
がある。
【０００５】
従来技術のシステムは、ネットワーク上のブートイメージからクライアント装置を遠隔
的にブートすることに関連した長いブート時間を解決するための手法を提示している（例
えば、特許文献１参照）。しかしながら、この特許は各クライアントＰＣのローカル格納
媒体に格納されたハイバネーションイメージから再生し、一種のリセットにしたがうこと
を教授している。この手法はクライアントＰＣがハイバネーションの前にＰＣの所望の状
態の全ての再設定を実施することを必要とし、サーバーが多数のクライアントＰＣが接続
されたネットワーク上で、対応する複数のクライアントＰＣに複数のハイバネーションイ
メージを個々に転送するのでネットワークの衝突を引き起こす可能性がある。
【０００６】
従来のシステムには、サーバーへのネットワーク接続を介してクライアントコンピュー
ター上の３２ビットＰＣオペレーティングシステム（Ｏ／Ｓ）をブートするためにディス
クエミュレーションを使用する装置及び方法を使用しているものもある（例えば、特許文
献２参照）。詳細に述べると、この特許はクライアントのＯ／Ｓがそれ自体でネットワー
ク処理を実施することができるようになるまで、「ガタピシモード（thunking）」と呼ば
れる、ウィンドウズ（登録商標）９ｘＯ／Ｓの３２ビット保護モード処理とＢＩＯＳによって使用される１６ビットリアルモードとの間での（各ディスクＩ／Ｏコールでの）スイッチングの方法を教授している。この方法及び装置はＯ／Ｓを含むクライアントＰＣ上で望まれるソフトウェアアプリケーションの完全なイメージのダウンロードによる、サーバーからのウィンドウズ（登録商標）９５等のＯ／Ｓのブートに特に適している。しかしながら、この特許はMicrosoft Corporationの最近のＯ／Ｓのバージョン、すなわち、保護モードで動作するウィンドウズ（登録商標）２０００及びウィンドウズ（登録商標）ＸＰで有効なハイバネーション機能の長所を考えに入れていない。また、この特許は本発明の特徴の１つである、特定の好まれる実施例においてハイバネーションファイルを含む、所望のデータの、ネットワーク上の複数のクライアントＰＣへのマルチキャスティングの使用を考えに入れていない。
【０００７】
【特許文献１】米国特許第６１０１６０１号明細書
【特許文献２】米国特許第５９７４５４７号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は仮想ディスクエミュレーションを利用してネットワークサーバー上に格納され
たハイバネーションイメージからの１つまたは複数のクライアントＰＣ上のＯ／Ｓのブー
ティング（または、ブート処理）のためのシステム及び方法を提供する。
【課題を解決するための手段】
【０００９】
本発明の特定の好まれる実施例において、ハイバネーションイメージ及びいくつかのＯ
／Ｓファイルを含むハイバネーションファイル等の、ブート処理を進めるために必要なデ
ータは後で説明されるように（また、本出願人のもう１つの特許出願である国際公開第０
３／０９００７３号「System for and Method of Streaming Data to a Computer in a N
etwork」に説明されているように）、ネットワークサーバーから同期的に（または、同時
的に）ストリームされる（または、データ転送される）。（上述の出願の内容はその全体
が本願に参照として組み込まれるものとする。）
【００１０】
１つまたは複数のＰＣは各々マイクロソフトウィンドウズ（登録商標）２０００及びＸＰ等の、ハイバネーションをサポートするＯ／Ｓを動作させる。独創的なソフトウェアドライバーは少なくとも部分的にネットワークサーバーから、ハイバネーションファイルを集合的に（または、共同的に）構成する複数のセクター（データパケット）を受諾（または、受信）することによって、各クライアントＰＣを使用可能な状態に回復（または、再開）することを援助するように動作する。ブート処理の初期の段階でのディスクアクセスのための要求（または、リクエスト）は初めに、ＰＸＥサービスを使用して各クライアントからネットワークにリダイレクトされる（または、向け直される）。ＰＸＥコードは各クライアントとサーバーとの間に初期の仮想接続を確立し、サーバーがクライアントのもう１つのドライブとして認識されることを可能にするだろう。ＰＸＥコードは付加的なエミュレーションコードのダウンロードを援助し、それ（すなわち、ダウンロードされたエミュレーションコード）は次に、ハイバネーションファイルのダウンロードを援助するＯ／Ｓコードをダウンロードする。ブート処理の初期段階中、クライアントＯ／Ｓにサポートされたネットワークアクセスを与えるために不十分なＯ／Ｓ要素がロード及び起動される。結果として、クライアントのハードディスクアクセス要求はInt 13hハンドラー及びダウンロードされたエミュレーションコードを介して操作される。Ｏ／Ｓのブートの約２５％において、Ｏ／Ｓは独創的なドライバーを使用してサーバーとの通信の制御を引き受け、ＢＩＯＳInt 13hサービスに対する必要性を効果的に回避する。
【００１１】
もう１つの実施例において、ネットワークサーバーからダウンロードされたデータはネ
ットワークサーバーに関連した（または、サーバーに直接接続した）格納装置の複数のセ
クターから予め決められた様式で回復（または、検索）されてもよい。動作中、１つまた
は複数のクライアントＰＣは複数のセクターのダウンロードに対する複数の要求（または
、リクエスト）を発行する。要求は一時的にクライアントＰＣの各々のローカルディスク
の動作をエミュレートするサーバーに転送（または、送信）される。１つの実施例におい
て、ネットワークサーバーはサーバーに関連した仮想ハードディスクから所望のデータを
、要求を発行しているクライアントの各々にブロードキャストする。もう１つの実施例に
おいて、ネットワークサーバーはサーバーに関連した（または、サーバーに直接接続した
）仮想ハードディスクから所望のデータを、要求しているクライアントの各々に同時的に
マルチキャストする。サーバーは好まれるものとして、マルチキャスティングの前の、予
め決められた勧誘期間中（または、インビテーション期間中）にダウンロード要求を受諾
（または、受信）する。
【００１２】
特定の実施例において、エミュレーションはクライアントＰＣの各々に存在するエミュ
レーションコードを実行することによって達成される。好まれるものとして、エミュレー
ションコードは各クライアントＰＣのネットワークインターフェースカード（ＮＩＣ）上
に存在する実行時前ブート環境（ＰＸＥ（pre-execution boot environment））コードで
ある。代替的な実施例において、エミュレーションは実行されたときに割り込み操作プロ
シジャー（Int 13h）によってディスクアクセス制御を引き受け、所望のデータを要求す
る、ネットワークサーバーからダウンロードされた独創的なブートコードの結果である。
もう１つの実施例において、エミュレーションは（好まれるものとして、ウィンドウズ（登録商標）２０００、ＮＴ、またはＸＰである）Ｏ／Ｓの一部、及び、同様にクライアントのネットワークインターフェースの制御を引き受け、所望のデータを要求する、ネットワークサーバーからダウンロードされた２つの独創的なドライバーを実行することによって各クライアントＰＣで達成される。ストリームされるデータ（または、転送されるデータ）はネットワークサーバーからダウンロードを要求しているクライアントＰＣへの、バーストモードでのマルチキャストまたはブロードキャストであってもよい。それゆえ、データは各クライアントＰＣに冗長的に送信されるのではなく、一度だけ送信されればよい。データセクターは各クライアントで受信されるので、それらは独創的なドライバーによって予めアロケートされたデータキャッシュにキュー登録（または、キューイング）される。これは各クライアントがＯ／Ｓデータストラクチャー、ドライバー、及び（または）アプリケーションを初期化する等の、他の動作に専念することを可能にする。
【発明の効果】
【００１３】
本発明はクライアント装置がハードディスクとともに構成されなくてもよいので、必要
とするハードウェアが少ない。本発明はまた、クライアントＰＣが同一のハイバネーショ
ンイメージをブートすることを可能にする。これは各クライアントが同一のＯ／Ｓやアプ
リケーションの複製を実行する必要がないので、各クライアント装置の維持を容易にする
。例えば、ソフトウェアのアップグレードはクライアントＰＣの数にかかわらず、単一の
ハイバネーションイメージでのみ実施されることを必要とする。ハイバネーションイメー
ジは複数のクライアントにマルチキャストされるので、例えば、多数のクライアントが同
時にブートしようとしたとき等の、トラフィックのピーク時に、ネットワークのトラフィ
ックが大幅に減少される。したがって本発明の解決法は増大する数のクライアントＰＣを
ブートするために必要なリソースが少ないので、非常にスケーラブル（または、拡張及び
縮小が容易）である。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明の特定の好まれる実施例を図面とともに説明する。
本願において用語「ハイバネーション」はＰＣが「ポーズ（または、休止）」した状態
でＰＣの電力がオフにされることを意味する。ＰＣがオフにされている間、電力はそれの
全てまたはほとんどの構成要素から除去される。そして、ＰＣがオンに戻されると、また
は「再開（または、回復）」されると、ＰＣはそれがオフされたときと同じ状態の通常の
動作に戻る。Microsoft Corpの米国特許No.6,209,088等に記載されている「ハイバネーシ
ョン機能」はＰＣがオフされる直前に呼び出され、全てのプログラム実行を中断し、ＰＣ
の全ての状態情報を非揮発性の格納装置に「ハイバネーションイメージ」としてセーブす
る。「再開機能」は揮発性メモリーから実行され、通常、Ｏ／Ｓ及び（または）Ｏ／Ｓに
よって始動されるアプリケーションプログラムによって使用されるのと同じ実行可能アド
レス空間から実行されるコードによって実施される。以下に説明する本発明の特定の環境
において、「ハイバネーションファイル」はＯ／Ｓドライバー等のＯ／Ｓファイル及び、
ハイバネーション機能の始動の前にＰＣの揮発性メモリーに読み込まれる初期化ファイル
を含む。
【００１５】
本願で使用される用語「ＭＢＲ（Master Boot Record）（または、マスターブートレコ
ード）」、「ストレージドライバー（または、格納装置ドライバー）」、及び「ネットワ
ークフィルタードライバー」は出願人によって開発されたブートストラッピングソフトウ
ェアモジュールを意味する。出願人以外の人によって開発されたソフトウェアモジュール
を差別化するために、「Ｏ／Ｓ」等の従来の慣例的なモジュール名を採用する。また、用
語「仮想ドライブ」、「ブートドライブ」及び「サーバードライブ」は以下の記述におい
て同義的に使用される。
【００１６】
図１に示されているネットワークコンピューター環境は企業のネットワークまたはクラ
イアント／サーバーコンフィグレーションであってもよく、そこにおいて、ＰＣ２のいず
れかがファイルサーバーまたはネットワークサーバー４として機能してもよい。ネットワ
ークサーバー４は比較的小さいＰＣから大きなメインフレームを含む、通常のタイプのシ
ステムであってもよい。以下に説明する特定の実施例において、サーバー４は１つまたは
複数のバス１６によって接続された１つまたは複数の中央処理ユニット（ＣＰＵ）６、ハ
ードディスク８、それ自体のＢＩＯＳ１８を備えたリードオンリーメモリー（ＲＯＭ）１
０、ランダムアクセスメモリー（ＲＡＭ）１２、及びネットワークアダプター１４を備え
る中間的なコンピューターである。当業者にとって明白であるだろうが、ＢＩＯＳ１８は
ネットワークサーバー内の構成要素間の情報の伝達を援助する基本的なルーチンの組であ
る。以下に説明する特定の実施例において、ネットワークサーバーのハードディスク８は
ハイバネーションイメージ及び特定のＯ／Ｓファイル等から成るハイバネーションファイ
ル２０、セクターシーケンスファイル２２、ＭＢＲ２４等の多様なマイクロインストラク
ションコード、ストリーミングモジュール２６、及び、少なくともネットワークフィルタ
ードライバー３０及びストレージドライバー（または、格納装置ドライバー）３２を含む
Ｏ／ＳＭＢＲ２８等のＯ／Ｓファイルを格納する。
【００１７】
選択的に、１つまたは複数の付加的なサーバー３４がネットワークに接続され、第１サ
ーバー４及びクライアントＰＣ２と通信してもよい。マルチサーバーネットワークの場合
、クライアントモジュール３６（例えば、ＨＰＰＣ）が第１サーバー４内に存在し、クラ
イアント装置からの要求への応答で、どの付加的なサーバー３４がクライアントアドレッ
シング情報及びダウンロード情報を含むかを指定してもよい。
【００１８】
１つまたは複数のクライアント装置２はネットワーク上のネットワークルーターまたは
ネットワークスイッチ３８を介してサーバー４に接続される。物理的な接続はケーブル、
スイッチ式電話線、無線及び赤外線スペクトルで動作するワイヤレス装置、及び他の手段
を含む多様な形式のいずれであってもよい。クライアント装置及びサーバーは標準的な通
信プロトコルを使用して互いにデータを伝送する。マイクロソフトウィンドウズ（登録商標）２０００及びウィンドウズ（登録商標）ＸＰ等のマイクロソフトハイバネーション機能をサポートするＯ／Ｓ４０は適当な数のＯ／Ｓモジュール及びＯ／Ｓドライバーが起動したとき、各クライアント装置の物理的な機能または設備を管理する。各クライアント装置はインテルコーポレイションによって製造されているｘ８６ファミリーマイクロプロセッサー等の、ＣＰＵ４２を備えている。各クライアントはまた、ＢＩＯＳ４８を格納しているＲＯＭ４６及びＲＡＭ５０を含むローカルメモリー４４、ローカル格納装置（または、ローカルストレージ）５２、及びシステムバス５６によってＣＰＵに接続しているネットワークアダプター５４を含む。
【００１９】
図１はまた、適当な数のセクターがダウンロードされ、それらが含むコードが実行され
た後の、クライアントのＲＡＭ５０の一部を図示している。示されているように、ＲＡＭ
５０はダウンロードされたＯ／Ｓ４０、Ｏ／Ｓドライバー７６、Ｏ／Ｓローダー７８、ネ
ットワークフィルタードライバー３０、ストレージドライバー（または、格納装置ドライ
バー）３２、及びＯ／Ｓネットワークスタック６８を含んでもよい。いくつかの実施例に
おいて、ＲＡＭ５０はまた、ハイバネーションファイル２０及びWIN32.SYS７２等の、シ
ステムユーティリティー機能を与えるカーネルバイナリー（kernel binary）のコピーを
含む。図２を参照すると、各クライアントのネットワークアダプター５４は好まれるもの
として、クライアントのハードウェアとネットワークとの間にデータリンクを与えるネッ
トワークインターフェースカード（ＮＩＣ）である。各ＮＩＣ５４はクライアントシステ
ムバス５６に接続するためのバスインターフェース５８、ネットワークに接続するための
１つまたは複数のネットワークコネクター６０を含む。ネットワークコネクター６０はＬ
ＡＮまたはＷＡＮに対応するものであってもよい。ＮＩＣ５４にはまた、ＮＩＣの固有デ
スティネーションアドレスを格納するためのランダムアクセスメモリー（ＲＡＭ）６２及
び、ＰＸＥエミュレーションコード６６を格納するための選択的ＲＯＭ（ＯＰＲＯＭ）６
４が備えられている。デスティネーションアドレスは各クライアント２がネットワーク上
の他のコンピューターによって個々にアドレッシングされることを可能にする。
【００２０】
ブートＮＩＣ（BootNIC）基本アーキテクチャ
本発明は１つの側面において、ウィンドウズ（登録商標）２０００及び（登録商標）ＸＰ等のハイバネーション機能をサポートするＯ／Ｓがネットワーク上でブート（または、起動）されることを可能にし、もう１つの側面において、ハイバネーションをサポートする、または、サポートしないＯ／Ｓのデータの同期的なストリーミング（または、データ伝送）を可能にする、ここで出願人によってブートＮＩＣ技術と呼ばれるシステム及び方法を提供する。ブートする各クライアントは初めに、ＰＸＥサービスを使用してサーバー４と通信する。ＰＸＥコード６６は各クライアントとサーバーとの間に最初にエミュレートされる「仮想ドライブ」を確立する。ＰＸＥ（実行時前ブート環境）サービスはＭＢＲ（マスターブートレコード）コード３３がリード要求をサーバーに送ることを可能にし、それによって、サーバーに存在するハイバネーションファイル２０が、各クライアントのＣＰＵ４２によって、ローカルクライアントのハードディスク５２に格納することができる複数のデータセクターとして認識されることを可能にする。ブートストラッピングの初期の段階中、ＢＩＯＳ割り込みハンドラーサービスはリアルモードでのみ動作するので、エミュレーションはＭＢＲコード３３のリアルモードの実行によって与えられる。処理の後半は、Ｏ／Ｓのカーネルコード及び（ガタピシモード（thunking）が発生しない）保護モードでのみ実行されるストレージドライバー３２及びネットワークフィルタードライバー３０によってエミュレーションが与えられる。
【００２１】
図３はネットワークフィルタードライバー３０及びストレージドライバー（または、格
納装置ドライバー）３２がネットワークサーバーからダウンロードされ、実行された後の
、クライアントのローカルメモリー４４の一部をブロック図で図示している。ネットワー
クフィルタードライバーの唯一の役割はブートＮＩＣに特有（BootNIC specific）である
データパケットを特定するために、クライアントのＮＩＣ５４を介してネットワークから
Ｏ／Ｓネットワークスタック６８に送られる全てのデータパケットを監視し、前記特有の
データパケットがネットワークスタック６８に送られないように遮断し、代わりにそれら
のパケットをストレージドライバー３２に送ることである。ストレージドライバー３２は
次に、マウントマネジャー（Mount manager）、ボリュームマネジャー（Volume manager
）、及びパーティションマネジャー（Partition manager）等の、格納のための役割を持
つウィンドウズ（登録商標）の多様なマネジャー７０と通信する。ネットワークデータパケットがブートＮＩＣ特有（BootNIC specific）でない場合、データパケットは影響を受けずにＯ／Ｓネットワークスタック（Network stack）６８に送られる。当業者にとって明白であるだろうが、データパケットには以下の３つの異なった種類がある。（１）ブロードキャストパケット、ネットワーク上の全てのコンピューターにアドレッシングされるパケット。（２）マルチキャストパケット、２つ以上であるが、必ずしもネットワーク上の全てのコンピューターではない、コンピューターにアドレッシングされるパケット。（３）直接アドレス指定パケット、特定のクライアント装置だけにアドレッシングされるパケット。本発明に従うシステムはこれらのいずれのデータパケット伝達手段を利用してもよい。
【００２２】
本発明は、クライアントが（オペレーティングシステムの有無にかかわらず）事前ブー
ト環境（ＰＸＥ）でネットワークと相互作用するための、予想可能で相互運用可能な方法
を作成するための努力の結果である、事前ブート実行環境（ＰＸＥ（pre-boot execution
environment））として知られている、広く利用されているスペックの長所を利用する。
ＰＸＥの現在のバージョンはWired for Management（WfM）のインテル主導産業イニシア
チブとして確立されたものである。ＰＸＥはインテルアーキテクチャーベースのシステム
のブートファームウェアとともに事前ブート（pre-boot）サービスの共通及び首尾一貫的
な組を確立する、以下の３つの技術を包含する。（ｉ）クライアント２がネットワークの
ＩＰアドレスのアロケートを要求し、結果的に、ネットワークブートサーバー４からブー
トストラッププログラム（ＭＢＲ２４及びＯ／ＳＭＢＲ２８）のダウンロードを要求する
ための一律的なプロトコル。（ｉｉ）ＢＩＯＳ４８またはブートストラッププログラムに
よって利用可能なサービスの首尾一貫的な組を構成するクライアント２のファームウェア
環境の事前ブートで利用可能なＡＰＩの組。（ｉｉｉ）クライアントＰＣでＰＸＥプロト
コルを実行するための事前ブートファームウェアを始動する標準的な方法。
【００２３】
ＰＸＥスペックの使用はクライアントのＮＩＣ５４がブート装置として働くことを可能
にする。それはまた、ＢＩＯＳ４８がＰＯＳＴ処理前または処理中にＯＰＲＯＭ６４上に
格納されたＮＩＣコードを直接的に使用することを可能にする。本発明は、特定の実施例
において、選択的にブートサーバーディスカバリー（boot server discovery）のＰＸＥ
特徴の長所を利用する。この特徴を使用することにより、ブートクライアント２はリモー
トブートの初期段階中にクライアント２に与えられる利用可能なブートサーバーのリスト
から適当なブートサーバー４または３４を発見（または、ディスカバリー）することがで
きる。ブートサーバーの種類、または特定のダウンロードされるハイバネーションイメー
ジはクライアントのシステムアーキテクチャーの種類または各クライアントの固有のＩＤ
に基づいてインフォメーションテクノロジーアドミニスター（information technology a
dministrator）によって割り当て及び維持されることができる。ＰＸＥはサーバー４と通
信するために動的ホスト構成プロトコル（ＤＨＣＰ）及びトリビアルファイル転送プロト
コル（ＴＦＴＰ）を使用する。ＰＸＥがクライアントのブートを可能にしたとき、それは
ＤＨＣＰサーバー４からＩＰアドレスを取得する。そして、クライアント２はクライアン
トにブートサーバーのリストを与えるＤＨＣＰサーバー４を発見してもよい。図１には、
ブートサーバーとして動作してもよい、付加的なサーバー３４が示されている。しかしな
がら、本発明の説明を容易にするために、結果としてハイバネーションファイルからのブ
ーティング及びブロードキャストまたはマルチキャスティングとなる本発明の処理は単一
のサーバー４から成るネットワークコンフィグレーションとの関連で説明される。
【００２４】
ハイバネーションイメージからのリモートブーティング
上述したように、本発明はクライアントＰＣのためのＯ／Ｓファイルを有するハイバネ
ーションイメージ２０を格納しているサーバー４から１つまたは複数のクライアント２に
Ｏ／Ｓをブートするための改善されたシステム及び方法を与える。各クライアントのＣＰ
Ｕ４２はＤＲＡＭまたは他の種類の揮発性電子メモリー等の、アドレス可能なメモリーか
らのインストラクション（または、命令）のみを実行する。このアドレス可能なメモリー
を初期化するため、少量のＰＸＥコード６６がＮＩＣ５４上のＯＰＲＯＭ６４に与えられ
る。ＰＸＥコード６６はＭＢＲコード２４をリードするために、クライアントのローカル
ディスクをエミュレートするネットワークサーバー４に要求が発行されることを可能にす
る。ダウンロードされたＭＢＲコード３３はさらなるディスクのエミュレーションを可能
にし、Ｏ／ＳＭＢＲ２８の最初の部分がサーバーからクライアントに送信され、そこで、
ＤＲＡＭにロードされるように要求する。次に、Ｏ／ＳＭＢＲ２８はＯ／Ｓの残りの部分
のダウンロード及び初期化を行い、そして、それらの残りの部分はハイバネーションファ
イル２０をダウンロードする。ここで、以下の説明は複数のクライアントにダウンロード
される単一のハイバネーションファイル２０のみを含むが、当業者にとって明白であるよ
うに、本発明の方法を使用して異なったクライアントの組に多数のハイバネーションファ
イルをストリームすることもできる。出願人は、本発明の方法はストリーミングがネット
ワーク上のＯ／Ｓ４０のブートに必要な時間を従来の標準的なＯ／Ｓのローカルブートに
対して５０％以上減少させることができることを観測した。
【００２５】
ハイバネーショントランザクションプロトコルは２つの部分から成る。最初の半分はブ
ートドライブ８にハイバネーションイメージを生成することであり、第２の半分はハイバ
ネーションファイルからの実際の再開（または、回復）である。
【００２６】
本発明のブートアップ（boot up）の開始の前に、サーバー４に存在するハイバネーシ
ョンファイル２０は直接的な様式で生成される。クライアントＰＣが所望の状態に設定さ
れた後、ハイバネーションファイル２０にハイバネーションイメージを生成するためにハ
イバネーション機能が利用される。ハイバネーションファイル２０は次に、サーバーのブ
ートドライブ８に送信される。あるいは、ハイバネーション処理はハイバネーションファ
イルがサーバーのブートドライブに直接セーブされるように実行されてもよい。ハイバネ
ーション機能は全てのドライバーに対してパワーダウンするように命令するが、ストレー
ジドライバー３２だけはWIN32.SYS７２をローカルメモリー５０にキャッシュし、メモリ
ーのコンテントをファイルHIBERFIL.SYS（Ｏ／Ｓローダーが再開時に正当性をチェックす
るファイル）にライトした後に、Ｏ／Ｓの要求によってパワーダウンする。ブート処理を
始動する前に実施されることが好まれるもう１つのステップはブートドライブ８にＭＢＲ
２４エミュレーションコードを格納することである。
【００２７】
ウィンドウズ（登録商標）のアーキテクチャにおいて、ドライバーは「タイプ」を呈することが要求され、１つのドライバーが同時にストレージドライバーとネットワークドライバーとなることができないので、ウィンドウズ（登録商標）のアーキテクチャはサーバーと通信するために１つのドライバーではなく、２つのドライバー、ストレージドライバー３２とネットワークフィルタードライバー３０とを必要とする。ウィンドウズ（登録商標）２０００及びＸＰのハイバネーションの実行は１つのＯ／Ｓドライバーだけがストレージドライバーと通信することが要求されると仮定しており、したがって、ハイバネーション処理が２つ以上のＯ／Ｓドライバーをサポートすることを可能にするためのメカニズムを与えていない。現在利用可能な標準的なＯ／Ｓドライバーはネットワーク上のファイルから再開するように記述されていないので、それらは上手く動作しないだろう。ローカルドライブからの標準的な再開において、Ｏ／Ｓストレージドライバーはローカルハードディスクとの通信方法だけを知ることが要求される（そして、実際にそうなっている）。
【００２８】
ストレージドライバー３２はＮＩＣドライバー７４の電力ハンドラー（power handler
）に対するディスパッチアドレス（dispatch address）をストレージドライバー自体のハ
ンドラーで置き換えることによってＮＩＣドライバー７４の（ディスパッチルーチンdisp
atch routine）に「フック（hook）」する。ストレージドライバー３２は次に、オリジナ
ルのＮＩＣドライバー電力ハンドラールーチンを呼び出してもよい。
【００２９】
ブート処理は多くの処理から成るが、一般的に、１つのプログラムが事前のプログラム
に対してより高度なプログラムを開始させることを含む。本発明の独創的な方法の主要な
ステップはＢＩＯＳ初期化、ＰＸＥ初期化、ＭＢＲロード及びInt 13hリダイレクション
、ハイバネーションイメージのロード、及びＯ／Ｓの再開（または、回復）である。ここ
で、これらの解決法はウィンドウズ（登録商標）２０００に特化したものであるが、以下に記載されるステップはこれらの解決法を他のオペレーティングシステムに拡張するための一般的な枠組を要約したものである。
【００３０】
図５を参照すると、パワーアップ直後、クライアント２のＢＩＯＳ４８の初期化はパワ
ーオン／セルフテスト（ＰＯＳＴ（power-on/self-test））シーケンスの実行（ステップ
５０２）とともに開始される。各クライアントはそれ自体のＩＰアドレスを確認するため
にＤＨＣＰディスカバリー要求をブロードキャストする。このプロトコル（及び他のプロ
トコル）をサポートするサーバーのＯ／Ｓは、ネットワークサーバー４であっても、そう
でなくてもよい、（クライアントがそこから）ブートされるサーバーのアドレスとともに
これらのパラメーターを戻す。仮想ブートドライブ８はネットワークサーバー４（または
、代替的なブートサーバー３４）に関連した（または、サーバーに直接接続した）非揮発
性の格納装置を備えてもよい。ドライバーの種類はフロッピー（登録商標）ディスク、ハードディスク、磁気テープ、ＤＶＤ、ＣＤ−ＲＯＭ、及びフラッシュＲＯＭを含む。仮想ブートドライブ８となるために、装置はＯ／Ｓファイルまたは、ダウンロードされることが意図されるマイクロインストラクションコードを含むハイバネーションファイルのコピーを保持しなければならない。
【００３１】
ＰＯＳＴ中、ＣＰＵ４２はＯＰＲＯＭ６４がクライアント２に存在するかを決定するた
めにバス５６上でアドレスをチェックする。ＯＰＲＯＭが見つかった場合、ＣＰＵはＯＰ
ＲＯＭ上の全てのハードウェア初期化ルーチンを処理し、ＮＩＣ５４を使用可能な状態に
初期化する（ステップ５０４）。ＯＰＲＯＭコードは次に、ＰＸＥコードを初期化する（
ステップ５０６）。ＯＰＲＯＭコードはまた、ハードディスク５２のリード及びライトを
制御する割り込み13hハンドラーサービスを介して、ＢＩＯＳブート処理に「フック（hoo
k）」する。ＰＸＥコードを使用して、ＮＩＣ５４の制御を引き受けることにより、ＯＰ
ＲＯＭ６４のコードはサーバー４と通信し、サーバーのハードディスク８がサーバーに対
するディスクのリード及びライトのリダイレクションを介して、クライアント２のローカ
ルハードディスク５２を透明にエミュレートすることを可能にする。
【００３２】
ＰＯＳＴシーケンスの終了時に、ＢＩＯＳ４８はＯ／Ｓのブートを開始するだろう。Ｂ
ＩＯＳはサーバーの仮想ドライブ８の最初のセクター（シリンダー０、ヘッド０、セクタ
ー１）をリードする（ステップ５１０）。最初のセクターはＯ／Ｓ４０をブートするため
の付加的なエミュレーションコードを含むＭＢＲ（マスターブートレコード）２４を格納
する。ＭＢＲ２４のコードは慣例的にＯ／Ｓの製造者によって供給されるが、以下に説明
するハイバネーション再開処理を容易にするために、付加的なエミュレーションコードを
開発する必要がある。ＭＢＲコードはクライアントのメモリーにロードされた後に実行さ
れる（ステップ５１２）。ＭＢＲのコードはネットワークサーバーと通信するためにＰＸ
Ｅ６６を使用し続け、全ての格納装置アクセス要求を取得するために割り込み13hをフッ
クし、ブート処理の初期の段階中にサーバーの仮想ハードディスク８へのライトを防止す
る（ステップ５１４）。
【００３３】
リード要求は仮想ドライブから所望のデータをブロードキャスティングすることによっ
て履行されてもよい。しかしながら、特定の好まれる実施例において、リード要求は後で
説明される同期的（または、同時的）ストリーミング法を使用することによって履行され
る。あるいは、リード要求はネットワークサーバーによって個々に処理されてもよい。リ
ード要求はオリジナルのInt 13hＢＩＯＳルーチンには送られず、代わりにＰＸＥがネッ
トワークサーバー４からデータを受信するためにＭＢＲによって使用される。リード要求
はＭＢＲコードによって履行され、要求はネットワークサーバーからダウンロードされた
データとともに要求の発行元に戻される。ディスクライトは異なった様式で操作される。
ＭＢＲコードはライトを実施しないが、正常なライトを示す信号をディスクライトの要求
の発行元に戻す。ライトはオリジナルのInt 13hＢＩＯＳルーチンにも送られない。
【００３４】
ＭＢＲコードは次に、図１において「ウィンドウズ（登録商標）２０００ＭＢＲ」として示されているような、Ｏ／Ｓ製造者によって開発されたＯ／ＳＭＢＲ２８をダウンロードする。各クライアント２のＭＢＲコード３３は、ＯＰＲＯＭ６４が要求を調べるための機会を持つ前に、それのInt 13hベクトルのフッキング（hooking）を介してローカルディスクのリードに対する全ての要求を取得する。ダウンロードされたＭＢＲ８８は次に、Ｏ／ＳＭＢＲ２８をダウンロードするために、ＰＸＥ６６を使用して要求をネットワークサーバーに転送する（ステップ５１６）。
【００３５】
ステップ５１８において、ネットワークサーバー４はサーバーの仮想ドライブ８から、
Ｏ／ＳＭＢＲ２８を集合的に（または、共同的に）構成するデータパケットをＯ／ＳＭＢ
Ｒのダウンロードを要求している各クライアント２にマルチキャストされるかまたは同期
的にストリーム（または、データ転送）する。同期化は後で説明される同期されたストリ
ーミング処理４００を使用することによって達成されてもよい。この実施例において、ス
トリーミングモジュール２６は勧誘期間中にＯ／ＳＭＢＲのダウンロードの要求を出した
、全てのクライアント２へのダウンロードに対する登録を行う。勧誘期間は全てのクライ
アントに登録の機会を与える、予め決められた時間間隔を持つ。ストリーミングモジュー
ル２６は次に、リード要求元として最初のクライアントを指定する。すなわち、そのクラ
イアントだけが、全ての登録されたクライアントに次のデータセクターのコンテントがマ
ルチキャストされるための、ストリーミングモジュール２６のリード要求を生成すること
を許可される。
【００３６】
ストリーミングモジュール２６は次に、登録されたクライアント２の全てにアクセスし
、リード要求元の識別及びＯ／ＳＭＢＲ２８を集合的に格納する仮想ドライブ８のセクタ
ーのグループの第１のセクターのコンテントをマルチキャストする。ストリーミングモジ
ュールは次に、Ｏ／ＳＭＢＲのセクターのグループの全てのセクターがマルチキャストさ
れたかを決定する。さらなるセクターがマルチキャストされることが必要な場合、かつ、
２つ以上の登録されたクライアントが存在する場合、ストリーミングモジュールは新規の
リード要求元を指定する。次に、ストリーミングモジュールは次のセクターにアクセスし
、新規のリード要求元の識別とともに、それのコンテントを登録されたクライアントの全
てにマルチキャストする。新規のリード要求元を指定するステップは好まれるものとして
、順繰りに実施される。すなわち、各マルチキャストのラウンド後に、登録された１つの
クライアントが順番に仮想ドライブのリード要求を生成する役割を引き受け、他の指定さ
れていないクライアントはデータのマルチキャストを単に待つ。ストリーミング処理４０
０はＯ／ＳＭＢＲ２８全体がマルチキャストされ各クライアントにロードされるまで繰り
返され、その時点で、ダウンロードされたＯ／ＳＭＢＲはネットワークインターフェース
５４の制御及び要求生成処理を引き受ける。
【００３７】
ここで、各リード要求はどの登録されたクライアントが発行したかにかかわらず、同一
であることに注意しなければならない。それゆえ、ＭＢＲコードによって実施されるリー
ド要求は密集行進法（lock-step）の様式で進行する。各クライアントは同一の仮想ドラ
イブからリードを要求し、既に仮想ドライブからダウンロードされた同一のＭＢＲ２８を
実行しているので、各リード要求は同一となるだろう。
【００３８】
図５を参照すると、ステップ５２０において、各登録されたクライアントはブロードキ
ャストまたはマルチキャストされたＯ／ＳＭＢＲのセクターを受信及び格納する。受信し
たデータセクターはＲＡＭ５０の、拡張されたＢＩＯＳデータ領域のあめに確保されたメ
モリーの一部に格納される。各ブロードキャストセクターまたはマルチキャストセクター
は連番とともに送信されてもよい。各クライアントは次に、クライアントが送信されたセ
クターの全てを正常に受信したかを決定してもよい（ステップ５２２）。クライアントが
データパケットを見逃している場合、クライアントはネットワークサーバーから見逃した
データセクターを非同期的に要求してもよい。しかしながら、データはそのクライアント
単体だけに戻され、全ての登録されたクライアントにはブロードキャストまたはマルチキ
ャストされない。
【００３９】
ステップ５２４において、Ｏ／ＳＭＢＲ２８（例えば、ウィンドウズ（登録商標）２０００ＭＢＲ）が各クライアントのメモリー５０にロードされ、実行される。次に、Ｏ／ＳＭＢＲは仮想ドライブからＯ／Ｓの製造者によって記述されたＯ／Ｓローダー７４（例えば、ＮＴＬＤＲ）をダウンロードする（ステップ５２６）。ダウンロードされたＯ／Ｓローダー７８は仮想ドライブ８に有効なハイバネーションイメージが存在するかをチェックしてもよい（ステップ５２８）。仮想ドライブは事前に有効なハイバネーションイメージ２０を含むように設定されている。Ｏ／Ｓローダー７８は次に、ＭＢＲ３３が取得かつネットワークサーバー４にリダイレクトする一連のInt 13hリード要求を介して、ハイバネーションイメージのロードを開始する（ステップ５３０）。ここで、ハイバネーションファイル２０を集合的に格納する仮想ドライブ８上の複数のセクターのコンテントにアクセスし、それをブロードキャストまたはマルチキャストするために、ストリーミング処理４００が再び利用されてもよい（ステップ５３２）。
【００４０】
ハイバネーションイメージが各クライアントのローカルメモリー４４にコピーされた後
、Ｏ／Ｓローダー７８はハイバネーションイメージから回復（または、再生）されたＯ／
Ｓ４０、すなわち、ウィンドウズ（登録商標）ＸＰまたは２０００に実行を渡す（ステップ５３４）。ここで、この時点以降、リード要求は同期的な様式で実施されないことに注意しなければならない。すなわち、それらは単体ベースでネットワークサーバーに送信され、ネットワークサーバーによって回答される。
【００４１】
Ｏ／Ｓ４０はこの時点で、ストレージドライバー３２等のドライバー７６を起こし、シ
ステムを使用可能な状態に戻すためにいくつかの初期化を実施する必要がある。各クライ
アント２が適切な順序でストレージ（または、格納装置）及びネットワークフィルタード
ライバーをロードするたように構成するために、既存のドライバーに対するいくつかの標
準的なドライバーのレジストリは、以下の表に記載されているように、（regedit32レジ
ストリエディターを使用する等により）予め変更しておく必要がある。
【００４２】
【表１】
2008198210.tif 000003
【００４３】
ここで発生する１つの難しい問題は、ＮＩＣドライバー７４及びネットワークフィルタ
ードライバー３０が初期化されるまで、ストレージドライバー３２が全てのリード及びラ
イトを防止しなければならないことである。しかしながら、ネットワークフィルタードラ
イバーは、Ｏ／Ｓ４０が表示及び印刷のための低レベルのルーチン等の、システムユーテ
ィリティー機能を与えるファイルWIN32.SYS７２及びカーネルバイナリー（kernel binary
）をリードするまで初期化されないだろう。この問題はハイバネーションイメージを生成
する前にWIN32.SYSの、クライアントのメモリー５０への早めのキャッシュを行い、それ
によって、ファイルをこの時点でローカルメモリー５０内にリードされるハイバネーショ
ンイメージ自体の一部にすることによって解決される。これにより、ファイルWIN32K.SYS
は仮想ドライブ８をアクセスする必要なく、ローカルメモリーからリードすることができ
る。１つの例外として、ストレージドライバー３２は全てのＯ／Ｓディスクのライト及び
リード要求をハイバネーションイメージの生成中に、事前にアロケートされたキャッシュ
に、すなわち、この時点でクライアントシステムのメモリー５０にキュー登録する。スト
レージドライバー３２は、要求の処理の許可が安全になるまで、すなわち、ＮＩＣドライ
バー７４及びネットワークフィルタードライバー３０が初期化されるまで、単に要求を格
納する（ステップ５３６）。ファイルWIN32K.SYSはローカルクライアントメモリーからリ
ードされ、データがＯ／Ｓに戻される（ステップ５３８）。
【００４４】
Ｏ／Ｓ４０は次に、ＮＩＣドライバー及びネットワークフィルタードライバー３０を起
こす。ステップ５４２において、ネットワークフィルタードライバー３０はストレージド
ライバー３２に、ＮＩＣ５４が初期化され、ネットワークフィルタードライバー３０がペ
ンディング中のリード及びライト要求を受諾する準備ができていることを知らせる。ある
いは、ストレージドライバー３２は（ハイバネーションイメージの生成中に）事前に、Ｎ
ＩＣドライバー７４のディスパッチ機能に「フック」し、それの「IRP_MJ_POWER」のため
のデータを監視する。これはネットワークドライバーが起きたときにストレージドライバ
ー３２に警告を出す。Ｏ／Ｓ４０がIRP_MJ_POWERをＮＩＣドライバー７４に送信した後、
要求は常にフルパワーオン状態（すなわち、ＮＩＣが完全に使用可能な状態）となる。ス
トレージドライバー３２はＮＩＣドライバーがIRP_MJ_POWERの処理を終了するまで、すな
わち、ネットワークドライバーが完全に起きるまで待つ。
【００４５】
ステップ５４４において、ストレージドライバーはＯ／Ｓ４０が使用可能な状態に回復
し、その後にユーザーが通常の様式でクライアントＰＣを使用することができるように、
全てのキャッシュされたリード及びライト要求のキュー登録を解除する。ここで、この実
施例において、ストレージドライバーがリードとライトを僅かに異なった様式で操作する
ことに注意しなければならない。すなわち、ストレージドライバーはライトが仮想ドライ
ブに対して実行されることによって、異なったクライアントが同一の仮想イメージに同時
にライトしたときに、それのデータを破壊することを防止するために、全てのライトをロ
ーカル的にキャッシュする。逆に、リードは必要なセクターのコピーがクライアント上に
キャッシュされないかぎり、仮想ドライブから実際のリードによって行われる。後者の場
合、セクターはクライアントのメモリーからキャッシュされ、ネットワークトランザクシ
ョンは一切行われない。
【００４６】
複数のクライアントへの所望のデータの同期的ストリーミング
特定の好まれる実施例においてブート処理を進めるために必要なデータは、本出願人の
もう１つの特許出願である国際公開第０３／０９００７３号に説明されているように、サ
ーバー４から１つまたは複数のクライアント２に同期的にストリームされる。この実施例
に従った本発明の独創的システムは１つまたは複数のクライアント２によって発行された
リード要求への応答で、透明な（transparent）ローカルディスクエミュレーション及び
、サーバーの「仮想」ドライブ８に存在するデータセクターの組のコンテント（または、
内容）のブロードキャスティングまたはバーストモードのマルチキャスティングを利用す
る。
【００４７】
図４のフローチャートは同期的（または、同時的）データストリーミングのための処理
４００を図示している。ここで、ハイバネーションファイルを使用したクライアント上の
Ｏ／Ｓのネットワークブートを完了するために、同期的ストリーミング処理４００は（い
くつかの意味のある差異とともに）基本的に２回、すなわち、Ｏ／Ｓドライバーが初期化
される前と後とに１回ずつ利用される。これは、Ｏ／Ｓブート処理が仮想ドライブ８から
ファイルをダウンロードするために、ブート処理の初期の段階中に割り込みハンドラープ
ロシジャー（または、割り込みハンドラー処理）を使用するのに対し、その後、それらが
初期化された後にストレージドライバー３２及びネットワークフィルタードライバー３０
を使用するためである。これは実質的に同等なタスクを実行するために２つの解決法を必
要とすることを意味する。
【００４８】
特定のデータのダウンロードを所望する各クライアントは最初の要求を発行する。所望
されるデータはブートプログラム、ハイバネーションファイル、Ｏ／Ｓファイル、または
、サーバーの仮想ドライブ８上に存在するアプリケーションファイルを含んでもよい。こ
れらの要求がサーバー４に発行されるとともに、サーバーはＰＸＥコード６６及びダウン
ロードされたＭＢＲ３３のコードの実行を介して、または、ネットワークフィルター及び
ストレージドライバーと共にＯ／ＳＭＢＲ２８のコードの実行を介して、ブートアップ（
boot up）の多様な段階中に、クライアントのローカルディスク５２をエミュレートする
。（ステップ４０２）
【００４９】
ステップ４０４において、サーバーのストリーミングモジュール２６は予め決められた
勧誘期間中に初期要求を発行している各クライアントを登録する。登録された各クライア
ントはストリーミングモジュール２６からのデータパケットを待つ。
【００５０】
ステップ４０６において、ストリーミングモジュールはサーバー４上でセクターシーケ
ンスファイル２２を探す。セクターシーケンスファイル２２は所望のデータを含んでいる
データセクターへのアクセス及びデータセクターのブロードキャストまたはマルチキャス
トの順序（オーダー）を決定する。セクターシーケンスファイル２２が見つからない場合
、プログラムフローは後で説明されるセクターシーケンスファイルを記録するためのラー
ニング処理（または、学習処理）４５０に進む。
【００５１】
ステップ４０８において、セクターシーケンスファイル２２が見つかった場合、ストリ
ーミングモジュール２６は所望のデータを登録されたクライアントにブロードキャストま
たはマルチキャストする。データパケットは好まれるものとして固定速度でブロードキャ
ストまたはマルチキャストされる。
【００５２】
登録された各クライアント２において、受信されたデータパケットはブロードキャスト
またはマルチキャストのレート及びクライアントのブート処理速度の差を補正するために
固定長のキューに格納される（ステップ４１０）。ネットワーク及びストレージドライバ
ーは初期のＭＢＲ／Int 13hフッキング処理（MBR/Int 13h hooking process）とは異なっ
た様式でストリーミングを操作する。ドライバーはデータを各クライアント内に予めアロ
ケートされた、メモリー上の大型の一時的区分（「データキャッシュ」）にロードする。
登録された各クライアントは、それが正常に受信したデータパケットを追跡する（または
、場所を記録する）。選択的に、登録された各クライアントはサーバーに、最も最近のＮ
個のパケットが正常に受信されるように試みられたことを示す、アクノリッジメント（ま
たは、受け取り信号）を送信する（ステップ４１２）。クライアントのアクノリッジメン
トの目的はローカルクライアントのバッファーがオバーランされていないことを確実にす
ることである。
【００５３】
ステップ４１４において、ストリーミングモジュール２６は所望のデータが全てアクセ
スされ、それらのコンテント（または、内容）が送信されたことを確認する。これらの処
理が完了していない場合、ステップ４０８及びステップ４１０は完了するまで繰り返され
る。所望のデータが全てブロードキャストまたはマルチキャストされている場合、ストリ
ーミングモジュールは送信が完了したことを示すメッセージを送信する（ステップ４１６
）。しかしながら、この時点において、全てのクライアントが情報の全てのブロックを問
題なく受信していなくてもよい。すなわち、いくつかのパケットがなんらかの理由によっ
て欠落していてもよい。また、いくつかのクライアントが送信の開始を見逃してもよい。
ステップ４１８において、クライアント２の各々は送信が成功したことを示すメッセージ
、または、見逃されたパケットの再送信に対する必要性を示すメッセージによって、スト
リーミングモジュール２６に応答してもよい。ストリーミングモジュール２６はパケット
の再送信のリストを編集し、効果的に順序付ける（ステップ４２０）。あるいは、パケッ
トの再送信のリストは（ステップ４１４の前に）データパケットの送信中に、決められた
数のバイト数ごとに繰り返し編集されてもよい。再送信はストリーミングを行っているモ
ジュールとクライアントとの間で個々に行われてもよい（ステップ４２２）。この時点で
、ほとんどのクライアントは受信したデータパケットの処理をしているので、ネットワー
クの帯域幅は大きく、それゆえ、個々の再送信はブート時間またはネットワークのトラフ
ィックに対して認識可能な程度の影響を与えないだろう。
【００５４】
ステップ４２４において、ダウンロードされたデータが正常に処理された後、キャッシ
ュのために事前に確保されたメモリーのアロケートが解除される。
【００５５】
上述したように、ストリーミング処理４００の長所は、各クライアントにおいて、クラ
イアントのＯ／ＳがＯ／Ｓのデータストラクチャー、ドライバー、またはアプリケーショ
ンの初期化に専念している間、Ｏ／Ｓがデータを必要とする前にデータパケットをメモリ
ーに予めロードすることによって将来必要となるＯ／Ｓのデータが既に準備されているだ
ろうということである。ストリーミングモジュール２６はクライアントがパケットを利用
できる状態になる前に、クライアントにパケットをブロードキャスト及び（または）マル
チキャストし、ブートアップ時間の依存性をパケットの送信時間からクライアントのブー
ト処理時間に移す。特定の実施例において、ストリーミングモジュール２６は送信される
べき仮想ドライブセクターのコンテントの順序を決定するためにセクターシーケンスファ
イル２２を利用する。セクターシーケンスファイル２２は同期性のストリーミング処理を
着手する前に、サーバー４上に格納されることが予期されるが、これが行われない場合、
セクターシーケンスファイル２２は以下に説明されるラーニング処理（または、学習処理
）中に生成されてもよい。
【００５６】
ストリーミングモジュール２６がセクターシーケンスファイル２２を見つけられない場
合、ラーニング処理４５０が実行される。セクターシーケンスファイルはＯ／Ｓがブート
処理を完了するためにリードしなければならない、セクターのリストから成る。ステップ
４２６において、ストリーミングモジュール２６は１つの登録されたクライアントを選択
する。選択されたクライアントが独創的なＭＢＲ２４及びドライバー（３０及び３２）を
使用して、慣例的にブートすることが許可されるとともに、ストリーミングモジュールは
新規のセクターシーケンスファイルに、選択されたクライアントがブート中に生成した全
てのセクターアクセス要求を記録する（ステップ４２８）。ステップ４３０において、ブ
ートするクライアントは、それがブートを完了したことをストリーミングモジュールに知
らせる。この時点で、新規のセクターシーケンスファイルは仮想ドライブ８に格納され、
ステップ４０８でストリーミング処理が再開される。上述の本発明の特徴及び実施から当
業者にとっては本発明の他の実施例が明白であるだろう。例えば、いくつかの実施例にお
いて、同期的ストリーミング処理４００は割り込みハンドラープロシジャー（または、割
り込みハンドラー処理）によって要求されたデータのダウンロードのみに使用されたり、
サーバーの保護モードアクセスでのみ使用されたりしてもよい。または、同期的ストリー
ミング処理４００はクライアントへのアプリケーションの事前ロードに使用されてもよい
。同様に、他の実施例において、データパケットの要求及び受信を同期させるためのＭＢ
Ｒコードを使用しない、ハイバネーションイメージのネットワークコピーからのブートも
本発明の範囲に含まれる。それゆえ、上述の説明及び実施例は例としてだけのものであり
、本発明の本来の範囲及び意図は付随する請求の範囲によって規定される。
【図面の簡単な説明】
【００５７】
【図１】本発明が実施されるクライアント／サーバーネットワーク環境を図示しているブロック図である。
【図２】本発明の１つの実施例に従ったネットワークアダプターを図示しているブロック図である。
【図３】独創的なドライバーがネットワークサーバーからダウンロードされ実行された後の、クライアントのローカルメモリーの一部の実施例を図示しているブロック図である。
【図４】本発明によって与えられる同期性ストリーミング処理の１つの実施例を図示しているフローチャートである。
【図５】ハイバネーションイメージファイルを利用している遠隔ネットワークブート処理の１つの実施例を図示しているフローチャートである。
【符号の説明】
【００５８】
２      クライアント
４      第１サーバー
６      ＣＰＵ
８      ハードディスク（仮想ドライブ）
１０    ＲＯＭ
１２    ＲＡＭ
１４    通信インターフェース（ネットワークアダプター）
１６    バス
１８    ＢＩＯＳ
２０    ハイバネーションファイル
２２    セクターシーケンスファイル
２４    ＭＢＲ
２６    ストリーミングモジュール
２８    Ｏ／ＳＭＢＲ
３０    ネットワークフィルタードライバー
３２    ストレージドライバー
３３    ＭＢＲ
３４    第２サーバー
３６    クライアントモジュール
３８    ネットワークルーター／スイッチ
４０    Ｏ／Ｓ
４２    ＣＰＵ
４４    メモリー
４６    ＲＯＭ
４８    ＢＩＯＳ
５０    メモリー（ＲＡＭ）
５２    ハードディスク
５４    ネットワークアダプター（ＮＩＣ）
５６    システムバス
５８    バスインターフェース
６０    ネットワークコネクター
６２    ＲＡＭ
６４    ＯＰＲＯＭ
６６    ＰＸＥ
６８    ＯＳネットワークスタック
７０    ウィンドウズ（登録商標）の多様なマネジャー
７２    初期化ファイル
７４    ＮＩＣドライバー
７６    ＯＳドライバー
７８    ＯＳローダー
【図１】
2008198210.tif 000004
【図２】
2008198210.tif 000005
【図３】
2008198210.tif 000006
【図４】
2008198210.tif 000007
【図５】
2008198210.tif 000008