创建 Archlinux Vagrant Base Box

前言

Archlinux 在众多 Linux 发行版中算是比较复杂的,虽然多次安装后会基本记住步骤,但如果是虚拟机用户总是那么记忆页着实麻烦,但滚动式更新使得 Archlinux 为一个开发者友好的发行版。
Vagrant 是一个很好的虚拟机管理器,一个文件夹一个虚拟机,而且可以方便的管理虚拟机环境。可以快速的在各个平台部署虚拟机。

于是我便突发奇想,要不自己创建一个 Vagrant Box 好了,以后就不用如此繁杂的安装 Archlinux ,以后每隔一段时间更新一下然后重新打包一个就好了。并且可以在各个平台切换时快速部署环境。

于是便去看了 Create A Base Box 创建了一个,但在初始化时总是遇到很奇怪的问题,然后搜索了半天,参考一个德语 blog 的记录创建了,然后还是有点小问题,但是最终还是解决了,在此想记录一下步骤。

开始

  1. 成功安装 Vagrant 以及 VirtualBox,我这里采用的是 Windows 的包管理器 Chocolatey 自动安装的

  2. 新建一个虚拟机,内存 512MB,动态磁盘最大大小,禁掉 Audio 和 USB (不知道为什么我的USB禁不掉)

  3. 启动虚拟机,按照自己的风格安装好系统,然后 arch-chroot 入系统

  4. 配置好一大堆的有的没的,然后引导方式,要确保以下几个包已安装sudo openssh virtualbox-guest-utils-nox*如果你要用图像界面请安装对应的包

  5. 添加用户 vagrant 并设置密码为 vagrant,同时也请确保 root 用户密码为 vagrant

  6. 修改/etc/sudoers,将%wheel ALL=(ALL) NOPASSWD: ALL的注释去掉,并添加vagrant ALL=(ALL) NOPASSWD: ALL

  7. 然后将 vagrant 添加入 wheelvboxsf

  8. 创建文件 /etc/modules-load.d/virtualbox.conf 往里面添加内容 vboxguest\nvboxsf 如果使用图像界面请添加vboxvideo

  9. 确保以下服务已经 enable sshd vboxservice

  10. 在 vagrant 用户目录下面创建.ssh文件夹,并将官方提供的公钥添加至其中并命名为authorized_keys

11. 确保 /home/vagrant/.ssh/authorized_keys 权限为 0600
12. 确保 /home/vagrant/.ssh/ 权限为 0700
13. 将整个目录分配给 vagrant 用户
14. 整个系统安装配置完成,重启后,打包便能正常使用

以下代码为第 4 步开始后的步骤
=< 输入
$ 系统提示符
== 操作说明

$ pacman -S sudo openssh virtualbox-guest-utils-nox wget
$ useradd -m -g users -s /bin/bash vagrant
$ passwd vagrant
=< vagrant
=< vagrant

$ visudo
== 去掉注释: %wheel ALL(ALL) NOPASSWD: ALL
== 添加行: vagrant ALL(ALL) NOPASSWD: ALL

$ gpasswd -a vagrant wheel
$ gpasswd -a vagrant vboxsf

$ nano /etc/modules-load.d/virtualbox.conf
=< vboxguest
=< vboxsf
== save file

$ systemctl enable vboxservice
$ systemctl enable sshd

$ mkdir -p /home/vagrant/.ssh
$ wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
$ chmod 0600 /home/vagrant/.ssh/authorized_keys
$ chmod 0700 /home/vagrant/.ssh
$ chown -R vagrant:users /home/vagrant

$ exit
$ umount /mnt

有一些细节大概没有写上去,但是大致上是如此,如果有不太清楚的地方可以去看看之前提及的德语 blog 查看。
但一定要记住在模块加载里面写上 virtualbox-guest-utils-nox 之中的模块!即第 8 步的内容。否则会无法通过虚拟机启动时的挂载验证!

你可能感兴趣的:(vagrant,archlinux)