|
||
|
仮想化ソフト「VirtualBox」をopenSUSE10.3上で動作させるここではオープンソースの仮想化ソフトVirtualBoxの手順について解説します。※openSUSE11.2へVirtualBox3.xをインストールする新しい情報があります 2010/03/06 ・VirtualBoxOSE 3.x ・VirtualBox3.x ・VirtualBoxのインストール ・仮想端末を使用するように設定する ・ネットワークを設定する ・Windowsをインストールするポイント ITの分野では近頃「仮想化」という話題が非常にホットです。 これは企業のみならず、一般の家庭に住むパワーユーザにさえ恩恵を与えてくれます。 それは最新のOSの上に、レガシーなOSを同時に動作させることで異なる環境を扱うことが出来ます。 企業においてはサーバの台数を減らして一台のサーバにすることでコストを削減したり、老朽化したハードウェアを捨ててシステムだけ最新のハードウェア上で動作させることでシステムの延命を図ったりします。 一般の家庭でも異なるOSを同時に動作させたり、セキュリティのチェックのための実験マシンを用意できます。 これはパソコンを二台所有しているのと同じ意味があります。 ただし気を付けてください。パソコンの性能も二倍必要であることを意味するのですから。 Linuxにおいてはもっと率直な効果があります。 それはLinux上でWindowsを動作させることで、Windowsアプリケーションを引き続き使うことが出来るからです。 異なるバージョンのLinuxを同時に動作させることも可能です。 仮想化ソフトには大別して二種類があります。 それは動作している仮想OSをバックグラウンドで動かす「サーバ向け仮想化ソフト」と、動作しているOSの画面をフォアグランドで動作させる「デスクトップ向け仮想化ソフト」です。 サーバ向け仮想化ソフトは、バックグラウンドで複数のサーバOSを動かす用途に適しています。普段はOSの画面が見えません。 ・Xen ・VMWare Server デスクトップ向け仮想化ソフトは、他のOSをウィンドウ内で動作させるのに適しています。 ・VMWare Player ・VirtualBoox 完成度という点ではVMWareのほうが一日の長があるのですが、ここでは発展途上のオープンソース「VirtualBox」を動作させるまでの手順を取りあげます。 というより苦労して動かしたのでその備忘録です。(ちなみにinnotekは2008年2月にSunに買収されました) VirtualBoxのインストールopenSUSE10.2でも動かないことはないですが、10.3のほうが簡単に動きます。まずVirtualBoxをダウンロードしてきます。 VirtualBoxにはバイナリパッケージ版と、USB機能やRDP機能の省かれたオープンソース版とがあります。 openSUSE10.3の「リポジトリの追加」にはVirtualBoxリポジトリがあるので、リポジトリを追加すればYaSTからインストールできるのですが、そちらからインストールできるのはオープンソース版(OSSEdition)です。 ここはVirtualBoxの本家からバイナリ版をダウンロードしてきましょう。 VirtualBox本家 特にopenSUSEのバージョン別にあるので、それぞれ合ったものを選びましょう。 ここでは10.3をダウンロードして、ローカルに保存します。 RPMをダウンロードしてきたら、クリックしてインストールしてはいけません。 というよりここでインストールを開始するとその後、なんかVirtualBoxの調子が悪いです。 コマンドラインからインストールしましょう。 >su #rpm -ivh VirtualBox-1.5.4_27034_openSUSE103-1.i586.rpm コマンドラインからインストールを実行すると、以下のように依存が足りない旨が表示されます。 これらをYaSTから一つずつインストールして解決していきます。見つからない場合はリポジトリを追加しましょう。 pam-devel libxalan-c.so.110 libxerces-c.so.27 ライブラリを追加後、VritualBoxパッケージを改めてインストールします。 インストール後、VirtualBoxのカーネルモジュールを実行する必要があります。 root権限でカーネルハックコマンドを実行します。 >su #/etc/init.d/vboxdrv setup するとデフォルト環境ではfailedが出ます。これはカーネルソースがインストールされていないからです。 YaSTからパッケージを選択してインストールします。 ソフトウェア管理で「フィルタ」に「パターン」を選択し、「Linuxカーネル開発」を選択します。 カーネルソースがインストールできたら、もう一度「/etc/init.d/vboxdrv setup」コマンドを実行すると成功します。 環境によっては時間がかかるかもしれません。 仮想端末を使用するように設定するスタートメニューの「システム」の中にVirtualBoxが追加されているので起動してみましょう。起動が確認できましたでしょうか。 仮想端末の中にインストールするOSのことを「ゲストOS」、本来動作している実物のOSを「ホストOS」と呼びます。 試しに仮想端末を作成しましょう。 まずは作成します。 ウィザードに沿って、マシンの名前、仮想ディスクなどを作成します。 仮想端末の作成後、起動させるとエラーが出ます。 どういうことでしょう。仕方ないですね。 メッセージをよく読むと「vboxusersにグループ追加しろ」みたいなことが書いてあります。 VirtualBoxはいろいろなシステムファイルにアクセスする都合上、使用するユーザは特別なグループに所属する必要があるのです。 YaSTの「セキュリティとユーザ」の「ユーザを作成あるいは編集する」を選択して、VirtualBoxを起動するユーザを選択し「編集」とします。 ユーザ情報から「詳細」を選択し、右側にあるグループ一覧から「vboxusers」にチェックを入れます。 グループ追加後は、一度ログアウトして再度ログインしないとグループ変更が有効になりません。 これでユーザがVirtualBoxを起動できるようになります。 VirtualBoxを起動します。 仮想端末を新規作成して、設定をクリックします。 またエラーがでます。 USBサブシステムのアクセスに失敗しました。 この様子ではVirtualBoxでUSBは使えそうにありません。 実際にプロパティのハードウェア情報を見ると、USBの項目はありません。 これはvboxusersがUSBデバイスにアクセスできないからです。 http://en.opensuse.org/VirtualBox_USB_Support USBへのアクセスを、openSUSEに設定してあげる必要があります。 まず「vboxusers」のグループIDを確認します。YaSTの「セキュリティとユーザ」の「グループを作成あるいは編集する」を選択します。 グループ一覧には「users」しか表示されていませんが、「フィルタの設定」でシステムグループを選択してシステムグループ一覧を表示します。 一覧からvboxusersを探し、グループIDを確認します。 この環境では108でした。 次にコマンドラインから「/etc/fstab」ファイルを編集します。もちろんシステムファイルなので、root権限で行う必要があります。 ここには通常、自動マウントする情報が記述されているのですが、ファイルの最終行に none /proc/bus/usb usbfs devgid=108 devmode=664 0 0 と記述します。 編集後、システムを再起動します。これでVirtualBoxの設定を確認するとエラーが消えて、ハードウェア情報にUSBコントローラが追加されています。 ですがまだ無効のままです。 USBを有効にする場合仮想マシンの設定から「USBコントローラを有効にする」にチェックを入れます。 ネットワークを設定する次にネットワークの設定です。VirtualBoxのネットワークにはNAT、内部、ホストインターフェイス(HIF)の三種があります。 仮想OS同士だけを通信させたければ「内部」を選択します。 仮想OSも普通のOS同様、外部と通信したければNATかHIFを選択します。 しかしNATを構築した場合は、ホストOSにルーティング機能を導入しなくてはなりません。LAN内の他のパソコンと異なるIPを使うことにもなります。 仮想OSを「起動しただけで実物のPCと変わりなく使いたい」というのであれば、ホストインターフェイスを選択します。 そこでホストインターフェイスを選択して、起動してみると…エラーが出ます。 内容を見ると、HOST_IFが初期化できないとかなんとか。 これは「ホストインターフェイスの設定」に使用できる有効なネットワークインターフェイスがないからです。 有効なインターフェイスを作成しましょう。 そう、ここからホストインターフェイスを使うための長い道のりが始まります。 仮想マシンのNICはブリッジポートを介して物理NICからネットワークへ接続します。 仮想マシンのための仮想NIC(TAP)を作成して仮想マシンに割り当て、ブリッジポートを作成し、ブリッジポートに仮想NICと物理NICを接続するという手順になります。 まずブリッジポートを作成するのに必要なソフトウェアをインストールします。 まだ諦めないでください。 VirtualBoxのスクリプトから仮想アダプタを作成します。VirtualBoxはこのアダプタを使って通信をします。 #VBoxAddIF vbox0 username ここではvbox0という仮想NICを作成しています。使用するusernameはVirtualBoxを実行するユーザ名を使用します。 ここでうっかりrootを使用するとroot権でインターフェイスが作られてしまい、一般ユーザで使用するときに初期化が失敗してしまいます。 作成したら、ifconfigで作成できていることを確認します。 ifconfigで見えない場合はまだアクティブになっていない状態です。ifconfig -aとすると見えます。 ifconfig vbox0 upとしてアクティブにします。 ゲストOSが外部と通信するためにはホストOSのネットワークインターフェイスにVirtualBoxのための仮想インターフェイスを作成して、それを連結(ブリッジ)させる必要があります。 そのためにはLinuxにネットワークをブリッジさせるbridge-utilsというブリッジ用のソフトウェアをインストールします。 するとbrcntlというコマンドが利用可能になります。 br0というブリッジを作成します。 #brctl addbr br0 ブリッジの一端に先ほど作成したvbox0を連結します。 #brctl addif br0 vbox0 ブリッジのもう一端にホストのインターフェイスを連結します。 #brctl addif br0 eth0 brctl showで連結できていることを確認します。 最後に物理インターフェイスのIPアドレスを消し、br0にホストOSのIPアドレスを割り当ててアップさせます。 #ifconfig eth0 0.0.0.0 up #ifconfig br0 192.168.1.99 up 仮想端末にネットワークアダプタを設定します。 ですがここでなぜかホストOSがデフォルトゲートウェイを見失ってしまいます。 コマンドからデフォルトゲートウェイを指定します。 #route -F add -net 0.0.0.0 gw 192.168.1.1 ちなみにブリッジは再起動すると消えます。毎回コマンドを打つのが面倒なら、VirtualBoxの起動時にスクリプトを使用する必要があります。 あるいはinit.dにブリッジを作成するスクリプトを配置します。 もちろんゲストOSのネットワーク設定は、ゲストOS内で行います。 ようやく準備が整い、ゲストOSをインストールします。 ところがゲストOSがDHCPを取得できなかったり、外部と通信できなかったりします。 なぜでしょう。 実は単純な話なんです。それはホストOSのファイアウォールが、ゲストOSへの転送を遮断しているのです。 本当ならポート単位で検討すべきなのですが、ここではてっとり早くファイアウォールを無効にしましょう。 ファイアウォールを無効にするとホストOSであるLinuxも無防備になるので気をつけましょう。 Windowsをインストールするポイントトラブル:Windowsをインストールしようとすると、画面がブラックアウトしたまま停止してしまう対処 「設定 高度 拡張機能」のIO APICのチェックを外す必要があります。 (そうしないとインストーラが巧く起動しません) (しかしインストールファイルをコピーして再起動した後、Windowsのインストールウィザードが完了するためにはチェックが要ります) ・APCIのチェックを外す(デフォルト) ・Windowsのインストールを開始(ファイルのコピー) ・再起動 ・ここで仮想マシンの電源を落とす。APCIのチェックを入れる ・Windowsのインストールウィザードが走り出す ・インストールウィザードを完了する。 VirtualBoxのマニュアルには「WindowsはIO APICにチェックいれる必要がある」と読み取れる部分があります。 トラブル:Windows2000のインストール時に何度も再起動してしまう 対処 ディスクの遅延を変更する必要があります。 VirtualBoxのユーザマニュアルにWindows2000について「Windowsのバグで、ディスクに書き込み遅延を設定してやらないと、Windowsのインストール中、とくにコンポーネントのコピーの部分で落ちて、再起動を繰り返します」とあります。 VirtualBoxを使うユーザで以下のコマンドを実行して、ディスク書き込みの遅延情報を変更します。 #VBoxManage setextradata VirtualMachineName "VBoxInternal/Devices/piix3ide/0/Config/IRQDelay" 1 コマンド実行後にエラーが出るようなら、再起動してもう一度実行します。 これでインストール中に再起動してしまうトラブルを回避します。 トラブル:「comオブジェクトの作成に失敗」というエラーが出るよう 対処 /tmp/.vbox-username-ipcディレクトリをrootから削除しましょう。 このように、VirtualBoxの動作は長い道のりになります。 |
|