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的小夥伴,流程和這個差很少,可是官方更負責任點,文檔在上面。本身看!

說明

  • 原創不易,轉載請標明。
  • 水平有限,不喜勿噴,歡迎你們積極討論。
相關文章
相關標籤/搜索