虚拟机上的Vagrant和VirtualBox

June 29, 2013

想试一下GHCJS,自己编译神麻烦,但是GHCJS有提供虚拟机镜像,而且我可以访问到学院(校)的虚拟机,所以我想在这虚拟机上再跑一个虚拟机,体验一下GHCJS。

安装Vagrant

这里选择合适的包,下载安装就可以了:

$ wget 'http://files.vagrantup.com/packages/7e400d00a3c5a0fdf2809c8b5001a035415a607b/vagrant_1.2.2_x86_64.rpm'
$ yum install vagrant_1.2.2_x86_64.rpm

安装VirtualBox

VirtualBox需要dkms和编译内核模块,所以要先装:

$ wget 'http://linux.dell.com/dkms/permalink/dkms-2.2.0.3-1.noarch.rpm'
$ yum install dkms-2.2.0.3-1.noarch.rpm
$ yum install kernel-headers kernel-devel

然后这里下载安装VirtualBox:

$ wget 'http://download.virtualbox.org/virtualbox/4.2.12/VirtualBox-4.2-4.2.12_84980_el6-1.x86_64.rpm'
$ yum install VirtualBox-4.2-4.2.12_84980_el6-1.x86_64.rpm

这里安装的是4.2.12而不是现在最新的4.2.14,因为新的Vagrant跑不了,在这里花了不少时间。

安装完会编译内核模块,然后失败了,只要设置KERN_DIR环境变量,然后重新编译就可以了:

$ export KERN_DIR=/usr/src/kernels/2.6.32-358.11.1.el6.x86_64
$ /etc/init.d/vboxdrv setup

其实应该可以添加repo,然后直接用yum安装依赖就可以,太懒没试~ ~

GHCJS

运行:

$ git clone https://github.com/ghcjs/ghcjs-build.git
$ cd ghcjs-build
$ git checkout prebuilt
$ vagrant up

vagrant up时会出错,然后我切换到GUI直接运行虚拟机,有这样的提示:

... VT-x is not available...

不支持VT-x很正常的吧,因这个CPU本身也是被虚拟出来的。所以我们改一下Vagrantfile,在config.vm.customize加上--hwvirtex off:

config.vm.customize ["modifyvm", :id,
                     "--cpus", 4,
                     "--memory", 1500,
                     "--hwvirtex", "off",
                     "--ioapic", "on"]

发现还是不行,上网一查 3,把cpus改成了1:

config.vm.customize ["modifyvm", :id,
                     "--cpus", 1,
                     "--memory", 1500,
                     "--hwvirtex", "off",
                     "--ioapic", "on"]

然后vagrant up启动虚拟机,现在还在跑puppet安装各种包,感觉会很漫长。