(57)【要約】  アプライアンスの仮想化のための方法と装置は、パーソナル・コンピュータのシステム・ブートROMに含まれる組み込みオペレーティング・システム（OS）を提供する。システムがブートすると、OSは、起動されて、全ての利用可能な仮想アプライアンスを、例えば、次の場所：ローカルUSB、フラッシュ・カード（例えば、SD、xD、CF、CDROM/DVD）、または、他のストレージ・メディア、ローカル・ハードディスク・ストレージ、そして、インターネット（例えば、アプライアンス・サーバ）、から探す。ユーザはOSから使用するアプライアンスを選択し、アプライアンスはロードされ、起動される。選択されたアプライアンスがローカル・ストレージにない場合、例えば、アプライアンス・サーバからインターネットが通じてダウンロードされる。次回の必要時のために、アプライアンス・サーバからダウンロードする必要がないように、ダウンロードされたアプライアンスはローカル・ストレージ・メディアにキャッシュさせてもよい。オペレーティング・システムおよびハードディスクがインストールされている場合、ユーザは、ハードディスクからオペレーティング・システムのブート、または、システムのパワーオフを選ぶことができる。【特許請求の範囲】
【請求項１】
アプライアンスの仮想化のためのコンピュータによる実装方法であって、
組み込みオペレーティング・システム（OS）をパーソナル・コンピュータのシステム・ブートROMに格納するステップと、
前記パーソナル・コンピュータのオペレーティング・システムを起動する前に、少なくとも一部の当該パーソナル・コンピュータのオペレーティング・システムの起動をサスペンドし、前記パーソナル・コンピュータがブートされるときに、即時に当該OSを起動するステップと、
最初のOSが、オンラインで、かつアプライアンス・サーバに到達すると、より完全なOSをダウンロードするステップであって、当該OSのルック＆フィールが、このプロセスの間に変化しないステップと、
アプライアンスが、特定のタスクを遂行するのに必要であるすべてを含む自己内蔵型のバイナリ・パッケージを備え、当該OSを起動すると、即座に、当該OSが、ローカル・ストレージ媒体およびネットワーク・ロケーションの何れでも利用可能な仮想アプライアンスを探すステップと、
当該OSが、当該パーソナル・コンピュータに選択のための少なくともいくつかの当該利用可能な仮想アプライアンスを表示するステップと、
当該OSからの選択は、当該パーソナル・コンピュータで使用する利用可能な仮想アプライアンスの少なくとも一つのアプライアンスを表示するステップと、
当該パーソナル・コンピュータで当該選択されたアプライアンスをダウンロードし、起動するステップと、
を備え、
当該アプリケーションが、それ自体の実行環境を含み、RAM内に存在しかつRAM内で完全に実行され、かつローカル永続ストレージを必要としない方法。
【請求項２】
ローカル・ストレージにない場合、アプライアンス・サーバから選択されたアプライアンスをダウンロードするステップを更に備える請求項1に記載の方法。
【請求項３】
ローカル・ストレージ媒体からパーソナルコンピュータオペレーティング・システムをブートすることを選定するステップと、かつ、
当該パーソナル・コンピュータが、当該オペレーティング・システムをブートするステップ、を更に備える請求項1に記載の方法。
【請求項４】
ローカル・ストレージ媒体に当該アプライアンス・サーバからダウンロードされるアプライアンスをキャッシュするステップと、
当該アプライアンスが次に必要なときのために、当該アプライアンス・サーバからダウンロードすることを必要としないステップ、を更に備える請求項2に記載の方法。
【請求項５】
アプライアンスをユーザに知的に示唆するために、好きなアプライアンスの選択および／または一般に使用されるアプライアンスにアクセスするために、パーソナライザーを提供するステップと、
最も一般に使用されるアプライアンスが、第1の画面上に、または、利用可能なアプライアンスのリストの最上位に現れるようにするステップ、を更に備える請求項1に記載の方法。
【請求項６】
アプライアンスのダウンロードのためにローカル、または、国内にあるサーバに当該OSをリダイレクトステップ、
一つ以上のサーバからアプライアンスをダウンロードするステップ、および
アプライアンスのダウンロードにピア・ツー・ピア（P2P）を使用するステップ、
の何れかを、更に備える請求項1に記載の方法。
【請求項７】
当該アプライアンスがダウンロードされると共にアプライアンスを解凍して、実行するステップ、を更に備える請求項1に記載の方法。
【請求項８】
複数の個々のモジュールを備えている当該アプライアンス、そこにおいて、当該アプライアンスの各モジュールが、前記他のモジュールの各々と独立して、ダウンロードされ、解凍され、実行され／初期化され、少なくとも一つのアプライアンスをモジュール化するステップ、を更に備える請求項1に記載の方法。
【請求項９】
より高い優先度を有しているモジュールが、第1にダウンロードされ、解凍され、実行されることを確保するために、インテリジェント・ダウンロード・メカニズムを提供するステップ、を更に備える請求項8に記載の方法。
【請求項１０】
前記同じモジュールを異なるアプライアンスに再生利用するステップ、を更に備える請求項8に記載の方法。
【請求項１１】
ファイル、モジュール、さらに、ユーザが使用することを望むものをキャッシュするステップと、
当該OSにおいて、ユーザ入力を待つと共に、ローカル・ストレージからRAMにアプライアンスをプリフェッチするステップと、
ユーザがネットワークからローカル・ストレージに使用することを望む可能性があるアプライアンスをプリキャッシュするステップの、
何れかを更に備える請求項1に記載の方法。
【請求項１２】
当該キャッシュが、ハードディスクの特殊なパーティション、ファイル・システムのファイル、USBフラッシュ・デバイス、パーソナル・コンピュータ・マザーボードの他のフラッシュ・ストレージ、または、ハードディスクMBRの何れかである、請求項11に記載の方法。
【請求項１３】
第1の当該OSがスタートアップし、検出するときに、全ての取り付けられたハード・ドライブは空であり、コンフィグレータ機能を提供する当該OSが、キャッシュ・パーティションを前記ハード・ドライブに作成するか否かをユーザに尋ね、ユーザが肯定の返事をする場合、前記OSは第1のハード・ドライブにパーティションを作成するステップ、を更に備える請求項12に記載の方法。
【請求項１４】
アプライアンスの仮想化のための装置であって、
ソフトウェア・スタックを格納するためのメモリを備え、当該ソフトウェア・スタックが、BIOSフラッシュ・メモリに保持される第1の部分と、当該メモリにダウンロードされる第2の部分とを備え、当該スタックが、非仮想アプリケーションおよび仮想アプリケーションを備える、コンピュータと、
組み込みオペレーティング・システム（OS）と、
仮想アプライアンス・ブートローダと、
BIOSブートローダと、
当該仮想アプライアンス・ブートローダを起動するために当該BIOSブートローダを使用するための手段と、
を備え、
当該アプライアンス・ブートローダが、当該メモリに当該OSをダウンロードするために、アプライアンス・サーバにネットワークを介して接続のための手段を備え、
当該OSが、利用可能であるアプリケーションのリストをエンド・ユーザに示すための手段を更に備え、
当該アプリケーションが、
当該アプライアンス・サーバからダウンロードすることができる非仮想マシン・アプリケーション、
当該アプライアンス・サーバからダウンロードすることができる仮想マシン・アプリケーション、および、
当該コンピュータと関連したUSBフラッシュ装置またはハード・ディスク・ドライブの何れかに存在するアプリケーション、
の何れかを備える装置。
【請求項１５】
当該仮想アプライアンス・ブートローダが、さらに、
利用可能な仮想マシン・アプリケーションを探すためのアプリケーション列挙子と、
当該メモリへ既にロードされたアプリケーションを実行するためのアプリケーション・ランチャと、
当該アプライアンス・サーバから当該メモリまでアプリケーションをダウンロードするためのダウンローダと、
当該アプライアンス・サーバの当該コンピュータを認証するための認証手段と、
ネットワーク・アクセスのための当該仮想アプライアンス・ブートローダをエンド・ユーザが構成することを可能にするために、ユーザ・インタフェースを提供するためのネットワークコンフィギュレーションと、
ネットワークコンフィギュレーションをロードするためのネットワークコンフィギュレーション・ローダと、
フロッピー（登録商標）からのブートをエミュレートするためのフロッピー（登録商標）・エミュレータと、
システムコンフィギュレーションが、何かが動作する前に、システムコンフィギュレーションをセーブするために、および、その後に当該システムコンフィギュレーションをリストアするために、モジュールをバックアップおよびリストアし、
前記コンピュータに特有のデバイス・ドライバ・モジュールを格納するためのデバイス・ドライバ・マネージャと、
ユーザが当該アプライアンス・サーバにログインすることを可能にするためのユーザ・ログイン・マネージャと、
標準のルック＆フィールを提供するためのGUIライブラリと、
DHCPによるネットワーク／TCP/IPスタックと、
x86 CPUをリアルからプロテクトモード、および、元に戻すようにスイッチするCPUモード・スイッチャと、
コンピュータ・ハードディスクからメイン・オペレーティング・システムをブートするためのOSブートローダと、
システム情報をBIOSから抽出して、当該抽出された情報を当該アプライアンス・サーバに送信するためのシステム情報マネージャと、
適切な位置にアプリケーションのダウンロードおよびレイアウトを可能にするために、メモリ・リソースを管理するためのメモリ・リソース・マネージャの
何れかを備える請求項14に記載の装置。
【請求項１６】
当該アプリケーションが、ハイパーバイザが動作するために必要な仮想マシン・アプリケーションの何れかを備え、かつ
実行環境が、
エミュレートディスクによるリアルモードと、
固定的なメモリ・アドレスによるリアルモードと、
エミュレートディスクおよびラージ・ポスト-ブート・ペイロードによるリアルモードと、
固定的なメモリ・アドレスおよびラージ・ポスト-ブート・ペイロート゛によるリアルモードの
何れかを備える請求項14に記載の装置。
【請求項１７】
アプライアンスの仮想化のためのコンピュータによる実装方法であって、
組み込みオペレーティング・システム（OS）をパーソナル・コンピュータのシステム・ブートROMに格納するステップと、
前記パーソナル・コンピュータのオペレーティング・システムを起動する前に、少なくとも一部の当該パーソナル・コンピュータのオペレーティング・システムの起動をサスペンドし、前記パーソナル・コンピュータがブートされると、即時に当該OSを起動するステップと、
最初のOSがオンラインで、かつアプライアンス・サーバに到達すると、より完全なOSをダウンロードするステップであって、当該OSのルック＆フィールが、このプロセスの間に変化しないステップと、
各パーソナリティが根底にあるプラットホームから抽出されるソフトウェア・コンテナで動作し、複数のパーソナリティを当該パーソナル・コンピュータの複数ユーザに提供するステップと、
アプライアンスが、特定のタスクを遂行するのに必要であるすべてを含む自己内蔵型のバイナリ・パッケージを備え、当該OSを起動すると、即座に、当該OSが、ローカル・ストレージ媒体およびネットワーク・ロケーションの何れでも利用可能な仮想アプライアンスおよびパーソナリティを探すステップと、
当該OSが、当該パーソナル・コンピュータに選択のための少なくともいくつかの当該利用可能な仮想アプライアンスを表示するステップと、
当該パーソナル・コンピュータで使用する利用可能な仮想アプライアンスの少なくとも一つのアプライアンスを当該表示から選択するステップと、
当該パーソナル・コンピュータで当該選択されたアプライアンスをダウンロードし、起動するステップと、
を備え、
当該アプリケーションが、それ自体の実行環境を含み、RAM内に存在しかつRAM内で完全に実行され、かつローカル永続ストレージを必要としない、
方法。
【請求項１８】
プロフィール・ベースのコンフィグレーション、パーソナリティ、および、パーソナリティのパッケージを提供するステップ、を更に備える請求項17に記載の方法。
【請求項１９】
コンテンツを自動アップデートするステップと、
パーソナリティを自動アップデートするステップの
何れかを、更に備える請求項17に記載の方法。
【請求項２０】
コンテンツおよびパーソナリティのアップデートおよび／または、新規および／または置換パーソナリティのためにP2Pおよび／またはBitTorrentを使用するステップ、を更に備える請求項19に記載の方法。
【請求項２１】
周辺機器およびデバイス・ドライバが、仮想マシン内部で適切に、そして、最適に機能することができるための必要なツールを提供するためにパーソナリティを周辺機器にバンドルするドライバおよび周辺機器統合化キットを提供するステップ、を更に備える請求項17に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想化に関する。特に、本発明は、アプライアンスの仮想化のための方法と装置に関する。
【０００２】
先行技術の説明
関連出願
この出願は、アメリカ合衆国暫定特許出願第60/806,915号（出願日：7/10/06）および、第60/890,121号（出願日：2/15/07）の優先権を請求するものであり、その各々は、参照によって完全に本願明細書に組み入れられている。
【背景技術】
【０００３】
コンピュータ処理において、仮想化は、コンピュータ・リソースの抽象化を指す幅広い用語である。1つの実用的な定義は、コンピュータ処理のリソースの物理的特性を、そのリソースと相互作用する他のシステム、アプリケーションまたはエンド・ユーザから隠蔽するための技法である。これは、単一の物理リソース（例えば、サーバ、オペレーティング・システム、アプリケーションまたはストレージ・デバイス）を、複数の論理リソースとして機能するように見せかけたり、または、複数の物理リソース、例えばストレージ・デバイスまたはサーバを、単一の論理リソースとして見せかけたりできる。ウィキペディアを参照する。
【０００４】
しかしながら、この用語は、古いものである。仮想化という用語は、1960年代またはそれ以前から広く使われ、コンピュータ・システム全体から個々の機能またはコンポーネントまで、コンピュータ処理の多くの異なる態様および領域に適用されてきた。全ての仮想化技術の共通のテーマは、カプセル化によって、技術的な詳細を隠蔽することである。仮想化は、例えばアクセスを多重化したり、異なる物理的位置でリソースを統合したり、または、制御システムを単純化することによって、根底にある実装を隠蔽する外部インタフェースを生成する。新たな仮想化のプラットホームおよび技術の最近の開発は、この成熟した概念について再び注目を集めるようになってきた。
【０００５】
どのようにして完全なハードウェア・シミュレーションが実装されるのか、下記に挙げる、プラットホーム仮想化へのいくつかのアプローチがある。以下の用語は、それ自体一般的に認識されるものではないが、根底にある概念は、全て文献に見てとれるものである。
【０００６】
エミュレーションまたはシミュレーション：仮想マシンは、完全なハードウェアをシミュレーションするもので、全く異なるCPUのゲストOSを修正することなしに、動作させることができる。このアプローチは、新たなプロセッサが物理的に利用可能になる前に、そのプロセッサ向けのソフトウェアの作成を可能にするために、長い間用いられてきた。具体例としては、Bochs、PearPC、仮想PCのPowerPCバージョン、アクセラレーションのないQEMU、かつ、Herculesエミュレータなどを含む。エミュレーションは、ステートマシンから十分な仮想化プラットホーム上の動的な再コンパイルの使用まで、様々な技法を用いて実装される。
【０００７】
ネイティブ仮想化およびフル仮想化：仮想マシンは、修正されていないゲストOS（すなわち、同じCPUのために設計されたもの）が、分離して動作することを可能にするのに十分なハードウェアをシミュレートする。一般的に、多くのインスタンスは、すぐに動作させることができる。このアプローチは、1966年のCP-40およびCP［-67］/CMS（IBMのVMファミリーの先行するもの）が起源とされる。実施例は、VirtualBox、Virtual Iron、Virtual PC、VMware Workstation、VMware Server（以前は、GSX Server）、VMware ESX Server、QEMU、Paralles Desktop、Adeos、Mac-on-Linux、Win4BSD、Win4Lin Pro、かつ、z/VMを包含する。
【０００８】
アドレス空間の仮想化を含む部分仮想化：仮想マシンは、根底にあるハードウェア環境、特にアドレス空間に、全てではなく、多くの複数のインスタンスをシミュレーションする。このような環境は、資源の共有および処理の分離をサポートするが、ゲスト・オペレーティング・システム・インスタンスを分割することは出来ない。一般に、仮想マシンのカテゴリとして本質的に見なされないが、これは、歴史的に重要なアプローチであって、CTSS、実験的なIBM M44/44Xのようなシステム、おそらくOS/VS1、OS/VS2およびMVSのようなシステムで使用された。多くのより最近のシステム（例えば、Microsoft Windows（登録商標）およびLinux、下記の残りのカテゴリも）は、この基本的なアプローチを使用する。
【０００９】
準仮想化（Paravirtualization）：仮想マシンは、ハードウェアを必ずしもシミュレーションするというわけではなくて、代わりに、または、それに加えて、ゲストOSを修正することによって使用することが可能となる特殊なAPIを提供する。ハイパーバイザのこのシステムコールは、Xen、Parallels WorkstationおよびEnomalismのハイパーコール（hypercall）と呼ばれる。IBMのVMのもとにCMSのDIAG（「diagnose」）ハードウェア命令を介して実装され、ハイパーバイザという用語の起源とされる。実施例は、Win4Lin 9x、Sun MicrosystemsのLogical Domains、および、z/VMを包含する。
【００１０】
オペレーティング・システム・レベルの仮想化：オペレーティング・システム・レベルで物理サーバを仮想化し、複数の独立かつ安全な仮想化されたサーバが単一の物理サーバ上で動作することを可能にする。ゲストOS環境は、ホストシステムと同じOSを共有する。すなわち、同じOSカーネルがゲスト環境を実装するために用いられる。所定のゲスト環境で動作しているアプリケーションからは、それがスタンドアロンシステムに見える。実施例は、Linux-VServer、Virtuozzo（Windows（登録商標）またはLinux用の）、OpenVZ、Solaris Containers、および、フFreeBSD Jailsである。
【００１１】
アプリケーションの仮想化：適切な仮想マシン内のローカル・リソースを用いて、ローカルにデスクトップまたはサーバ・アプリケーションを動作させる。これは、従来のローカル・ソフトウェア（すなわち、システム上にインストールされたソフトウェア）としてのアプリケーションを動作させることと対照的である。レジストリ・エントリ、ファイル、環境変数、ユーザ・インタフェース要素およびグローバル・オブジェクトのような、仮想化されたアプリケーションは、実行するために必要なコンポーネントを含んでいる小さい仮想環境で動作する。この仮想環境は、アプリケーションとオペレーティング・システムの間の層としての役割を果たし、アプリケーションのコンフリクトおよびアプリケーション-OSのコンフリクトを取り除く。実施例は、Sun Java（登録商標） Virtual Machine、Softricity、Thinstall、AltirisおよびTrigenceを包含する。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
仮想化に対する関心あれば、アプライアンスの仮想化のための方法と装置を提供することは有利であろう。
【課題を解決するための手段】
【００１３】
本発明は、アプライアンスの仮想化のための方法と装置を提供する。好ましい本実施例において、組み込みオペレーティング・システム（OS）は、パーソナル・コンピュータのシステム・ブートROMに含まれる。組み込みOSは、素早くブートし、ネットワーク・アクセスおよび場合によってはグラフィックディスプレイに必要なドライバをインストールする。ブート・プロセスは、インスタント・オンで出現するのに~3秒を要する。そして、組み込みOSは、仮想アプライアンスを検索しかつそれを実行するために、直ちにネットワークにアクセスする、あるいは、BIOS ROMまたは他のストレージ・メディアから仮想アプライアンスを検索してもよい。一般に、仮想アプライアンスのBIOS ROMは、電子プログラミング・ガイド（EPG）である。使用が簡単かつ直観的であるという点で、EPGはセット・トップ・ボックスによって提供されるものと類似している。EPGは、システムがブートするときに、ユーザが見る第一のイメージである。例えば、EPGは、以下の場所：ローカルUSB、フラッシュ・カード（例えば、SD、xD、CF、CDROM/DVDまたは他のストレージ・メディア）；ローカル・ハードディスク・ストレージ；インターネット（例えば、アプライアンス・サーバ）、から利用可能な全ての仮想アプライアンスを表示する。本願明細書に開示される組み込みOSについては、ユーザはEPGから使用するアプライアンスを選択し、そこで、アプライアンスはロードされ、実行される。選択されたアプライアンスがローカル・ストレージにない場合には、例えば、アプライアンス・サーバからインターネットを通じて、ダウンロードされる。次回必要なときに、アプライアンス・サーバからダウンロードする必要がないように、ダウンロードされたアプライアンスはローカル・ストレージ・メディアにキャッシュしてもよい。オペレーティング・システムおよびハードディスクがインストールされる場合、ユーザは、ハードディスクからオペレーティング・システムのブート、または、システムのパワーオフを選ぶことができる。
【図面の簡単な説明】
【００１４】
【図１】ユーザ待ち時間を減らすために、本発明により仮想アプライアンスをどのようにして部分的にダウンロードしかつ実行するかについてのプロセス・フローを示すフローチャートである。
【図２】本発明により、データ／アプリケーションの部分を格納し、キャッシュするためのモデルを示すブロック略図である。
【図３】本発明によるシステム・サーバ・バックエンドを示すブロック略図である。
【図４】本発明による好適なシステム・アーキテクチャを示すブロック略図である。
【図５】本発明により、VMソフトウェア・スタックおよびスタックの部分がどこに存在するかを示すブロック略図である。
【図６】本発明により、VMブートローダおよび関連するモジュールを示しているブロック略図である。
【図７】エミュレートディスクによりリアルモード操作をするための本発明のメモリスタックの略図である。
【図８】固定的なメモリ・アドレスによりリアルモード操作をするための本発明のメモリスタックの略図である。
【図９】エミュレートディスクによるリアルモード操作およびラージ・ポスト・ブート・ペイロードのための本発明のメモリスタックの略図である。
【図１０】固定的なメモリ・アドレスによるリアルモード操作およびラージ・ポスト・ブート・ペイロードのための本発明のメモリスタックの略図である。
【図１１】本発明により、仮想アプライアンスをダウンロードするためのクライアントとサーバの間のハンド・シェーキングを含む、BIOSポスト後のプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１５】
（用語解説）
次の用語は、本願明細書においては下記で定義されるように使用される：
BIOS：パーソナル・コンピュータの最初のスタートアップ・コード
VA：仮想アプライアンスまたはアプリケーション
ROM：BIOSを含むパーソナル・コンピュータ・マザーボードのデバイス
VoIP：ボイスオーバーIP
P2P：ピア・ツー・ピア
EPG：電子番組ガイド（すなわち、仮想アプライアンスのリストを表示するグラフィカル・ユーザ・インタフェース）
NTF：例えば、Windows（登録商標） XPによって使用されるファイルシステム・フォーマット
MBR：マスター・ブート・レコード、第1番、例えば63、ハード・ドライブのセクタ。第1のセクタは、初期ブート・コードおよびパーティション・テーブルを含む。
【実施例】
【００１６】
（考察）
本発明の一実施例は、アプライアンスを使用するのと同様にパーソナル・コンピュータを使用することを可能にする。仮想アプライアンスをダウンロードして、動作することによって、パーソナル・コンピュータには、アプライアンスに似た機能およびインタフェースが与えられる。パーソナル・コンピュータは、シンプルでかつ使いやすいユーザ・インタフェースを有する専用の機能を果たすデバイスになる。本発明のこの実施例は、パーソナル・コンピュータが、例えば、次のことを行うことを可能にする、アプライアンス構成を提供する：
・ビデオ、映画、TVコンテンツのストリームの再生にテレビジョンアプライアンスをダウンロードする；
・オーディオ・コンテンツのストリームの再生にオーディオプレーヤアプライアンスをダウンロードする；
・ローカル・オーディオ／ビデオ・コンテンツの再生に、CD/VCD/DVDプレーヤアプライアンスをダウンロードする；かつ、
・このようなアプリケーションのための多種多様な、次のようなパーソナル・コンピュータ処理アプライアンスをダウンロードする：
・VoIP（例えば、Skypeなど）。
・ウェブの閲覧
・全般的なオフィス・タスク（例えばワード・プロセッシング、表計算ソフト）
・全般的なプロダクテビティ・タスク（例えば、カレンダー、タスク）
・電子通信（例えば、インスタント・メッセージング、電子メールなど）。
・全般的なパーソナル・コンピュータ・メンテナンスタスク（例えば、BIOSアップデート、診断、システム・バックアップおよびリストア）
・複合コンピュータ・サービス（例えば、リモート・コンプレックス診断、サポート・センターとの接続およびシステムのテクニカル・サポート制御）
・全般的な製品サポート・タスク（例えば、アップデート、トラブルシューティング）
・電子エンターテイメント（例えば、オンライン・ゲーム）
・OSがDVM組み込みOSと並列に動作することができるように、十分に発達したOS（例えば、Windows（登録商標））は、仮想化レイヤーでラップされる
・プライマリOSがバックグラウンドでブートすると共に、インスタント・オン環境の使用が可能になる
・完全にブートされ、ユーザがスイッチすると、プライマリOSがハードウェアへのアクセスに費やされることを可能にする。
【００１７】
これにより、本発明の本実施例は、真のメディア、エンターテイメントおよびプロダクテビティ・センターをデジタルホームに提供する。したがって、ハードディスクまたはインストールされたオペレーティング・システムが存在するか否かに拘わらず、本願明細書に開示される発明の技術によって、（例えば、ブートROMに）プレインストールされている如何なるパーソナル・コンピュータも、アプライアンスとして機能させることができる。
【００１８】
実装／具体化
電子番組ガイド（EPG）は、システム・ブートROMに含ませてもよい。使用が簡単かつ直観的であるという点で、EPGはセット・トップ・ボックスによって提供されるものと類似している。一実施例において、EPGは、ユーザが、EPGにワンクリック・パーソナリティを確立することを可能にする、ドッキング・パネル、アプリケーション起動バー、スクロールバー、ソフトキーまたは物理ボタンのようなスイッチング機構を備える。
【００１９】
システムは、ブート、または、カウントダウンの経過前に、ユーザが、インスタント・オンを選択すると、組み込みOSは起動する。全ての利用可能な仮想アプライアンスを、例えば、次の場所から探し、EPGに表示する：
・ローカルUSB、フラッシュ・カード（例えば、SD、xD、CF、CDROM/DVDまたは他のストレージ・メディア）；
・ローカル・ハードディスク・ストレージ
・インターネット（例えば、アプライアンス・サーバ）
【００２０】
典型的なセット・トップ・ボックスのOSにおいて、ユーザは、再生するTVまたは映画コンテンツを選択する。本願明細書におけるEPGについては、ユーザは使用するアプライアンスを選択し、その後そのアプライアンスはロードされ、かつ起動される。選択されたアプライアンスがローカル・ストレージにない場合には、それは、例えば、アプライアンス・サーバからインターネットを通じて、ダウンロードされる。次回の必要時に、アプライアンス・サーバからダウンロードする必要がないように、ダウンロードされたアプライアンスはローカル・ストレージ・メディアにキャッシュさせてもよい。オペレーティング・システムおよびハードディスクがインストールされている場合、ユーザは、ハードディスクからオペレーティング・システムのブート、または、システムのパワーオフを選ぶことができる。
【００２１】
アプライアンスとは何であるか？
アプライアンスまたは仮想アプライアンスは、特定のタスクを遂行するのに必要であるすべてを含む自己内蔵型のバイナリ・パッケージである。例えば、VoIPアプライアンスは、インターネットに接続し、ユーザが他の仲間とトークするのに必要な全てのソフトウェアを含んでいる。このようなアプライアンスは、オペレーティング・システム、ネットワーク・スタック、デバイス・ドライバ、ユーザ・インタフェースおよびVoIPアプリケーションを含んでいてもよい。
【００２２】
ハードウェア依存性
この考察は、異なるハードウェア・プラットフォームをサポートする必要性について述べる。現在、排他的でない2つのソリューションがある。
【００２３】
第1のソリューションは、ブートROMに必要なデバイス・ドライバを格納することである。例えば、ほとんどの典型的なマザーボードは、ビデオ、オーディオおよびネットワークのデバイスを含んでいる。これらのデバイスのデバイス・ドライバは、ブートROMに格納してもよい。アプライアンスが起動され、その根底にあるオペレーティング・システムがデバイス・ドライバを必要とするときは、ブートROMからこれらのデバイス・ドライバをロードする。
【００２４】
第2のソリューションは、仮想マシン内のアプライアンスを動作させることである。全ての仮想マシンは正確な同じ仮想ハードウェアを持つので、全てのアプライアンスは同じ仮想ハードウェアを使用するために開発される。しかしながら、ハイパーバイザ（すなわち、仮想マシンオペレーティング・システム）は、さらに実際のハードウェアに対してトークすることを必要とする。この場合、ハイパーバイザは上記の第1のソリューションを用いてもよく、デバイス・ドライバはブートROMからロードされる。
【００２５】
パーソナライズされた経験
EPGは、パーソナライザーを含んでもよい。これによって、ユーザが好きなアプライアンスを選択するか、さもなければ、共通して使用されるアプライアンスへのアクセスの簡略化を改善することができる。例えば、最も共通して使用されるアプライアンスは、第1のスクリーン上に、または、利用可能なアプライアンスのリストの最上位で現れる。これは、これらのアプライアンスを起動するために、不必要なユーザ・ナビゲーションを回避する。パーソナライザーは、アプライアンスをユーザに知的に示唆してもよい。これは、類似した本または製品を提案するアマゾン・ドット・コム・システムに類似している。
【００２６】
アプリケーションをパーソナライズするために、構成データは、DVMサーバに送信される。サーバは、ユーザのシステムと互換性があるVAだけを選択するために、その情報を使用する。加えて、サーバはVAを最適化、または、診断の場合、適切な構成をセットアップするためにその情報を使用する。
【００２７】
一実施例において、複数のパーソナリティは、パーソナル・コンピュータの複数ユーザにも提供される。これは、根底にあるプラットホームから抽出されるソフトウェア・コンテナで動作することによって、より良好に分離できる。これらのコンテナは、ウイルス／スパムの二次感染、ドライバおよびOSバージョンなど、さまざまなアプリケーションの中のDLLと他のライブラリとの間の不一致を減らす効果がある。パーソナリティのインストールおよびアンインストールは、よりクリーンとなる（ファイルコピー／デリート操作を減少させる）。
【００２８】
どこで消費者がPCにアクセスしても、パーソナリティを使用するユーザの経験は、利用可能な同じ経験を作ることによってさらに強化してもよい。仮想化技術をコンテナのパーソナリティに提供することは、USBポートおよび適切な仮想化サポートをもつどのようなPC上のコンテナも開いて、モバイルアプライアンス（例えば、USBドライブ）上にコンテナを配置することを容易にする。例えば、システムは、主にオンラインからメディア・コンテンツをダウンロードして、さまざまなインタフェースを介してユーザにそれらのメディア・コンテンツを再生するためのパーソナリティを包含してもよい。メディア・コンテンツは、特定の国または文化であってよい。
【００２９】
他の実施例は、予備のスロットおよびリソースをリプレイス・パーソナリティに提供する。この実施例は、自動的にユーザ・プロファイルおよびユーザ・インタレストをコンパイルする。パーソナリティのユーザの選択に基づいて、プロファイルは、消費者（例えば、付加的なパーソナリティ、コンテンツ、製品、など）に他の付加価値サービスの推奨の方へ適用できるように確立される。システムは、自動的に探索し、情報をアップロードし、ユーザ・プロファイルおよび使用に基づいて関連するパーソナリティを提案してもよい。消費者に対するリベート、OEMに対する補助、使用に基づくアプリケーション・プロバイダ・サービスに対する収入（例えば、ボリュームベース、コンテンツごとの支払、サービスまたはソフトウェア・プロバイダ）は、システムに統合させてもよい。
【００３０】
他の実施例は、プロファイルに基づく構成、パーソナリティおよびパーソナリティのパッケージ（すなわち、予め構成されたパッケージ）を備える。本実施例において、特定のプロファイルのための推奨されたカスタマイズは、ブラウザの一組のお気に入りの構成、1つのパーソナリティ（例えば、一組のアプリケーションまたは一群のパーソナリティ）のようにシンプルでもよい。ユーザ・プロファイルは、例えば、次のような他のオンライン企業／コミュニティからの人口統計、関心またはデータに基づいてもよい：
・人口統計：年齢、性別、民族的背景、職業（例えば、学生、主婦など）
・関心ベース：ユーザ指定、または、その他の関心ベースの結びつき
・Netflix、Google、A9、Amazon、Yahoo、MSN、mySpace、del.icio.us、RSS／ブログの購読による結びつき
・パーソナリティのグループまたはシングル・パーソナリティ
・ユーザ・プロファイル、データまたは行動に基づいてショッピング・パーソナリティを提供する。ユーザがショッピング・パーソナリティを包含するパーソナリティのバンドルを選ぶ場合、ショッピング・パーソナリティは顧客に対しての付加価値（例えば、Home Depot/Lowe’sの代わりにPottery Barn/Crate & Barrellへのリンク）をプロファイルに基づいてさらにカスタマイズしてもよい
また、例えば、プロファイルに基づいて予め構成されかつパーソナライズされた、利用者選好、構成、スキンおよびお気に入りに対し、ツールが、提供される。異なるプロファイルに対するパーソナリティは、全く同一のアプリケーションを有するが、例えば、お気に入り、スキン、利用者選好および構成に対し、異なる設定を有してもよい。1つの例は、ティーンエイジャー対大学生プロファイルに対する異なるウェブサイトへの予め構成したリンクを有する、ブラウザ・パーソナリティである。ツールは、設定ファイルの作成およびパーソナリティへの異なる設定の配置を容易にすることが出来る。
【００３１】
本発明は、さらに、ドライバおよび周辺機器統合化キットを考察する。いくつかのパーソナリティは、周辺機器にバンドルしてもよい（例えば、VoIPパーソナリティがバンドルされたブルートゥース・ヘッドセット）。ドライバおよび周辺機器統合化キットは、周辺機器および装置ドライバが仮想マシン内部で適切かつ最適に機能することを可能にするための必要なツールを提供する。ツールは、複数の仮想マシンの間で、ある仮想マシンを適切に整合するようにさせてもよい（例えば、ジョイスティックをプロダクテビティ・パーソナリティにではなく、ゲーム・パーソナリティに対してだけ利用可能とする）。
【００３２】
マルチレイヤーEPG
BIOS ROM容量が極めて少ない場合、EPGには、組み込みOSが包含されない。または、ストレージ・スペースが問題でない場合、単一の完全なEPGを使用することが出来る。
【００３３】
一般に、ブートROMは、ごくわずかな容量しか有していない。したがって、マルチステージEPGが、使用される。システムがオフラインの場合、最初のEPGは、システムに格納される利用可能なVAの全てをインタフェースし、表示してもよい。システムがオンラインの場合には、最初のEPGの起動後、組み込みOSは、より多くのオプションおよびより良好なグラフィクスを有する第2レベルのEPGを検索する。
【００３４】
マルチレイヤーEPGにより良好なインスタント・オン・アピアランスを作成するために、最初のEPGが、オンラインで、アプライアンス・サーバに到達すると、それは、より完全なEPGをダウンロードすることができる。しかしながら、EPGのルック＆フィールは、このプロセスの間、変化しないかもしれない。その結果、ユーザは、EPGがアップグレードされたことに気がつかない。
【００３５】
仮想アプライアンスのダウンロード
はじめに
EPGは、ユーザに利用可能な仮想アプライアンス（VA）のリストを示す。ユーザは、使用する仮想アプライアンスを選択する。VAがローカル・ストレージ（例えば、ハードディスクまたはUSBフラッシュドライブ）に予めキャッシュされている場合は、それは、メモリへロードされて、実行される。さもなければ、VAは、アプライアンス・サーバ（DAS）からダウンロードされる。
【００３６】
最適化
起動時間を短くする1つのアプローチは、仮想マシンおよびそのアプリケーションを、少しずつロードすることができるブロックに分割することである。最初、全体の仮想マシンおよびアプリケーションコードではなく、必要とされるブロックだけが、ハード・ドライブからロードされる。
【００３７】
ドライバ最適化は、特定のパーソナリティ要求に使用してもよい。例えば、一実施例は、ドライバ再利用（例えば、既存のドライバ用のラッパー）を考察する。特定のパーソナリティは、標準の仮想化されたI/O手段により、利用可能なより高いI/Oスループットを必要としてもよい。1つの例は、ゲーム・パーソナリティである。そして、それはグラフィックスチップと入出力を行うより高いI/Oスループットを必要とする。ゲーム・パーソナリティは、I/Oサブシステムおよびグラフィックスチップに直接、または、優先してアクセスできる一般的な仮想グラフィクス・ドライバの代わりに、特別なグラフィクス・ドライバを使用してもよい。
【００３８】
他の最適化は、コア・コードを共有することによって、各パーソナリティの必要なディスクスペースを減らすことである。例えば、同じゲストOSを使用しているパーソナリティは、共通のゲストOS以外の付加的なアプリケーションおよびドライバだけを含んでもよい。ゲストOSの1つのコピーだけが、読取り専用として格納され、複数のパーソナリティによって共有される。
【００３９】
最適化されたOSイメージ（例えば、メモリ管理を有していないシングルタスク、ノー・ポストなど）を、使用してもよい。この実施例は、パーソナリティのアプリケーションが機能するために必要とされるサービスだけを含めるために、ゲストOSの余分な機能を取り除く。このことは、パーソナリティをより小さく、より速くする。パーソナリティ開発キットは、パーソナリティ開発者がOSを生成、または、余分な機能を取り除くのを援助するためのツールを含んでもよい。
【００４０】
ネットワーク最適化
発明者に直面したさらなる挑戦は、仮想アプライアンスをダウンロードするために必要な時間である。明らかに、ユーザは、直ちにVAを使用することができることを期待する。ダウンロード時間は、ネットワーク速度およびVAのサイズに依存する。以下の説明は、さまざまなダウンロードに予想される展開および最適化に対処する。ネットワークの最適化に対処する次のような各種実施形態がある：
第1のアプローチは、DVMアプライアンス・サーバ（DAS）がローカルに存在するということである。例えば、ユーザが台湾にいて、DASが合衆国にある場合、ダウンロードは非常に遅い。その結果、EPGは、ローカル、または、国内にあるサーバに、常にリダイレクトされる。EPGは、次に、EPGが動作しているパーソナル・コンピュータのIPアドレスに注目して、発信元の国または領域を決定し、メインDASにアクセスする。すべての言語は、各ローカル・サーバでサポートされる。これにより、ユーザ／ログイン情報を使用して、ユーザがリダイレクトされるローカル・サーバに関係なく、サーバは望ましい言語を表示する。国内、または、ローカル・サーバのIPアドレスを含んでいるリダイレクション・パケットが、ローカル・サーバに接続するためのリダイレクション・パケットに含まれる情報を使用するEPGに送信される。
【００４１】
第2のアプローチは、VAを一つ以上のサーバからダウンロードすることである。
【００４２】
他のアプローチは、ピア・ツー・ピア（P2P）ダウンロードを使用することである。ダウンロードされたVAが、ローカル（例えば、ハードディスクまたはUSBフラッシュドライブ）にキャッシュされると仮定する。人気のあるVAは、多くのパーソナル・コンピュータにキャッシュされる。その結果、所定のパーソナル・コンピュータ上のEPGが特定のVAを必要とするとき、すでにそのVAのキャッシュされたコピーを持つあらゆるパーソナル・コンピュータからVAを得てもよい。異なるパーソナル・コンピュータから並行してVAの異なる部分をとらえることによって、EPGは、ダウンロード時間を減らすことができる。EPGは、パーソナル・コンピュータなどへのホップ数に注目することによって、ダウンロードするパーソナル・コンピュータを知的に選択してもよい。
【００４３】
加えて、最初のEPG画面がユーザからの入力を待つ間、組み込みOSはプリフェッチし、かつRAMにVAをプレロードする。その結果、ユーザが選択をしたあと、データはすでにRAMにあり、すぐに起動する。
【００４４】
仮想アプライアンスダウンロード
並列化
最も基本的な予想される展開において、VAは、ダウンロードされる。次いで、それは、解凍されて、実行される。
【００４５】
1つの最適化アプローチは、VAがダウンロードされる間に、解凍と実行の操作を遂行することによる並列化の改善に関係する。これを行うため、ストリーミングメディアに最適化される圧縮アルゴリズムが、使用される。最上位で、VAは、パーソナル・コンピュータにストリームする。ストリームは、圧縮チャンクで構成される。各チャンクは、他のチャンクの中で独立して解凍させてもよい。各チャンクが異なるピア・パーソナル・コンピュータから到着することができるので、このアプローチは既に考察されたP2Pアプローチによって適切に機能する。
【００４６】
モジュール分割法
並列化アプローチは、各モジュールが、他のモジュールから独立してダウンロード、解凍、実行／初期化することができるように、VAが高度にモジュール化されることを確認することによって、さらに強化させることが出来る。例えば、VAが、オペレーティング・システムに加えてアプリケーションで構成される場合、オペレーティング・システム（OS）は一つのモジュールでもよく、アプリケーションは他のモジュールでもよい。インテリジェント・ダウンロード・メカニズムは、OSモジュールを、先ず、ダウンロードし、解凍し、かつ実行することを確実にする。アプリケーション・モジュールは、ダウンロードし、同時に解凍することが出来るが、その実行は後に行われる。より複雑な実施例は、オペレーティング・システム、GUI、基本的なHTMLウェブ・ブラウザ、ジャバスクリプト・エンジン、マクロメディア・フラッシュプレーヤさらにフォントを備えるウェブ・ブラウザVAに関係する。これらの各々の要素は、別々のモジュールを構成してもよい。ユーザ経験を改善するために、OS、GUIおよび基本的なブラウザは、より高いダウンロード優先度を有する。このようにして、ユーザは、きわめて素早くウェブ・ブラウザおよびユーザ・インタフェースを見る。他のモジュールは、より低い優先度でダウンロードされ、または、例えば、ユーザが、マクロメディア・フラッシュを必要とするウェブサイトに決して行かない場合には、それは、全くダウンロードされない。フォントは、必要な場合にだけ、ダウンロードされ、別々のモジュールでもよい（例えば、ユーザが簡略中文フォントを必要とするだけである場合、繁体字中国語フォントはダウンロードされない）。
【００４７】
Linux最適化
このセクションは、VAのOSがLinuxに基づく場合の最適化に関する考察である。
【００４８】
Linuxモジュール分割法
基本的なLinuxベースのダウンロードはカーネル・ファイルと、RAMディスク・イメージとを含む（例えば、initrdまたはinitramfs）。アプリケーションは、RAMディスク・イメージ内に含まれている。initrdファイル内で全体のアプリケーションを配置することに関する1つの課題は、後者が非常に大きくなるということである（すなわち、およそ何十メガバイト程度）。モジュールアプローチについては、initrdファイルは、実際にいくつかのスタートアップ・スクリプトおよびユーティリティの基本的なRAMディスク・ファイルシステムを含んでもよいが、その他を含んでもよい。アプリケーションおよびその他の必要なファイル（例えば、X Window、Cライブラリ、ユーティリティ・プログラム、フォント、など）は、別々のモジュールとしてダウンロードされる。このようにして、カーネルおよびinitrdファイルは、非常に小さくすることができ（例えば、それぞれ2MB未満）、したがって、より速くダウンロードすることができる。
【００４９】
ダウンロードおよび実行プロセスは、次の優先度の順番で行われることが望ましい：
・Linuxカーネルおよびベースinitrd
・GUIは、RAMディスク・ファイルシステムにダウンロードされる
・ベース・アプリケーションは、RAMディスク・ファイルシステムにダウンロードされる
【００５０】
図1は、本発明によるダウンロードおよび実行プロセス・フローを示すフローチャートである。ステップ1（100）で、ダウンロード・カーネル10およびダウンロードinitrd 11は、スタートする。ステップ2（102）で、ブートLinux 12は、スタートする。当業者は、本願明細書における本発明がLinux以外のオペレーティング・システムに適用できることを理解するであろう。ステップ3（104）で、ダウンロードGUI 13、ダウンロード・ライブラリ14およびダウンロード・ベース・アプリケーション・ファイル15は、スタートする。ステップ4（106）で、ダウンロード・ベース・アプリケーションファイルはスタートし続け、GUI 13はスタートする。最後に、アプリケーション17がスタートし、高度なアプリケーション・ファイル18がダウンロードされるときに、イニット・プロセスは、ステップ5（108）で完了する。
【００５１】
Linuxダウンロード・マネージャ
インテリジェントLinuxダウンロード・マネージャは、既に記載された優先度ダウンロードおよび実行メカニズムを実装するために必要である。ここの1つの理由は、EPGがただカーネルおよびinitrdファイルをダウンロードするだけであるということである。一旦Linuxがスタートすると、残りのモジュールをダウンロードしなければならない。ダウンロード・マネージャも、できなければならない：
・既に中断されたダウンロードを再開する
・ローカル・ストレージのモジュール（例えば、キャッシュされたモジュール）を探して、それらをダウンロードする代わりに、ローカル・ストレージから直接それらをロードする
・簡単な識別のためにローカル・ストレージにダウンロードされたモジュールを管理して、後のセッションのために検索する
【００５２】
モジュールの再利用
さまざまなアプリケーション・モジュールをモジュール化して、切り離す1つの利点は、異なるVAのために同じモジュールを再利用する能力である。例えば、ウェブ・ブラウザVAは、オペレーティング・システム・カーネルおよびGUIを必要とする。VoIP仮想アプライアンスも、オペレーティング・システムおよびGUIを必要とする。ウェブ・ブラウザおよびVoIP VAは、同じモジュールのいくつかを共有することができる。ユーザがウェブ・ブラウザVAをすでに使用した場合、オペレーティング・システム・カーネル、initrdおよびGUIはすでにダウンロードされている。そのため、ユーザがVoIP VAを使用することを選ぶ場合、単にVoIPアプリケーションをダウンロードすることだけが必要とされる。このことは、起動時間を減らし、その結果、ユーザ経験を改善する。
【００５３】
Linuxデバイス・ドライバ
Linuxカーネルは、デバイス・ドライバのベーシック・セットを含んでいてもよい。しかしながら、マザーボードに特有のハードウェア用のドライバは、カーネルから分離していなければならない。このことは、次の2つの課題を回避する：
・サポートされることを必要とするすべてのマザーボード用の1つのカーネルを持つ必要性
・サポートされることを必要とするすべてのマザーボード用のドライバを含む1つのラージ・カーネル。
【００５４】
カーネルは、2つのソースからドライバを得てもよい。第1に、ドライバは、組み込みOSによってダウンロードさせてもよい。第2に、ドライバは、ブートROMに含まれてもよい。少なくとも、ネットワーク・デバイス・ドライバは、組み込みOSによってダウンロードされる必要がある。他のドライバ（例えば、特別なハードディスクコントローラ、オーディオ、など）は、ダウンロード・マネージャを介してオペレーティング・システムによってダウンロードさせてもよい。一旦ドライバがダウンロードされると、ドライバをカーネルへロードするために、Linuxブートスクリプトはコマンド（例えば、insmod）を使用する。しかしながら、ドライバは、組み込みOSによって別々のスペース（例えば、RAMディスク）へロードされるので、insmodコマンドが機能できる（例えば、RAMディスクをマウントする）前に、いくつかの追加ステップを、遂行する必要がある。このことは、ブートアップ・シーケンスを遅くする。一方、Linuxが正常にロードされ、アプリケーションが起動したときに、バックグラウンドプロセスは、initrdをパッケージし直すことができ、initrdファイルにデバイス・ドライバを含めることができる。このパッケージし直されたinitrdは、キャッシュにおいてローカルに格納される。次にユーザがLinuxベースのVAを選択する時、パッケージし直されたinitrdが使用される。デバイス・ドライバがすでにファイル・システム内部にあるので、このinitrdは、さらに結果としてより速いブート・アップタイムとなる。さらに、新たなデバイス・ドライバを含むLinuxカーネルを作り直すことが可能である。
【００５５】
キャッシュ
本発明でキャッシュする際に伴ういくつかの態様がある。第1の態様は、ファイル、モジュールおよびユーザが使用したいVAをキャッシュすることである。第2の態様は、ユーザが使用することを望む可能性があるVAをプリフェッチングおよび、プリキャッシュすることである。例えば、我々が、次の特徴を実装しようとする場合：
・推奨されたVA：ユーザがこれまで使用のためにダウンロードしたものに基づいてVAを推奨する。
・示唆されたVA：他の類似したユーザがダウンロードしたものに基づいてVAを示唆する。
・支持されたVA。
RAMへのプリフェッチングおよびローカル・ストレージへのVAのプリキャッシュによって、より良好なユーザ経験を保証することができる。プリフェッチングおよびプリキャッシュは、両方とも、組み込みOSによって、または、VA内で行うことが出来る。
【００５６】
コンフィグレータ
ダウンロードされたモジュールのキャッシュが存在すると想定した場合、キャッシュがどこにあるか決定することが必要である。好ましい本実施例において、キャッシュは、以下の何れかである：
・ハードディスク上の特殊パーティション
・ファイルシステム（例えば、NTFのファイル）のファイル
・USBフラッシュ装置
・パーソナル・コンピュータ・マザーボードの他のフラッシュ・ストレージ
・ハードディスクMBR（例えば、ドライバファイルのための）
【００５７】
ハードディスクのパーティション上にキャッシュを配置することを望む場合、自動的に、かつ、困難なくこのパーティションを作成する必要性がある。このことは、EPGが好ましくはコンフィグレータ機能を含む理由である。例えば、第1のEPGがスタートアップし、検出するときに、全ての取り付けられたハード・ドライブは空であり（すなわち、パーティションが分けられていない、および／または、フォーマットされていない）、キャッシュ・パーティションをハード・ドライブに作成するか否かをユーザに尋ねる。ユーザが肯定の返事をする場合、EPGは第1のハード・ドライブに小さいパーティションを作成する。
【００５８】
アップデート／保守／セキュリティ
本発明は、アップデート、保守およびセキュリティ機能を考察する。例えば：
・コンテンツの自動アップデート（例えば、トップ100のリストの更新など）：メディア関連のパーソナリティは、定期的なアップデートから利益を得ることができるコンテンツを含んでもよい。例えば、カラオケ・パーソナリティは、毎週新曲およびMTVをダウンロードしてもよい。映画パーソナリティは、ネットフリックスから消費者の興味に適合する新規な映画をダウンロードしてもよい。
・パーソナリティの自動アップデート（例えば、パッチなど）：パーソナリティは、ジェネラル・リリース後の機能改善またはバグ・フィックスを持ってもよい。すべての消費者データおよび設定を正しい状態に保つと共に、サービスVMは、消費者のPC上の既存のパーソナリティを自動的にアップデートしてもよい。
・コンテンツおよびパーソナリティのアップデートのためのP2P/BitTorrent：顧客のPCへの大きなコンテンツおよびパッチのダウンロードに対して、この実施例は、ダウンロード速度を改善し、および、サーバ・インフラ要求を減らすために、P2P/Bit-torrentを導入する。コンテンツおよびアップデートは、少しずつ他のユーザから到着してもよい。アップデータは、パーソナリティに影響を及ぼさない程度に、別々の仮想マシンに存在してもよい。
・新規および／または交替パーソナリティのためのP2P/Bit-torrent：上記のように、新規または交替パーソナリティをダウンロードすることを除けば。異なるフロントエンドが、保守および新機能を区別するためにあってもよい。
・メディア、新規なパーソナリティ、セキュリティ・アップデートなどのためのセントラル・ダウンロード・マネージャ（例えば、BitTorrentなど）：顧客のPCへの大きなコンテンツおよびパッチのダウンロードに対して、ダウンロード速度を改善し、および、サーバ・インフラ要求を減らすために、P2P/Bit-torrentを導入する。コンテンツおよびアップデートは、少しずつ他のユーザから到着してもよい。アップデータは、パーソナリティに影響を及ぼさない程度に、別々の仮想マシンに存在してもよい。
・セントラル・ウイルス・スキャンおよび回復：オープン・ソース・ソリューション、または、例えば、シマンテック/McAfeeによって与えられるソリューションを提供する。一実施形態では、サービス仮想マシンは、アンチ・ウィルス、スパイウェア、ファイアウォールなどに対して、オープン・ソース・ベースのデフォルト・セキュリティモジュールを提供する。ユーザは、例えば、シマンテック、McAfee、トレンドマイクロ、その他によって提供されるアクティベーション・ベースの商業的なソリューションにアップグレードするオプションを持つ。
【００５９】
システム・メモリの使用モデル
一実施例は、インスタント・オン経験によるユーザ経験を改善するためにできるだけ能率的に、システム不揮発性メモリを利用する。図2は、本発明により、データ／アプリケーションの部分を格納し、キャッシュするためのモデルを示すブロック略図である。図2において、BIOSフラッシュROM 20、CMOSエリア19は、拡張システム構成データ（ESCD）21、ブートローダ23およびBIOS 25を含む。内蔵ストレージ22は、一つ以上の仮想アプライアンス27、コンテンツ28およびドライバおよび一般的な仮想アプライアンス・コンポーネント29を含む。リムーバブル・ストレージ24は、一つ以上の仮想アプライアンス27およびコンテンツ28を含む。かつ、オンライン・ストレージ26は、ユーザのヒストリ、クッキーおよびプロファイル30のような情報を含む。
【００６０】
DVMバックエンド
図3は、本発明によるシステム・サーバ・バックエンドを示すブロック略図である。図3において、パーソナル・コンピュータ31のユーザは、アプライアンス・サーバ33へのアクセスをシークする。本発明によって提供されるインスタント・オン経験を可能にする一態様は、ライト・バックエンド・モデルが必要周波数帯幅および速度をサポートすることを必要とする。一実施例は、ボードが単一のサーバ・クラスタに最初にアクセスすることを、すべてのDVMに、可能にさせている。このサーバは、基本的に、認証およびアンチ・フィッシング・セキュリティ・プロトコルを扱うリダイレクト・サーバ32である。その後、リダイレクト・サーバは、異なる地理的ホップによる遅延を減らすために、DVMユーザをローカル・サーバ・クラスタ38にリダイレクト。する。加えて、ローカル・クラスタの代わりに、リダイレクト・サーバは、パートナーに特有のアプリケーションを供給するためにパートナー・サーバ37にリダイレクトしてもよい。
【００６１】
ローカル／パートナー・サーバ・クラスタにおいて、認証は必要である。さらなる実施例は、リダイレクト・サーバから認証情報をパスする方法、または、単にローカル／パートナー・サーバが認証を扱う方法を提供する。これらのサーバは、高帯域トランザクションをサポートするセットアップである。それらのメイン・タスクは、システム情報アップロード、EPGアプリケーション・ダウンロード、VAアプリケーション・ダウンロード、ユーザ・ログインおよび切断を扱う。
【００６２】
各ローカル／パートナー・サーバ・クラスタ37、38、39は、いくつかのファイル・サーバ35およびコンテンツ・サーバ36を含む。コンテンツ・サーバが、BIOS、BIOSおよびマザーボードに特有のマニュアルなどのアップデートのためのサポート・データを含むと共に、ファイル・サーバは、すべてのVAを含んでいる。このコンテンツは、マザーボードOEMからのOEMサポート・データの再フォーマットされたバージョンでもよく、または、実際のOEMサーバでもよい。これは、仕様をOEMに供給するサポート・モデルによるものであり、これらの仕様を満たすためにアプリケーションに書き込むことができるようにし、または、それらを可能にするために、一定量のソース・コードを供給することを必要とする。一実施例は、すべてのOEM全体の標準のユーザ経験を提供するために、OEMサーバの再フォーマットされたバージョンを保持する。さらなるオプションは、サポート・モデルを実際にVAアプリケーションとすることである。
【００６３】
二重のファイル・サーバおよびコンテンツ・サーバとは対照的に、ユーザおよびハードウェア（H/W）データベースは、よりセントラルである。その理由は、より良好な整合性およびセキュリティのためである。ユーザ・データベースの目的は、より良好なユーザ経験をするために情報を格納するためにある。データベースは、例えば、最近使用されたVAなどのようなプリファランス／お気に入り、webtop構成、望ましい言語などの情報を含んでいる。
【００６４】
ブートローダ
VMブートローダを有するパーソナル・コンピュータは、エンド・ユーザのパーソナル・コンピュータ31を包含する。第2のパーソナル・コンピュータ33は、DVMサーバとしての役割を果たす。図4は、本発明（ネットワーク通信はイーサネット（登録商標）接続42を介して開始する）による好適なシステム・アーキテクチャを示すブロック略図である。当業者は、本発明が他の通信アーキテクチャも含むことを理解するであろう。ブートローダは、ROM／フラッシュ・ディスクからブートする。ネットワーク・スタックは包含され、かつDHCPはサポートされていることが、好ましい。シンプルな電子番組ガイド・アプリケーションは、ダウンロードして利用可能なVMアプリケーションのリストを表示するために提供される。アプリケーションのリストは、本実施例では、固定されている。
【００６５】
EPGアプリケーションは、ユーザにいくつかの選択を可能にさせる：
・動作するVMアプリケーションの一つを選択する
・ハードディスク上のデフォルトOSにブートする
・APM/ACPIがハードウェアでサポートされる場合、システムをシャットダウンするユーザがDVMアプリケーションのうちの1つを選択すると、EPGはアプリケーションをダウンロードして、実行する。
【００６６】
VMアプリケーション
BIOSアップグレード・ユーティリティ
システムは、BIOSバイナリおよびアップグレード・ユーティリティをダウンロードして、それらをエミュレートしたフロッピー（登録商標）に書き込む。そして、アップグレード・ユーティリティを動作させる。
【００６７】
診断ユーティリティ
システムは、エミュレートしたフロッピー（登録商標）またはエミュレートしたハード・ドライブに診断ユーティリティをダウンロードする。
【００６８】
フラッシュ9を有するブートLinux
この実施例は、Linuxを始動するために、Linuxブートローダを使用する。
【００６９】
VM実行環境
はじめに
本発明の態様は、ダウンロードおよびパーソナル・コンピュータ上の非常に多様なアプリケーションの実行を可能にするROM化可能な実行環境を作成する。条件は、以下の通りである：
・ネットワーク伝送速度は、アプリケーションがサーバからローカル実行へ、素早くダウンロードさせることができるように十分に速いこと。
・それらがダウンロードされると共に、そのアプリケーションが適合するに足りるRAMが存在すること。
・アプリケーションは、ディスクからページ・スワップすることなくRAMで動作することができること。
【００７０】
VMソフトウェア・スタック
図5は、本発明によるユーザのコンピュータ31でVMソフトウェア・スタックを示すブロック略図である。図5において、ソフトウェア・スタックはBIOSフラッシュ・メモリ20に保有された部分、および、ダウンロード50部分を包含する。スタックは、非VMアプリケーション51およびVMアプリケーション52から成る。従前のパーソナル・コンピュータBIOS 25およびBIOSブートローダ23bは、ほとんど変化しないままである：
・デフォルトで、BIOSブートローダ23bは、ハードディスク22からマスター・ブート領域（MBR）をロードして実行する
・HPA（隠蔽されたパーティション・エリア）が示され、BIOSによってサポートされる場合、BIOSはHPAコンテンツを実行することができる。
【００７１】
DVMブートローダに制御を渡すための第2のオプションは、PXEプロトコルをVMブートローダに組み込むこと、および、DVMオプションROMの標準のNICオプションROM（PXEプロトコルを含む）と入れ替えることである。このことは、BIOSカスタマイズおよび必要とされる全体のROMスペースの量を減らす。
【００７２】
ホットキー、タイマまたはその他の機構は、BIOSブートローダがVMブートローダ23aを起動することを可能にする。VMブートローダは、EPG 53をダウンロードするために、VMアプリケーション・サーバ33にイーサネット（登録商標）42を介して接続する。EPGは、ユーザが直面する第1のグラフィカル・ユーザ・インタフェース（GUI）である。GUIは、利用可能なアプリケーション（システムに対するローカルかそれともインターネットのリモート）の選択を表示する。EPGは、現に実際にVMアプリケーションの他のタイプである。一実施例において、ダウンロードされるVAとは対照的に、EPGは、フラッシュBIOSのローカルである。しかしながら、潜在するサイズ制限および拡張性のために、EPGは、これに代えて2つのレベルのEPGから構成させてもよい。ベーシックEPGは、フラッシュBIOSに格納され、エンハンスト・バージョンは、その他のVAのようにダウンロードされる。エンハンスト・バージョンがあるとはいえ、このことはルック＆フィールの観点からユーザに透過的である。ユーザは、初期画面上かそれとも下位レベルのメニューに隠蔽されるより多くの選択肢を有する。ベーシックまたはエンハンストEPGの表示は、ユーザに透過的で、ネットワーク接続性に基づいてアップデートされる。
【００７３】
EPGが呼び出されたあと、エンド・ユーザには、利用可能なアプリケーションのリストが示される。アプリケーションは、例えば、以下を包含する：
・VMアプリケーション・サーバ33からダウンロードできる非仮想マシン・アプリケーション。
・VMアプリケーション・サーバ33からダウンロードできる仮想マシン・アプリケーション。これらは、ハイパーバイザ54またはVMプレーヤのダウンロードを必要とする。
・DVMアプリケーションは、USBフラッシュ・デバイス24またはハードディスクHPA 22に存在する。
【００７４】
VMブートローダ
モジュール
図6は、本発明によるVMブートローダ23aおよび関連するモジュールを示すブロック略図である。本実施例において、VMブートローダは、ユーザのローカル・エリア・ネットワーク63を介してDHCPサーバ62またはゲートウェイ61に通信で接続されているユーザのパーソナル・コンピュータ31に存在する。ユーザのパーソナル・コンピュータは、GUI 13、ファイル・システム85、USBドライバ86およびNICドライバ87を備える。インターネット接続42は、ユーザをDVMサーバ33に接続する。VMブートローダは、本実施例において、以下のモジュールを備える：
【００７５】
アプリケーション列挙子64：USBドングル、または、VMサーバ上の利用可能なVMアプリケーションを探す。このことは、EPGのベーシック・バージョンを小さいスペースに適合させるためである。EPGのフルバージョンは、このモジュールの使用を導入することもできる。
【００７６】
アプリケーション・ランチャ65：既にメモリへロードされたアプリケーションを実行する。これがどのように行われるかは、アプリケーションの実行環境要求よる。
【００７７】
ダウンローダ66：VMサーバからメモリへアプリケーションをダウンロードする。アプリケーションがメモリ内で、どのようにレイアウトされるかは、その実行環境要求よる。ダウンローダも、ダウンロードされたペイロード（例えば、MD5を介して）などの完全性をチェックする。
【００７８】
認証67：VMサーバによって認証する。
【００７９】
ネットワーク構成GUI 68：エンド・ユーザがインターネットにアクセスするために、VMブートローダを構成することができるように、ユーザ・インタフェースを提供する。
【００８０】
ネットワーク構成ローダ69：ネットワーク構成をロードする。
【００８１】
フロッピー（登録商標）・エミュレータ74：フロッピー（登録商標）からのブートをエミュレートする。フロッピー（登録商標）・イメージは、拡張メモリにある。エミュレーションは、INT40hおよび／またはINT13hをフックすることによって行われる。このコンポーネントは、フロッピー（登録商標）・ブートのように、プロトコルおよびハンドシェークがメモリー・セクションからのブートを可能にするために開発されることを必要とする拡張メモリ内の1.44Mフロッピー（登録商標）のイメージである。
【００８２】
システム構成バックアップおよびリストア75：何かが動作して、後にシステム構成をリストアする前に、システム構成をセーブする。これらは、主にシステム・デバイス、割り込みベクトルなどである。VMブートローダが動作する前後、アプリケーションは動作する前後などで、これは使用される。他の実施態様において、システム構成は、リストア機能を動作して、アプリケーション・ローダを実行する。
【００８３】
デバイス・ドライバ・マネージャ76：これは、ハードウェア・プラットフォームに特有のLinuxデバイス・ドライバ・モジュールが格納されるところである。アプリケーションがLinux OSを有する場合、ここからデバイス・ドライバを検索して、それらをカーネルへロードする。
【００８４】
ユーザ・ログイン・マネージャ77：ユーザがVMサーバにログインすることを可能にする。これは、サーバ・ベースの永続的な格納の利用を可能にしてもよい。
【００８５】
GUIライブラリ：標準のルック＆フィールを提供する。
【００８６】
DHCP 78によるネットワーク／TCP/IPスタック。
【００８７】
CPUモード・スイッチャ79：x86 CPUをリアルからプロテクトモード、および、元に戻すようにスイッチする。
【００８８】
OSブートローダ81：ハードディスクからメインOSをブートする。
【００８９】
システム情報マネージャ82：例えば、SMBIOS 83から、システム情報を抽出して、VMサーバに送信する。
【００９０】
メモリ・リソース・マネージャ84：適切な位置にアプリケーションのダウンロードおよびレイアウトを可能にするために、メモリ・リソース（例えば、拡張メモリ）を管理する。
【００９１】
前記モジュールの大部分は、アプリケーションによって再利用させることが出来る。例えば、EPGは、選択されたアプリケーションをダウンロードするために、ダウンローダを使用する。そして、ダウンロードされたアプリケーションを起動するために、アプリケーション・ローダを使用する。
【００９２】
好ましい実施例の能力
組み込みOSの好ましい実施例は、以下の能力を有する：
ネットワーク
- NICドライバ・アベイラビリティ
- NICドライバの開発の簡略化
- DHCPによるTCP/IPスタック
- プロキシ・サポート
HDD
- NTFリード／ライト
- USBフラッシュドライブのUSBドライバ、または、
- USBフラッシュドライブへのINT13hアクセス
- USBフラッシュドライブ上のファイル・システムへのアクセス
o FAT16
o FAT32
- HPAアクセス
o FAT32
ビデオ
- テキスト
- グラフィクス
- アクセラレータ
オーディオ
- 必要でない
入力
- マウス
- キーボード
メモリ・アクセス
- ダウンロードしたアプリケーションの1MBを超えるアクセス
サーバ・インターフェース機能
-デジタル署名
- サーバによる認証
プレブートおよびポスト・シャットダウン・コード挿入
-割り込みベクトルのバックアップ
- 割り込みベクトルのリストア
【００９３】
VMアプリケーション
VMアプリケーションは、完全自己内蔵型バイナリ・ペイロードである。すなわち：
・VMアプリケーション・サーバからダウンロードされる
・USBフラッシュドライブからロードされる
・ハードディスクHPAからロードされる
【００９４】
完全自己内蔵型は、アプリケーションがそれ自体の実行環境を含むことを意味する。例えば、ウェブ・ブラウザ・アプリケーションは、オペレーティング・システム、ウェブ・ブラウザ・アプリケーションおよびその他のサポートしているファイルまたはユーティリティを包含する。
【００９５】
アプリケーションのタイプ
アプリケーションは、次のように分類することが出来る
・それらが、VMアプリケーションか否か
・実行環境のタイプ
これらの分類は、排他的でない。
【００９６】
VMアプリケーション
仮想マシン・アプリケーションは、ハイパーバイザが動作することを必要とする。
【００９７】
実行環境
いくつかの使用可能な実行環境がある。本願明細書における考察はこれらのうちの4つのみを考察する（但し、本発明は他のものも意図する）：
・エミュレートディスクによるリアルモード
・固定的なメモリ・アドレスによるリアルモード
・エミュレートディスクおよびラージ・ポスト・ブート・ペイロードによるリアルモード
・固定的なメモリ・アドレスおよびラージ・ポスト・ブート・ペイロードによるリアルモード
【００９８】
プロテクトモード・スイッチャへのリアルモードが上記の4つのケースのどれにも適合することができるので、プロテクトモード環境を考慮する必要がない。
【００９９】
エミュレートディスクによるリアルモード
図7は、本発明によるエミュレートディスクによるリアルモード操作のためのメモリスタック71の略図である。これを扱うために、DOSブート・プロセスをエミュレートする。ディスク・イメージ（すなわち1.44MB以上）のサイズのため、リアルメモリ73とは対照的に、ダウンロードされたアプリケーション・ペイロード70は、拡張メモリ72に格納される。フロッピー（登録商標）ディスク・エミュレータは、ディスク・イメージからのブートに使用される。この予想される展開の実施例は、アプリケーションがDOSのバージョン上で動作することである。ダウンロードされたアプリケーション・ペイロードは、アプリケーションおよびDOSファイル・システムを含むフロッピー（登録商標）ドライブ・イメージである。
【０１００】
固定的なメモリ・アドレスによるリアルモード
図8は、本発明による固定的なメモリ・アドレスによるリアルモード操作のためのメモリスタックの略図である。これは、ダウンロードされたアプリケーション・ペイロード80がリアルモード／DOSアドレス空間の中で適合するのに十分小さいケースである。アプリケーションは、そのアプリケーションに特有で、かつ、アドレスから実行される固定的なメモリ・アドレスにより、リアルメモリにレイアウトされる。
【０１０１】
エミュレートディスクおよびラージ・ポスト・ブート・ペイロードによるリアルモード
図9は、本発明によるエミュレートディスクによるリアルモード操作およびラージ・ポスト・ブート・ペイロードのメモリスタックの略図である。これは、ラージ・アプリケーションのブートを望むモードである。実施例は、Linuxベースのアプリケーションをブートしている。エミュレートディスクは、SYSLinuxのようなものを含んでいる。アプリケーションおよびOSペイロード90の実際のgzipで圧縮されたイメージ70は、拡張メモリにもロードされる。
【０１０２】
固定的なメモリ・アドレスおよびラージ・ポスト・ブート・ペイロードによるリアルモード
図10は、本発明による固定的なメモリ・アドレスによるリアルモード操作およびラージ・ポスト・ブート・ペイロード90のメモリスタックの略図である。これは、また、ラージ・アプリケーションのブートを望むモードである。実施例は、Linuxベースのアプリケーションをブートしている。SYSLinuxのフロッピー（登録商標）・イメージを使用する代わりに、固定的なリアルモード・メモリロケーションにロードされるカスタム・ユーティリティを有する。アプリケーションおよびOSペイロードの圧縮イメージは、拡張メモリにロードされる。リアルモード・ユーティリティは、OSペイロード、および、ロード／ブートLinuxカーネルを解凍する。
【０１０３】
実行環境含意
含意は、以下の通りである：
・VMブートローダ／アプリケーションの起動は、各タイプの実行環境を識別することができなければならない。この情報（各VMアプリケーションに関連される）は、VMサーバによって提供させてもよい。
・VMブートローダは、拡張メモリにアクセスすることができなければならない。
・ツールは、これらの実行環境のうちの1つに適合するために、アプリケーション・ペイロードをパッケージするために作成されなければならない。
【０１０４】
VMアプリケーション要件
要件は、以下の通りである：
・自身の実行環境を含まなければならない（例えば、オペレーティング・システム）
・RAMに完全に存在し、実行することができなければならない
・ローカルの永続ストレージを必要としてはならない。永続ストレージは、例えば、サーバ上で、ネットワークを通じて提供させてもよい。
【０１０５】
BIOSポスト後の操作順序
図11は、本発明によるBIOSポスト（110）のあとのプロセスを示すフローチャートである。図11において、ユーザがホットキー（112）を選択する場合、次に、プロセスはセービング・ステート（114）に進む。ブートローダがスタートし（116）、ネットワークが構成される（118）と、決定がなされる。そうでない場合には、GUIは、ユーザがネットワークインターフェースを構成することを可能にする（120）。さもなければ、システムは、サーバに接続する（122）。システムはサーバで認証し（124）、システムは接続がサーバで確立されることを確認する（126）。接続が検出される場合、システム情報はサーバに送信され（128）、アプリケーション・リストがダウンロードされる（130）。接続が確立されない（126）場合、システムは、USBデバイスを捜す（132）。同様に、ネットワーク接続が検出されるところで、アプリケーション・リストがダウンロードされた（130）あと、システムは、USBデバイスを捜す（132）。VMアプリケーションのリストはUSBデバイス（134）からコンパイルされ、アプリケーション・リストは作成される（136）。VMアプリケーションが利用可能である（138）場合、ユーザはアプリケーションを選択することができる（144）。それに応答して、システムは、システム・メモリのアプリケーションをロードし（146）、ブートローダをシャットダウンする（148）。そして、アプリケーションは、ブートされ（150）、ユーザはアプリケーションを使用することができる（152）。アプリケーションがシャットダウン（154）するときに、ステートはセーブされる（114）。BIOSポスト（110）の後、ホットキーが押されない（112）場合には、ステートは回復され（140）、デフォルトOSはハードディスク（142）からブートされる。例えば、ネットワーク接続性が不成功の場合、および、あらゆるUSBフラッシュ・デバイスで利用可能なVMアプリケーションがない場合には、システムはハード・ディスク・ドライブ上のデフォルトOSをブートする。
【０１０６】
本願においては、本発明は、好ましい実施例を参照して記載されているが、当業者は、直ちに、本発明の趣旨および範囲から逸脱することなく、本願において開示した応用を、他の応用で置換することができることを理解するであろう。したがって、本発明は、下記で含まれる請求の範囲に限定されるべきではない。
【符号の説明】
【０１０７】
10  ダウンロード・カーネル
11  ダウンロードinitrd
12  ブートLinux
13  ダウンロードGUI（スタートGUI）
14  ダウンロード・ライブラリ
15  ダウンロード・ベース・アプリケーション・ファイル
17  スタート・アプリケーション
18  アプリケーション・ファイル
20  BIOSフラッシュROM
21  拡張システム構成データ（ESCD）
22  内蔵ストレージ
23  ブートローダ
24  リムーバブル・ストレージ
25  BIOS
26  オンライン・ストレージ
27  仮想機器
28  コンテンツ
29  一般的な仮想機器コンポーネント
30  ヒストリ/クッキープロファイル
31  パーソナル・コンピュータ（DVMユーザ）
32  リダイレクト・サーバ
33  DVM・アプリケーション・サーバ
35  ファイル・サーバ
36  コンテンツ・サーバ
37  パートナー・サーバ
38  ローカル・サーバ・クラスタ
42  イーサネット（登録商標）
50  ダウンロード
51  非VMアプリケーション
52  VMアプリケーション
53  EPG
54  ハイパーバイザ
61  ゲートウェイ
62  DHCPサーバ
63  ユーザのネットワーク
64  アプリケーション列挙子
65  アプリケーション・ランチャ
66  ダウンローダ
67  認証
68  ネットワーク構成GUI
69  ネットワーク構成ローダ
70  アプリケーション・ペイロード
71  メモリスタック
72  拡張メモリ
73  リアルメモリ
74  フロッピー（登録商標）・エミュレータ
75  システム構成バックアップおよびリストア
76  デバイス・ドライバ・マネージャ
77  ユーザ・ログイン・マネージャ
78  DHCP
79  CPUモード・スイッチャ
80  アプリケーション・ペイロード
81  OSブートローダ
82  システム情報マネージャ
83  SMBIOS
84  メモリ・リソース・マネージャ
85  ファイル・システム
86  USBドライバ
87  NICドライバ
90  ポスト・ブート・ペイロード
91  固定的なメモリ・アドレス
【図１】
2009544072.tif 000002
【図２】
2009544072.tif 000003
【図３】
2009544072.tif 000004
【図４】
2009544072.tif 000005
【図５】
2009544072.tif 000006
【図６】
2009544072.tif 000007
【図７】
2009544072.tif 000008
【図８】
2009544072.tif 000009
【図９】
2009544072.tif 000010
【図１０】
2009544072.tif 000011
【図１１】
2009544072.tif 000012
【国際調査報告】
2009544072.tif 000013