Oracle VM Guest Additionsをインストールするには、まず一連のパッケージをyumリポジトリから仮想マシンにダウンロードします。 パッケージは、Unbreakable Linuxネットワーク(ULN)またはOracle Linux Yum Serverからダウンロードできます。 必要なパッケージをダウンロードしたら、yum installを使用してインストールします。
次の表は、Oracle VM Guest Additionsのパッケージを示します。
パッケージ | 説明 | 必須またはオプション |
|---|---|---|
| Oracle VM APIのサポートを追加するライブラリ。 | 必須 |
| Oracle VM APIの開発者サポートを追加するライブラリ。 | オプション |
| 構成イベントを処理し、仮想マシンとOracle VM Managerとの間のメッセージの送受信を可能にするデーモン。 | 必須 |
| PythonのJSONエンコーダおよびデコーダ。 | 必須 |
| Oracle VM APIカーネル・インフラストラクチャと通信するライブラリ。 | 必須 |
| 基本的なオペレーティング・システム構成スクリプト。 | 必須 |
| 仮想マシンの認証を構成するためのスクリプト。 | オプション |
| 仮想マシンの日時設定を構成するためのスクリプト。 | オプション |
| 仮想マシンのファイアウォールを構成するためのスクリプト。 | オプション |
| 仮想マシンのネットワーク設定を構成するためのスクリプト。 | オプション |
| 仮想マシンのSELinux設定を構成するためのスクリプト。 | オプション |
| 仮想マシンのssh設定を構成するためのスクリプト。 | オプション |
| 仮想マシンのシステム設定を構成するためのスクリプト。 | オプション |
| 仮想マシンのユーザー設定を構成するためのスクリプト。 | オプション |
Microsoft Windowsゲストの場合、Oracle VM Guest AdditionsはOracle VM Paravirtual Driversに含まれています。 ゲストの追加の実装は、次のコンポーネントで構成されています:
vmapi.dll: 呼び出し可能なインタフェースを公開する動的リンク・ライブラリovmsvc: イベントとメッセージを送受信するサービスxenpci: ハイパーバイザとやり取りするドライバovmcmd: ゲストの追加を呼び出すためのコマンド
vmapi.dll
vmapi.dllは、Windowsのゲスト・オペレーティング・システムのWindowsアプリケーションとxenpciドライバ間の通信用のインタフェースを公開します。 アプリケーションはこのライブラリをロードし、エクスポートされた関数を呼び出してxenpciにアクセスします。 通常、デバイスI/Oコントロール(IOCTL)は、xenpciドライバと通信するために使用されます。 次の表に、関数名とその説明を示します:
|
機能 |
説明 |
|---|---|
|
OVMAPI_Register |
OVMAPIを初期化し、オプションでコールバックを登録 |
|
OVMAPI_ParamGetValue |
OVMAPIエンジンに格納されている名前と値のペアを取得 |
|
OVMAPI_ParamSetValue |
名前と値のペアを作成または変更 |
|
OVMAPI_Subscribe |
アプリケーション登録イベント・ハンドラで特定のイベントを受信 |
|
OVMAPI_UnSubscribe |
アプリケーションが登録したイベント・ハンドラ内の特定のイベントをブロック |
|
OVMAPI_EventComplete |
後でステータス・コードを確定してイベントを完了 |
|
OVMAPI_ParamGetValueSize |
パラメータ値のバイト単位のサイズを取得 |
|
OVMAPI_GetSessionFileDescriptors |
ドライバへの特別な呼び出しに使用する内部ファイル記述子を取得 |
|
OVMAPI_UserEventPublish |
アプリケーション固有のイベントを管理サーバーおよび同じVM上で実行されている他のOVMAPI対応アプリケーションに送信 |
|
OVMAPI_ParamGetAllNames |
アプリケーションにとって興味のある既存のパラメータをブラウズ |
|
OVMAPI_ParamGetCount |
既存のパラメータの数を取得 |
|
OVMAPI_UnRegister |
OVMAPIの使用を終了 |
ovmsvc
ovmsvcサービスは、Windows VMの起動時に自動的に開始されます。 このサービスをインストールまたはアンインストールするコマンドは、それぞれovmsvc installまたはovmsvc uninstallです。 ovmsvcサービスは、Oracle VM Managerから送信されたメッセージを監視し、Windows VM固有の情報(オペレーティング・システムのバージョンやVMのIPアドレスなど)を送信します。 vmapi.dllを使用してWindowsゲストとOracle VM Manager間の通信を実装します。 次の図は、Windows VM内で実行されているovmsvcを示しています。

ovmsvcが起動すると、xenpciデバイスが開き、メッセージが処理されるコールバック関数が登録されます。 vmapiメッセージに対応するイベントを監視するスレッドが作成されます。 ovmsvcの現在のコールバック機能は、VMシャットダウン・メッセージを処理します。スナップショットなどの他のメッセージは、追加機能として実装できます。
xenpci
Oracle VM Managerでメッセージを交換するアプリケーションは、メッセージを処理するためにいくつかのIOCTLを実装するxenpciドライバを使用します。 xenpciドライバは、Xenドメインで共有されるメモリー領域であるxenstoreに直接アクセスします。 ovmsvcは、xenstoreとの間でVMメッセージを送受信するためのAPI関数を呼び出します。
xenpciドライバは、xenbus_watch関数を使用して着信メッセージをモニターします。 xenpciドライバ初期化はxenstoreキー"control/oracle-vmapi/to-guest/last-write"に時計機能を登録します。 Oracle VM Managerによって送信されたメッセージは、このxenstoreキーに設定されます。 このxenstoreキーが変更されると、xenpciのウォッチ機能が起動されます。 ウォッチ関数はイベントをチェックして送信し、モニター・スレッドはイベントを認識し、コールバック関数はAPIメッセージを処理します。
ovmsvcは起動プロセス中にWindows VMメッセージを送信し、xenpciのIOCTLを使用してxenstoreキー"control/oracle-vmapi/from-guest/%d/%s"を書き込みます。 ovmsvcは定期的にメッセージを更新し、ゲストIPアドレスなどの情報をゲストからOracle VM Managerに同期させます。

