作成開始 : 平成24年09月05日(水) 最終更新 : 平成24年09月09日(日)

VirtualBox 仮想マシンの設定・起動


1.ゲストOS用のISOイメージ保存

現在超々低スペックなノートPCで使用している環境(FreeBSD 4.11 RELEASE)を仮想化したいので、以下のようにして取得します。
ログインは、先に vboxusers グループとして作成した vbox です。
# ISOイメージ保存ディレクトリの作成
$ mkdir iso

# カレントディレクトリを iso に移動
$ cd iso

# ISOイメージのダウンロード
$ fetch ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/ISO-IMAGES/4.11/4.11-RELEASE-i386-disc1-gnome.iso

2.仮想マシン(VM)の作成

# ホームデイレクトリに移動
$ cd

# 仮想マシン名を delegate として作成
$ VBoxManage createvm -name delegate -register
こんな感じに返ってきました。

Virtual machine 'delegate' is created and registered.
UUID: 9661857f-3a08-4cff-9a5c-36666442f2f3
Settings file: '/home/vbox/VirtualBox VMs/delegate/delegate.vbox'
# メモリ容量を設定 CPU数は(デイフォルト)1、フレームバッファ容量指定せず
# CPU数指定時は Ex.--cpus 2、フレームバッファ容量指定は Ex.--vram 32 とかを追記
$ VBoxManage modifyvm delegate --memory 128

# おまじない CPUが2以上の時は --ioapic on とする。
$ VBoxManage modifyvm delegate --acpi on

# NICを(NATでなく)ブリッジモードで設定 アダプタは ifconfig で確認する
$ VBoxManage modifyvm delegate --nic1 bridged --bridgeadapter1 em0

# vdi 保存フォルダの作成
$ mkdir vdi

# HDD作成 size は MB 今回は3GBに設定 (現行delegate機は 2.1GB)
$ VBoxManage createhd --filename vdi/delegate.vdi --size 3072
こんな感じに返ってきた。

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: d8229bf2-65d8-4d1a-84d5-196f693073be
# IDE コントローラーを VM に追加。
$ VBoxManage storagectl delegate --name ide --add ide

# HDDにアタッチ
$ VBoxManage storageattach delegate --storagectl ide --port 0 --device 0 --type hdd --medium vdi/delegate.vdi

# ゲスト OS のインストールディスクをアタッチ
$ VBoxManage storageattach delegate --storagectl ide --port 1 --device 1 --type dvddrive --medium iso/4.11-RELEASE-i386-disc1-gnome.iso

# VM を VNC (port 5900) 付きで起動
$ VBoxHeadless --startvm delegate --vnc --vncport 5900
(パスワード付の時は VBoxHeadless --startvm delegate --vnc --vncport 5900--vncpass abcde とかします)
こんな感じに返ってきた。(しまったバックグラウンドで指定すればよかった)

Oracle VM VirtualBox Headless Interface 4.1.20_OSE
(C) 2008-2012 Oracle Corporation
All rights reserved.

08/09/2012 20:32:44 Listening for VNC connections on TCP port 5900
08/09/2012 20:32:44 Listening for VNC connections on TCP6 port 5900
Set framebuffer: buffer=2a56c000 w=800 h=600 bpp=32
Set framebuffer: buffer=2d800000 w=640 h=480 bpp=32
Set framebuffer: buffer=2e404000 w=720 h=400 bpp=32
・・・で、VNCビューワで接続すると、下のようになっていました。
インストール開始です。
インストール1回目でNICをリンクアップしたらいきなりリブートしてしまいました。
デバイスは pcn0 です。
何度かチャレンジして見た目正常に起動しましたが、外部へpingできません。
自分自身では ping 応答します。
・・・とりあえず継続しました。
# インストールが完了したら、インストールディスクをデタッチします。(CDをイジェクトするイメージかな?)
$ VBoxManage storageattach delegate --storagectl ide --port 1 --device 1 --type dvddrive --medium none
下のようなエラーが出て外せない。んーどうしよう。

VBoxManage: error: Controller 'ide' does not support hotplugging
VBoxManage: error: Details: code VBOX_E_INVALID_VM_STATE (0x80bb0002), component SessionMachine, interface IMachine, callee nsISupports
Context: "DetachDevice(Bstr(pszCtl).raw(), port, device)" at line 362 of file VBoxManageStorageController.cpp
そのままだとまた上のようになるのでとりあえず、インストール完了後のブート画面で「F12」を押して HDDから起動 を選択して起動させました。
VNCビューワ上で 一旦、shutdown してみました。

# shutdown -p now

VNCビューアを閉じて、VNC付で起動していたVMを Ctrl+C で終わらせてみました。

そして、インストールディスクをデタッチします。
$ VBoxManage storageattach delegate --storagectl ide --port 1 --device 1 --type dvddrive --medium none

今度は外せたみたいです。
では、もう一度 VM を VNC (port 5900) 付きで起動します。

$ VBoxHeadless --startvm delegate --vnc --vncport 5900

・・・で、VNCビューワで接続してみます。

ちゃんと起動してきました。しかし、やっぱり ping応答しません。
そこで、VNCビューアを閉じて、VNC付で起動していたVMを Ctrl+C で終わらせ NIC の設定を次のようにしてみました。

$ VBoxManage modifyvm delegate --nic1 bridged --bridgeadapter1 em0 --nicspeed1 1000000

そして、VM を VNC (port 5900) 付きで起動します。

$ VBoxHeadless --startvm delegate --vnc --vncport 5900

今度は、pingも通るしクライアントPCからSSHで接続ができました。

この時の仮想OS上の /etc/rc.conf にあるネットワーク設定は次のようになっていました。

ifconfig_pcn0 = "inet 192.168.1.8 mask 255.255.255.0" で ifconfig でも pcn0 でした。

しかし、VNCビューワ上で仮想OSをリブートしたらエラーで正常にOSが起動してきません。しまいには panicエラーです。

そこで、仮想OSをシャットダウンし、VNC付で起動していたVMを Ctrl+C で終わらせてNIC の設定を次のようにしてみました。
nictypeはホストOSの dmesg で確認しました。

$ VBoxManage modifyvm delegate --nic1 bridged --bridgeadapter1 em0 --nictype1 82540EM --cableconnected1 on

VM を VNC (port 5900) 付きで起動します。

$ VBoxHeadless --startvm delegate --vnc --vncport 5900

・・・で、VNCビューワで接続してみます。

ちゃんと起動してきましたが、ping通りません。仮想上の/etc/rc.conf にあるネットワーク設定は次のようになっていました。

ifconfig_pcn0 = "inet 192.168.1.8 mask 255.255.255.0" しかし ifconfig では ホストと同じ em0 でした。

これはと思い、仮想OS上の /etc/rc.conf にあるネットワーク設定を次のようにしてみました。

ifconfig_em0 = "inet 192.168.1.8 mask 255.255.255.0"

仮想OSを再起動すると、pingも通りSSHでも接続できました。

 ↑
なるほど、ブリッジとはこういうことなんですね。納得です。
今度は再起動しても大丈夫です。これは使えそうです。
ただ、このVNCではキーマップが jp.106 になっていません。なので、ここからでなく SSH でやった方がいいいかもしれません。
ちなみに「:」は「け」のキーでなく「SHIP+'」です。
この時点でのホストOS側 vbox ユーザは次のようになっています。
今後、仮想OSをチューニングして実用に耐えられるか検証してみることにします。
コマンドで仮想OSを起動して停止する方法があるようですが、自分はこのまま VNC で使いたいと思います。
ただし、VMの起動・終了は設定終わったら本当のコンソールからになるでしょう。
複数のVMを起動する時は、ホストOSの仮想コンソールを 切り替えてかなーーー!

標準の FreeBSDインストールでは 7 枚の仮想コンソールが 有効になっていて, Alt-F1, Alt-F2, Alt-F3 等で仮想コンソール間の 切替えをおこないます.

/etc/ttys

# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" xterm on secure
ttyv2 "/usr/libexec/getty Pc" xterm on secure
ttyv3 "/usr/libexec/getty Pc" xterm on secure
ttyv4 "/usr/libexec/getty Pc" xterm on secure
ttyv5 "/usr/libexec/getty Pc" xterm on secure
ttyv6 "/usr/libexec/getty Pc" xterm on secure
ttyv7 "/usr/libexec/getty Pc" xterm on secure
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure


戻る

サイトトップへ