Windows上のVagrantでFreeBSDを動かしてみる。すごく大変。(エラーを気にしなければ簡単。)
環境
- Windows 7 Professional SP1 64bit
- FreeBSD-RELEASE10
- VirtualBox 4.3.12
- Vagrant 1.6.3
VirtualBoxとVagrantのインストール
- VirtualBoxのダウンロードページ (https://www.virtualbox.org/wiki/Downloads) より、Windows用のインストーラをダウンロードしてインストール。インストールオプションは特に変更の必要なし。途中でデバイスソフトウェアのインストール可否を尋ねるウィンドウが何度か表示されるが、すべて「インストール」を選択して先に進める。
- Vagrantのダウンロードページ (http://www.vagrantup.com/downloads.html) よりWindows用のインストーラをダウンロードしてインストール。
- Vagrantインストール後にPCを再起動する。
仮想サーバのインストール
- 適当にフォルダを作成してそこに移動し、Bento (https://github.com/opscode/bento) からFreeBSD 10に対応したVirtualBox用のBaseboxをインストール。
# mkdir vagrant # cd vagrant # vagrant box add freebsd-10.0 "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_freebsd-10.0_chef-provisionerless.box
- 仮想サーバを起動。
# vagrant init freebsd-10.0 # vagrant up
- sshでの接続確認。
# vagrant ssh
問題点(未解決)
sshでは接続できるものの、vagrant up時に次のようなエラーが出て、コンソールウィンドウが表示できなくなる。
Vagrant attempted to execute the capability 'mount_virtualbox_shared_folder' on the detect guest OS 'freebsd', but the guest doesn't support that capability. This capability is required for your configuration of Vagrant. Please either reconfigure Vagrant to avoid this capability or fix the issue by creating the capability.
いろいろなところに公開されているFreeBSDのBaseboxを入れてみても、結果は一緒。
FreeBSDではsynced_folderをNFSでしかマウントできないため、そのようにVagrantfileを変更してやる必要があるらしい。cf. NFS (Vagrant Docs)
試しに次の内容でVagrantfileを作成して起動してみたが、結果は変わらなかった。
# -*- mode: ruby; -*- Vagrant.configure("2") do |config| config.vm.guest = :freebsd config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_freebsd-10.0_chef-provisionerless.box" config.vm.box = "freebsd-10.0" config.vm.network "private_network", ip: "10.0.1.10" # Use NFS as a shared folder config.vm.synced_folder ".", "/vagrant", type: "nfs", id: "vagrant-root" config.vm.provider :virtualbox do |vb| # vb.customize ["startvm", :id, "--type", "gui"] vb.customize ["modifyvm", :id, "--memory", "512"] vb.customize ["modifyvm", :id, "--cpus", "2"] vb.customize ["modifyvm", :id, "--hwvirtex", "on"] vb.customize ["modifyvm", :id, "--audio", "none"] vb.customize ["modifyvm", :id, "--nictype1", "virtio"] vb.customize ["modifyvm", :id, "--nictype2", "virtio"] end end
Guest Additionsが入っていないと出るエラーだと書いている人もいたけれども、ゲストにログインして確認してみると、ちゃんとGuest Additionsもインストールされている。
$ pkg info | grep -i guest virtualbox-ose-additions-4.3.8 VirtualBox additions for FreeBSD guests $
うまく動かせるようになったという人のVagrantfileを試してもエラーが消えないので、何かまた別の原因がありそう。だけど、とりあえずsshで動いているのでよしとすることに。
- Installing Guest Addition for FreeBSD guests (FreeBSD wiki)
- Installing VirtualBox Guest Additions FreeBSD 10 (DanjielJ.com)
- FreeBSD on Vagrant (Petar Radošević氏による資料)
- Vagrant用FreeBSDのboxをPackerで作った (blog: takahiro okumura)