Sun xVM VirtualBox

http://www.virtualbox.org/

Sunに買収されたドイツのInnoTek社が開発しているパソコンの仮想化ソフト。
最新バージョンは 2.0.2

 

特徴・感想?

初期設定

ホストへ本体のインストール

Downloads からホストOSに合ったファイルをダウンロード。


Linux版 インストール後の共通設定
VirtualBox を使用するユーザは vboxusers グループに所属する必要がある。設定はGNOMEメニューにある「ユーザーとグループ」から行えば良い。コマンドでサクッとするなら

# gpasswd -a ユーザ名 vboxusers

設定後は一度ログアウト

仮想マシンの作成

最初に「新規」から仮想マシンの作成を行う。OSのタイプと割り当てるメモリの量、仮想ハードディスクのサイズを決める。メモリは推奨量より多目にした方が良い。

その他の「設定」

ゲストOSのインストール

「起動」を押すと仮想パソコンが起動するので、事前にインストールCDをドライブに入るかisoファイルの設定をしておく。後は通常通りにセットアップ。最初に表示される注意書きは“右Ctrlキーでゲストの画面から抜ける事を忘れるな”という意味。

ゲストOSにGuest Additionsをインストール

ゲストに専用のドライバなどを入れて、以下の機能を有効にする。

マウスカーソルの透過的な移動
シームレスウィンドウ
グラフィックのパフォーマンス向上
(大きい解像度の画面表示が可能に)
ホストと時刻の同期
共有フォルダ
クリップボードの共有
(guest<->hostに文字列のコピー・貼り付けが可能に)
Automated Windows logons (GINAの自動認証?)

ゲストOSの起動中に「デバイス」→「Guest Additionsのインストール」を押すと、CDドライブにセットアップツールがマウントされるので、そこから導入する。

そして /media/VBOXADDITIONS_version/VBoxLinuxAdditions-x86.run を実行して、エラーが無ければ再起動。カーネルを変更するたびに再インストールが必要なので注意。

ネットワークドライバのインストール(ゲストがVistaの場合)

「Guest Additionsのインストール」を押した後のCD-ROMドライブの中に AMD_PCnet\netamd.inf があるので、Vistaの「デバイスマネージャ」→「イーサネットアダプタ」からドライバソフトウェアの更新ウイザードを起動して読み込む。

Additionsといっしょに入るようになったので不要に

共有フォルダ

ホストのファイルをゲストからアクセスする。VMwareのようなドラッグ&ドロップはできない。

ホストOSの設定

「共有フォルダ」でアクセスを許可する場所を決める。フォルダ名は↓で使うので覚えておく。

ゲストOSの設定

ちなみに Fedora8+kernel-2.6.24では

/sbin/mount.vboxsf: mounting failed with the error: No such device

とエラーが出て使えない。私だけ?

普通のネットワーク共有機能を利用する

上のようなVirtualBoxの共有機能ではなく、元々Windowsに備わっている共有(Linuxならsamba)でもファイルのやり取りはできる。\\10.0.2.2\共有名 でアクセス可能。でも転送速度は遅いようだ。

スナップショット

仮想マシンの状態を保存する機能。

2世代以上前の状態に戻るには最新の物から一つずつ消さないといけない。

Seamless windows(シームレスウィンドウ)

Guest Additionsを入れたWindowsゲストで右Ctrlキー+Lキー、またはメニューの「仮想マシン」→「シームレスモード」を押すと、ゲストのデスクトップなどが消えるSeamless Modeになる。実行中のウィンドウのみが残り、あたかもホスト上でアプリを動かしているように表示されて便利。

戻すときも右Ctrlキー+Lキー

USB機器

1. VirtualBoxの起動前にUSB機器を接続しておく
2. 仮想マシンの設定「USB」→「新規フィルタ(+)」で使用する機器を追加
3. ホストでハードウェアの安全な取り外しをして、USBを抜く
4. 再び接続するとホストで新しいハードウェア検索ウィザードが立ち上がるので、ホスト用のドライバを入れる。
5. ゲストを起動するとUSB機器が認識。普通のドライバを入れる。

という手順が正しいらしいが、私の環境では最初の「新規フィルタ(+)」に何も認識されなかった。いろいろ試した結果、以下のようにして解決。

1. USB機器を挿してゲスト起動中に「デバイス」→「USBデバイス」
2. ホストで新しいハードウェア検索ウィザードが立ち上がるのでドライバを入れる
3. 終わったらゲストの電源オフ。ホストを再起動
4. これで「新規フィルタ(+)」にUSB機器が表示

USBメモリ、ハードディスクが使えることを確認。プリンターもいけるらしい。

≪注意≫
↑は昔のバージョンの話で、最近のはもっとすんなりいけるかもしれない。

VMDK image files

VirtualBoxはVMwareのディスクイメージ(*.vmdk)の読み込みに対応している。WindowsXPが入ったイメージファイルで試したところ、OSの起動もできた。ただし、VMDKを使うとスナップショット作成が下のように失敗する。

Cannot take a snapshot when there is a Writethrough hard disk attached ('winxp.vmdk').

VMwareから完全に移行するなら NHC で vmdk を vdi に変換するのが得策。

NHCでうまくいかない場合は qemu-img と vditool というツールで変換できるらしい。

ちなみにver-2.0.0 からVirtualPCの vhd も使えるようになったらしい。

リモートデスクトップ(RDP)

"VirtualBox Remote Desktop Protocol (VRDP) Server" という機能を有効にすると、仮想マシンの画面を遠隔操作することができる。ゲスト停止中に「設定」→「リモートディスプレイ」→「VRDPサーバを有効にする」にチェックを入れて、「サーバーのポート番号」を覚えておく。認証方法の違いは以下の通り

Null - 認証しない。パスワード無しで接続
external(外部)- ホストのアカウントで認証
guest(ゲスト)- ゲストのユーザアカウントで認証という意味だが、まだテスト中。

ポートを閉じていない事を確認したら準備完了。ゲストの起動中に接続ソフトで「ホストのアドレス:ポート」を指定すればOK。Windowsなら普通にリモートデスクトップ接続。

Linux は下のようにする

$ rdesktop ホストのアドレス:ポート (認証がNull)
$ rdesktop -u ユーザ名 ホストのアドレス:ポート (ウィンドウが消える?)

Windowsで自分自身にデフォルトの3389ポート接続すると

『クライアントは接続できませんでした。既にこのコンピュータのコンソールへ接続しています。新しいコンソール セッションは確立されません。』

と言われて繋がらない。3390に変更すると良さげ(localhost:3390)

Tips

仮想ディスクの丸ごとコピー

ハードディスクファイル(.VirtualBox/VDI/*.vdi)を別名にコピーし、そのまま違う仮想マシンで使おうとすると、下のようなエラーメッセージが出る。

ハードディスク HD.vdiの登録に失敗しました。
A hard disk with UUID {8f967a2c-a07a-43b8-91c3-bd51bb657b86} or with the same properties ('/home/sawa/.VirtualBox/VDI/aa.vdi') is already registered.
終了コード: NS_ERROR_INVALID_ARG (0x80070057)
コンポーネント: VirtualBox
インターフェース: IVirtualBox {557a07bc-e6ae-4520-a361-4a8493199137}

vdiには固有のID番号が入っていて、それが重複すると駄目らしい。複製するには下のようなコマンドを使う必要あり。

$ VBoxManage clonevdi old.vdi new.vdi

Windowsでのやり方はVirtualBoxでvdiファイルのコピーを作る方法が詳しい。

可変サイズのハードディスクを未使用分だけ縮小

VMwareやVirtual PCと同じく、ファイルを削除してもそのままではVDIファイルは縮まない。今後ディスクに書き込み保存をしない(終了毎にスナップショットの状態に戻す)のであれば、下のようにして一度小さくしておくといい感じ。

最初に一旦全てのスナップショットを消去。そして仮想マシンを起動し、空き領域をゼロで埋める。複数のドライブ・パーティションがあるなら各々に行う。

終わったらゲストをシャットダウンして次はホストでコマンド作業。

Linuxのディスクファイルはこれをしてもほとんど小さくならなかった。謎

簡単な仮想ディスク圧縮機能が欲しいところ

Typing special characters

右Ctrl + Del to send Ctrl+Alt+Del (to reboot the guest).
右Ctrl + Backspace to send Ctrl+Alt+Backspace (to restart the graphical user interface of a Linux guest).
右Ctrl + F1 (or other function keys) to simulate Ctrl+Alt+F1 (or other function keys, i.e. to switch between virtual terminals in a Linux guest).

実機に入ってるOSをそのまま使う

ブリッジネットワーク

ネットワークアダプタをホストインターフェース(TAP)にしてホゲホゲするとブリッジ接続できるらしい。

Windows 2000にインストール

ver-1.6からWindows 2000をサポートしなくなったが、無理矢理動かしている人がいる

その他困ったことのメモ

VirtualBoxのインストール時に「No precompiled module for this kernel found」(Linuxホスト)

必要な物が入ってない状態でインストールすると、下のようなエラーが表示される。

No precompiled module for this kernel found -- trying to build one. Messages emitted during module compilation will be logged to /var/log/vbox-install.log. Compilation of the kernel module FAILED! VirtualBox will not start until this problem is fixed. Please consult /var/log/vbox-install.log to find out why the kernel module does not compile. Most probably the kernel sources are not found. Install them and execute /etc/init.d/vboxdrv setup as root.

エラーが出てもインストールは完了している。必要な物をインストールした後、/etc/init.d/vboxdrv setup

カーネルのアップデートをすると動かない(Linuxホスト)

kernelを変えて再起動したら

Starting VirtualBox kernel module [FAILED]
(No suitable module for running kernel found)

のように vboxdrv が失敗し、VirtualBoxを動かすと

WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (2.6.25.14-108.fc9.x86_64) or it failed to load. Please recompile the kernel module and install it by sudo /etc/init.d/vboxdrv setup. You will not be able to start VMs until this problem is fixed.

VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. Re-setup the kernel module by executing '/etc/init.d/vboxdrv setup' as root.
VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).

というエラーが出る場合は root で

# /etc/init.d/vboxdrv setup

をする必要がある(ver-2.0から自動で行われるようになった)

You are not a member of the "vboxusers" group. (Linuxホスト)

使用するユーザが vboxusers グループに属していないと以下のエラーが表示される。

WARNING: You are not a member of the "vboxusers" group. Please add yourself to this group before starting VirtualBox. You will not be able to start VMs until this problem is fixed.

The VirtualBox kernel driver is not accessible to the current user. Make sure that the user has write permissions for /dev/vboxdrv by adding them to the vboxusers groups. You will need to logout for the change to take effect..
VBox status code: -1909 (VERR_VM_DRIVER_NOT_ACCESSIBLE).
終了コード: 0x80004005

インストール後の共通設定

スナップショットの削除ができない(Linuxホストのみ?)

私だけなのかもしれないが、下のようなエラーが表示されて一部のスナップショットの消去ができなくなる時がある。

仮想マシン"WinXP"の最新のスナップショットと状態の破棄に失敗しました。
Could not copy the state
One or more hard disks belonging to other machines are based on the hard disk
file '/home/user/VirtualBox/Machines/vista/Snapshots/{c003b934-757b-4baf-2a9f-b30087a19300}.sav' to '/home/user/VirtualBox/Machines/vista/Snapshots/{75ae0938-5a74-41a5-e59c-f37186b0655b}.sav' (VERR_ALREADY_EXISTS).
終了コード: NS_ERROR_FAILURE (0x80004005)

この場合は {75ae0938-5a74-41a5-e59c-f37186b0655b}.sav を手動で削除すると直る。

ゲストにWindows 98

Windows98をゲストOSとして動かす時はsafeモードで起動し、config.sys から EMM386.EXE 行を消す必要あり。

それと妙に重かったりするが、User FAQの下の方に少し情報がある。グラフィックドライバもある?

破棄(Discard)の意味

メニューの「破棄」とは『仮想マシンの状態を保存』などで終了した状態(サスペンド)を無効にし、電源ボタンの長押しで電源を切った事にするという意味らしい。最初意味が分からなかった。

ホスト(共有フォルダ)にある動画ファイルが再生できない

Linuxホスト <-> WindowsXPゲスト で \\VBOXSVR にある wmv を開くと「問題が発生しました」と表示される。手元にコピーしてからなら問題無い。
でもVistaなら大丈夫なようだ。スペック不足でまともに観られませんが。

クリップボードが共有されない場合がある(Linuxホスト)

あれれ?

ハードディスクの作成に失敗する(ver 2.0.0)

2.0.0 には大きめのディスクファイルを作ろうとすると、セグメンテーション違反で落ちるバグがある。コマンドで作れば問題ない。

5GBの可変サイズのイメージ作成
$ VBoxManage createvdi -filename HD.vdi -size 5120 -register
固定サイズなら -static を付ける 

参考ページ

更新日 2010-03-30