会社から借りているマシンを、Ubuntuデスクトップをインストールした ThinkPad X200 から MacBook Air 13" 2012 に交換してもらった。
人生初Macなんだけど、いきなり開発環境を総入れ替えするのは難しいし、オフラインでも使える Linux 開発環境はずっと欲しいから、とりあえず VirtualBox を利用することに。仮想マシンにUbuntuをクリーンインストールしてから X200 のホームディレクトリ配下をまるごと rsync するという手段でVM化して、X200はちゃっちゃと返却。 Guest Addition のインストールを自分でしなくても、なんか Ubuntu が勝手にドライバをインストールできるよって通知してくれて、それをOKするだけで Ubuntu デスクトップが快適に使える環境が完成した。すごい楽ちん。
ネットワーク構成は、 NAT と Host Only Network の2本構成。 Host Only Network は Mac OS 側から ssh などで Ubuntu に接続するようで、NATはUbuntuから外に出るため。 なので Host Only Network の方は Ubuntu 側では /etc/network/interfaces を編集して static にしておく。
ここで問題. ホストマシンが接続しているネットワークが切り替わった時(自宅→会社有線→会社無線など)に、Ubuntu側から名前解決できなくなってしまう。これは VirtualBox の NAT のデフォルトの設定が、DNSのProxyになっていて、ホスト側のネットワークの切り替えに追随できないためらしい。 解決策は http://www.virtualbox.org/manual/ch09.html#nat_host_resolver_proxy にあるとおり、次のように設定して名前解決をホストOSに丸投げすること。
$ VBoxManage modifyvm "VM name" --natdnshostresolver1 on
次は、ファイルの共有方法。Mac側でダウンロードした tarball を Ubuntu 側で展開してビルドしたりしたい。最初は共有フォルダを ~/share にして、 Downlaods などのディレクトリを ~/share/ 配下において ~/Downloads => ~/share/Downloads のようにシンボリックリンクにしていたんだけど、これはあまりMac OS Xにとっては良くないみたいで、 mv Downloads share/ するときにパーミッションエラーが発生したりする。結局、 ホスト側のホームディレクトリをまるごと共有することにした。共有ディレクトリの設定で、自動でマウントするを On にすると、 Ubuntu 側で guest addition が勝手に /media/sf_XXXX みたいなパスで、一般ユーザーがアクセス出来ない設定でマウントしてしまうので、自動マウントはオフにして /etc/fstab を自分で書いてマウントする方がいい。
慣れてきて、Ubuntuの利用は ssh で事足りるようになったので、ヘッドレス運用をはじめる。VMの設定で 3D Accelaration を有効にしてしまっていたんだけど、これだとヘッドレスモードで起動しようとするとすぐにセグフォになってしまうのでOFFに設定する。あとはヘッドレスモードで起動するだけ。 Dock に邪魔なアイコンが出なくなって快適。
$ VBoxManage startvm air --type headless
と、いくつかハマリポイントはあったけど、VirtualBox と Ubuntu のおかげでUbuntuデスクトップからスムースにMac OS X に移行できた。めでたしめでたし。