FreeBSD 8.2 on VirtualBox

PC-UNIX環境*1を用いて試したいことがいくつか出てきたのに、Windows環境をVistaから7にアップグレードしたタイミングでVirtualPCで構築してたFreeBSDが使えなくなってしまった。仮想HDDのファイルがファイルとして認識されなくなってしまった。意味が分からない。でもそれはそれで新しくインストールすれば良いだけかと思いVirtualPCで新しく作ってみたら、インストール作業は無事終わるのに起動しようとするとBTXの段階でこける。意味が分からない。んで原因を調べようかとも思ったけどVirtualPCを使ってる理由は「楽そうだから」であり起動でハマるようではVirtualPCである意味があんまり無い。というか元々ゲストOSとしてWindows以外考えてなさそうなVirtualPCだからがんばっても不可能だったり起動できてもその後またハマる可能性も存在する。VirtualPC以外の選択肢としては複数存在するがVMWareは商用利用不可なのでせっかくココで使い方を覚えても会社でつかなくて微妙。かといって企業サポートの無いOSS系は完成度が不安。ということで、例によって前置きが異様に長くなったが、いつの間にかOSSになっていたVirtualBoxを使ってみることにした。

VirtualBoxとはOracle仮想マシン環境であり*2、XP Mode専用といって差し支えないVirtual PCと異なり、Linuxや*BSDを公式にサポートする上、仮想H/Wを色々と細かく設定出来る。その一方、基本的な部分はOSSであり*3VMWareと違って商用利用もOK。

VirtualBoxのインストールはインストーラを落としてきて実行するだけ。ゲストPCのインストールも、ウィザードに従っていくだけで、割と簡単。

実際に、Windows 7 Professional (64bit) にVirtual Box4.0.6をインストールし、ゲストとしてFreeBSD 8.2Rをインストールしてみた。カーネル再構築とかportsのビルドとか、FreeBSDの基本的な使い方の範囲内では、特に問題は無く動いている。常用OKな感じ。

ただ、ネットワーク構成でちょっと悩んだ。
VirtualBoxでは、仮想NICの接続方法として、「NAT」「ホストオンリー アダプタ」「ブリッジ アダプタ」「内部ネットワーク」の4通りの選択肢がある。それぞれ、次のような振る舞いとなる。

NAT
ゲストPCから、ホストPCを経由し、外部ネットワークにアクセス出来る。流行りの言葉で言い換えるとテザリング的な感じ。一方で、ゲストPCのアドレス空間がホストPCからも見えないので、ホストPCからゲストPCへ到達出来ない*4
ホストオンリーアダプタ
ホストPC上に作られた仮想NICを通じて、ホストPCとゲストPCの間で通信できる。一方で、この場合のホストPCはNATしてくれないので、ゲストPCから、外のネットワークへのアクセスはできない*5
ブリッジアダプタ
名前の通りブリッジ接続を使い、ゲストPCをホストPCと同じ空間に投げ出す。ゲストPC−外部もホストPC−ゲストPCもOKだが、外部の環境に強く依存するので、自宅LAN環境以外ではゲストPCを使えなくなる*6
内部ネットワーク
よく分からん

ホストPC単独で、ホストPC-ゲストPCの通信を実現しつつ、ゲストPCから外部ネットワークへの通信もやりたいのだが、どうも要求をちゃんと満たせる選択肢が無いらしい。ということで、安直にNICを2枚生成し、それぞれNATおよびホストオンリーアダプタとした。どちらもDHCPでアドレスを振ってくれるが、ホストオンリーアダプタの方はIPがころころ変わると面倒なので固定で振った。デフォルトでは192.168.56.100から192.168.56.255まではDHCPの割り当て範囲なので、そこは外して99で。rc.confはこんな感じ。

ifconfig_em0="DHCP"
ifconfig_em1="inet 192.168.56.99 netmask 255.255.255.0"

em0がNAT側、em1がホストオンリーアダプタ側。ホストPCからはem1にアクセスする。なお、仮想NICの作成など、ホストPC側の設定はVirtual Boxインストール時に勝手にやってくれるので、改めて行うことは無い*7

また、仮想HDDをUSB HDD上に作成したのだが、遅いので、セットアップ中だけでもローカルディスクに置いとこうと思って移動してみたら、「同じUUIDのHDDが既に存在する」という意味のメッセージ*8が出て、マウント出来なくなった。ちゃんとアンマウントした後なので多重マウントということでは無いはず。ちゃんとパスまで覚えているということかもしれない。…が、そうするとUSB HDDのドライブレターが変わったらハマる気がする。とりあえず、そのときはそのときということで、一旦忘れることにする。

*1:もはや死語?

*2:元はSunのもの

*3:iSCSIや組み込みのRDPなどをサポートする、拡張パック的なものが商用ライセンスとなっている

*4:自力でルーティングすれば届くかもしれないが、試してないので不明

*5:自力で(以下略)

*6:環境次第では一応使えるけど、外部環境に影響を与えるので好ましくない。まぁ、どうせ使わないけど

*7:使わなくても作られてしまうのが若干ウザいが

*8:詳細は記録しなかったので不明