FreeBSD 8.0 on Virtual PC

大学の研究室を去り約10ヶ月,個人でノートPCを購入したりモバイルなネットワーク回線も確保したりしてPC環境はそれなりに充実してるハズなのに何かが足りない気がしてそれは何だろうと思ったら恐らく気軽に使えるPC-UNIX環境だということに気づいたので,Virtual PCFreeBSD環境を組んでみた.Virtual PCを選んだのは何となく無難そうだからで,FreeBSDを選んだのは久しぶりにportupgradeって打ってみたかったから.…いやもうちょっと真面目に理由を説明すると,Virtual PCを選んだのは,使ってるPCがVista 64bitという微妙きわまりない環境だからMS謹製の環境を使っておくのがトラブルが少なくて良さそうな気がしたこと.Virtual PCWindows以外のゲストOSに不親切という話もあるけど,主なハマりどころである色の問題は,Xサーバ上げるつもりが無いから気にする必要が無いし.で,FreeBSDなのは,今回はOSそのもので遊ぶつもりはあんまり無く,寧ろOSの設定はさくっと済ませたかったから.いやソレを言うならソースからビルドの必要があるFreeBSDじゃなくてLinuxの適当なディストリビューションを選べよ,という話に普通はなるのだが,僕の場合はLinuxの適当なディストリビューションGentooとなってしまい,どっちにしろソースからビルドという環境になるため.そしてFreeBSDGentoo LinuxだとFreeBSDの方がハマりどころが少ないので,FreeBSDを選択.仮想マシンじゃなくて実物だったら最速を求めてGentooにしてたけど,今回そーゆー用途でもないし.バージョンはそれぞれ最新の安定版ということでVirtual PC 2007 SP1とFreeBSD 8.0-RELEASE.ということで能書きはこのくらいにして以下メモ.

1. Virtual PCインストール

MicrosoftのサイトからVirtual PC 2007 SP1を落としてくる..落としてきたものを実行するとインストールされる.特に悩むところは無いような気がする.ちなみにセキュリティホールが有るのでいきなりアップデートされる.

2. 仮想マシン作成

Virtual PCを実行すると「Virtual PC コンソール」というのが立ち上がる.で,「新規」というボタンを押すと仮想マシンの作成ウィザードが始まる.ちなみに初回起動時は勝手に始まる.ここで,仮想マシンの名前や場所,メモリサイズやディスクサイズなどを決定する.途中でOSを選択させられるが,これはインストールする予定のOSを選ぶと,単にそれに適した構成を作ってくれるだけ.ここでは「その他」を選び,メモリやディスクを自分で設定する.

3. ゲストOS(FreeBSD)インストール

仮想マシン作成が無事終了すると,Virtual PCコンソールに追加したヤツが出てきているので,それをダブルクリックなり何なりして起動する.そうすると仮想マシンのウィンドウが開くので,そこのメニュー"CD(C)"から"ISOイメージのキャプチャ(I)"を選択し,FreeBSDのサイトから落としてきたインストーラISOイメージを選択する.この操作を迅速に行うことが出来ればすぐさまインストーラが起動する.迅速さが足りなければ何も起きないのでメニューの"操作(A)"から"リセット"を選択して再起動し,インストーラを立ち上げる.インストールは適宜適当に行う.完了したら,"CD(C)"から"CDの解放"して,仮想マシンを再起動.

4. ネットワーク設定 (ゲストOS→外部ネットワーク)

仮想マシン (ゲストOS) を完全に隔離して使うならここまでの設定で良いのだが,普通はネットワークが無いと不便きわまりないので,ゲストOSをネットワークに接続する設定を行う.方法はいくつかあるが,ここでは仮想NICを使ってプライベート空間を構築する方法を採用する.この方法の良いところはゲストOSの存在がホストOSの外部のネットワークに(あまり)影響を与えないこと.他にもホストOSと同じ空間にゲストOSを放り出す方法もあるが,ここでは割愛.

具体的な構成は以下の様になる.

  • ホストOS
    • 仮想NICの(?)アドレスとして, 192.168.0.1/24 をもつ.残念ながら,192.168.0.1以外は選べない.
    • 192.168.0.0/24の空間に対し,物理NICの先に丸投げするような感じで,ルーティング/NAT/名前解決 を提供.
  • ゲストOS
    • ホストOSの仮想NICの先に仮想的に接続される
    • IPとして192.168.0.0/24の空間の適当なIPを使い,ゲートウェイおよびネームサーバーとして192.168.0.1を指定

手順としては,まず,仮想NICを追加する.コントロールパネルにある"ハードウェアの追加"からウィザードを起動し,"一覧から選択したハードウェアをインストールする"→"ネットワークアダプタ"→"Microsoft"→"Microsoft Loopback Adpater"と選び,インストールする.

続いて,ネットワーク共有の設定を行う."ネットワーク接続" (NICが並んでるフォルダっぽいやつ) を開く.すると今追加したやつが"ローカル エリア接続 2"とか"... 3"いう適当な名前で居るのが確認できる.が,とりあえずそれはいったんスルーして,通常使っているネットワークアダプタのプロパティを開く.その"共有"タブから,"ネットワークの他の(略)接続を許可する"にチェックを入れ,"ホームネットワーク接続(H)"として,今追加した仮想NICの接続を指定する.すると,仮想NICに勝手に192.168.0.1なIPが振られる.

最後にゲストOS側の設定を行う.今回はFreeBSDの設定なので,rc.confとresolv.confを書けばOK.ちなみに僕の環境ではデバイス名はde0になっていたので,
rc.confは

 ifconfig_de0="inet 192.168.0.2 netmask 255.255.255.0"
 defaultrouter="192.168.0.1"

となり,resolv.confは

 nameserver 192.168.0.1

となる.デバイス名は dmesg | grep -i ether とかで調べられるような気がする.

5. ネットワーク設定 (ゲストOS←外部ネットワーク)

参考として,ゲストOSで立ち上げたサーバー (sshdとかhttpdとか) に,ホストOSの外部のネットワークからアクセスする方法を書いておく.ちなみに実際試してないので何か足りていないかもしれない.先ほどと同様,"ネットワーク接続"から,外部ネットワークにつながってる接続を選んでプロパティを開く.その"共有"タブの,"設定"ボタンを押すと,FTPサーバーとかIMAP3とかIMAP4とか選べるダイアログが開くので,ゲストOSで提供するものを選ぶ.選択肢に無ければ,"追加(D)"から追加する.ホストOSが外部向けに待ち受けるポート番号と,ゲストOSが待ち受けてるポート番号を変えることも可能.

6. ゲストOSの設定

あとは適当にやりたいことをやりたいように.