作成開始 : 平成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
【戻る】