缘由

最近折腾OS X下搭建开发环境烦了,每次等半天的编译,然后版本不同说不定还会导致编译出错,然后后得手动修代码,而像homebrew这种包管理只适合安装工具链,根本不适合安装nginx`php`mysql这种应用,homebrew里的 mariadb 为了能安装,不得不增加-DWITHOUT-TOKUDB这种东西,而且根本没法搞上jemalloc这么好的内存管理器,所以就准备使用 Vagrant 来搭建开发环境。
可是看了看 Vagrant 官方镜像包,网速国内根本没法看,而且 CentOS 很少,看了看官方的文档,原来做Base Box也并不难,那就搞了一个自己的,顺便记录下自己踩的坑。

安装 CentOS

我这里安装的是 CentOS 6.7-minimal 版本,说到这个,确实不得不夸红帽公司,为什么人家的发行版 RHEL 被这么推崇,连带着 CentOS 也这么受到企业级欢迎,因为人家投入了大量人手维护内核,先不说他们的商业授权支持。一个系统整整10年的支持期,RHEL6系列会一直支持到2020年,一个2.6版本的古老内核,能够支持最新的网卡驱动,甚至还能安装Docker这种明确必须3.10以上内核的版本,为什么?因为人家一个内核打包上百次,所有的驱动、功能被统统放到了老内核里,其他系统哪个能够做到,其他任何一个发行版都没有2.6内核支持的Docker
扯远了,下面跟着官方文档走,先创建一个虚拟机,内存512M就足够,硬盘扩展到2T,记得选择动态分配,禁用 USB 和 Audio ,但是512M内存是不能手动分区的,默认是创建一个500M的 /boot 分区,剩余创建 LVM 逻辑卷组,然后在里面创建一个2倍内存的 swap 分区,剩余空间分给 / 分区。
其中有几点注意:

  • Root 密码设置为 vagrant

  • 创建一个 vagrant 用户,密码为 vagrant

  • ~/.ssh/authorized_keys放置Insecure Keypair,并且配置权限

  • visudovagrant ALL=(ALL) NOPASSWD: ALL,并且注释掉DEFAULT requiredtty

  • 建议在/etc/ssh/sshd_config里使用UseDNS no

注意:insecure keypair将会在第一次vagrant up的时候被自动替换为随机生成的密钥对
然后,安装完毕后,记得yum groupinstall "Development Tools",并且安装VirtualBox Addition tools,其中会出现Building OpenGL failed,没有影响的。
最后,记住删除网络配置文件,包括 udev 和 /etc/sysconfig/network-script 里的,以防出现问题。

导出Box

vagrant package --name VirtualBox虚拟机名


补充一下删除网络配置的命令

rm -rf /etc/udev/rules.d/70-persistent-net.rules
sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth0

山河永寂
2.4k 声望159 粉丝