virtualbox 解决文件挂载问题 - 至关详细

废话很少说

首先,咱们要知道,咱们使用html

vagrant init centos/7
vagrant up

会有下面的问题:git

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 home_vagrant_labs /home/vagrant/labs

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

由于没有在 vagrant box 中安装 VBoxGuestAdditions ( centos/7 base box 就没装,不怪大家)
虚拟机安装VBoxAdditions加强功能,该功能有以下做用:github

  • 实现客户机和主机间的鼠标平滑移动
  • 与主机实现文件共享
  • 安装虚拟显卡驱动,实现2D和3D视频图形加速,自动调整客户机分辨率
  • 支持无缝模式
  • 与主机共享剪贴板的内容,也就是说直接能够在主机、客户机之间复制、粘贴(不支持文件)
  • 实现屏幕分辨率的自适应

其余的也很少说

如何安装?shell

  • 使用 vagrant 插件
  • 借助 virtualbox
  • 本身动手丰衣足食

使用 vagrant 插件

vagrant plugin install vagrant-vbguest
vagrant reload --provision

这个插件的做用,就是自动给你的box装个 VBoxGuestAdditions。全自动,很是好用。可是我就是不想安装。。。
友情提示: 小白用户,就用这个就行了centos

使用 Virtualbox 界面辅助安装 (基本放弃)

  • vagrant up
  • 不用管挂载错误(由于只是文件没挂载上,可是不影响系统的启动)
  • 打开virtualbox
  • 双击启动虚拟机
  • 启动后点击 Devices 选择最下面的 Insert Guest Additions CD image (放心吧,通常都会失败,怎么从新安装都没用,我也不知道缘由,这是为了让你知道有这么个方式)

本身动手丰衣

  • Box要求Centos/7, 使用Ubuntu的小伙伴不要慌,官方对大家不要太偏爱(来点这个连接 -> Ubuntu
  1. vagrant up
  2. vagrant ssh (别管挂载报错)
  3. sudo yum update -y (常规操做)
  4. sudo yum install -y dkms binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel (这个 dkms yum告诉我没有,也是很气,感兴趣的小伙伴,找到缘由请在评论区讨论一下)
  5. curl -O https://download.virtualbox.org/virtualbox/6.0.8/VBoxGuestAdditions_6.0.8.iso (为啥不用wget,秉承尽可能少装软件的原则,为啥,应为你总不能每个box都来一遍吧,你要有本身的 vagrant base box)
  6. sudo mkdir /media/VBoxGuestAdditions
  7. sudo mount -o loop,ro VBoxGuestAdditions_6.0.8.iso /media/VBoxGuestAdditions
  8. sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run --nox11

注意: 按理说,但这个地方应该就能够安装上了,可是,实际状况就是报错,再报错。运维

  • 不要慌,碰见报错,按照提示走: sudo /sbin/rcvboxadd setup
  • 而后仍是报错(MMP,来个高手看看咋回事,欢迎评论区讨论),不要慌,没事干就重启
  • exit (退出登陆)
  • vagrant reload --provision (--provision可加可不加,看本身状况)
  • vagrant ssh
  • sudo /sbin/rcvboxadd setup
  • 重复步骤 7, 8 (再加个报错提示里面的命令)
  • 不报错的时候就说明安装上了

注意: 说句实话,我也不搞运维,这一堆操做也搞得我头疼,真心但愿有个大神搞定这个:一次不能安装好的问题!ssh

本身动手足食

费了老大劲把它给弄好,实在不想再来一遍了!怎么办?咱们制做一下 base box
装好以后呢,实验一下是否能挂载上文件,而后登陆到 centos/7,咱们继续!curl

  • 把以前搞得先干掉oop

    sudo umount /media/VBoxGuestAdditions
    sudo rmdir /media/VBoxGuestAdditions
  • 搞定sshui

    cd ~/.ssh/
    rm -rf authorized_keys
    curl -O https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
    mv vagrant.pub authorized_keys
    chmod 600 authorized_keys
  • 删除 history(我把操做流程记在一个空文档中,可是懒得起名字,不当心随手就该删了,写教程的时候一脸懵逼,我想,在我制做的box中有没有history,嘿嘿,还真有!)
  • 删除挂载的文件
  • 退出
  • 执行以下命令打包

    # 查看你的box名称
    vboxmanage list vms
    vagrant package --base 列出来的名称 --output 指定打包后的存放位置及名称
    # 举个例子: vagrant package --base centos_7_swarm-manager_1562576409540_69924 --output /data/download/virtualbox/virtualbox_amor_centos_7_1902.01.box
  • 打完包直接添加 vagrant box

    vagrant box add --name xxxxx 你制做的基础box
    # 举个例子: vagrant box add --name amor/centos /data/download/virtualbox/virtualbox_amor_centos_7_1902.01.box
  • 修改 Vagrantfilebox 改为你的 box 名称
  • vagrant up
  • 搞定(今后和本身的 base box过上了幸福的生活)

情感危机

忽然你脑子一抽经,误删了你的 base box,或者你和你大老婆(系统)闹翻了,要干掉它(重装系统),可是你仍是想保留你的 base box(装系统都没它烦人),怎么办?

  • 登陆注册一个 vagrant boxx cloud 帐号
  • 而后在本身的主页,点击建立

图片描述

  • 一步一步,似魔鬼的步伐
  • 最后,上传你本身制做好的 base box
  • 来一张高清大图

图片描述

总结:

  • 碰见问题不要怕,搞不定了绕一绕,可是不要忘,等之后有思路,掌握的多了回头再看看。
  • Ubuntu的小伙伴,流程和这个差很少,可是官方更负责任点,文档在上面。本身看!

说明

  • 原创不易,转载请标明。
  • 水平有限,不喜勿喷,欢迎你们积极讨论。
相关文章
相关标签/搜索