目的

有时候, 我们需要使用virtual box的共享文件功能, 实现虚拟机与主机之间文件的传送. 为了实现这个功能, 需要在虚拟机中安装增强功能以及在Virtual box设置共享文件夹. 本文以CentOS6虚拟机为例说明安装步骤.

虚拟机中安装增强功能

首先, 打开CentOS6虚拟机, 点击上方 设备->安装增强功能, 稍等片刻会弹出对话框:
“You have just inserted a medium with software intended to be automatically started. Choose what application to launch”.
直接点击OK, 然后弹出对话框问是否运行它, 点击Run.此时输入root密码. 然后点击Authenticate. 如果你的系统已经安装了相应的库以及文件, 而且没有错误, 输出类似于:

...
Running kernel modules will not be replaced until the system is restarted
...

此时只需要重启CentOS6, 虚拟机中安装增强功能就完成了, 再设置下共享文件夹路径等等就可以使用了. 如果设置共享文件夹呢?请看设置共享文件夹 有时候会安装失败, 如果安装失败请看安装依赖.

设置共享文件夹

当在CentOS6中安装完增强功能后, 需要再设置一下共享文件夹就可以使用了. 具体做法如下:
step1. 在VirtuaBox管理器中, 选择CentOS6, 然后点击设置->共享文件夹, 点击右边"+"号去添加共享文件夹, 此时会弹出一个对话框.
step2. 选择共享文件夹路径, 也就是选择主机里面哪个文件夹需要与虚拟机共享.
step3. 选中自动挂载, 只读分配看实际情况, 如果想只读就选中, 否则不勾选.
step4. 输入挂载点, 也就是虚拟机中挂载的路径, 类似于

/mnt/shared

step5. 选中固定分配, 点击OK.
此时, 共享文件夹设置已完成, 进入虚拟机中, 使用命令:

cd /mnt/shared

就可以查看到主机里面共享文件夹里面的内容了.
Over

安装依赖

安装增强功能的过程中如果出现错误提示:

Kernel headers not found for target kernel xxxxxxx. Please install them and execute
    /sbin/rcvboxadd setup

说明当前kernel没有安装对应的头文件, 此时如果直接使用:

sudo yum install kernel-devel

去安装的话, 有时候你会发现仍然出现这个错误. 原因就是没有安装当前kernel的对应kernel-devel, 查看当前kernel可使用命令:

uname -a

你会查看到类似于:

Linux localhost.localdomain 2.6.32-754.el6.x86_64 #1 SMP Wed Mar 11 18:38:45 UTC 2020 x86_64 GNU/Linux

的输出信息, 其中2.6.32-754.el6.x86_64就是当前kernel的版本号. 然后你需要安装对应的kernel-devel. 首先, 你需要查看yum支持安装的kernel-devel版本有哪些, 使用命令:

yum list kernel*

你会得到一些输出类似于:

...
...
Installed Packages
kernel.x86_64          2.6.32-754.el6    @anaconda-CentOS-201806291108.x86_64/6.10
kernel-firmware.noarch 2.6.32-754.el6    ...
kernel-headers.x86_64  2.6.32-754.el6    ...
Available Packages
kernel.x86_64          2.6.32-754.28.1.el6.updates
...
...
kernel-devel.x86_64    2.6.32-754.28.1.el6.updates
kernel-headers.x86_64  2.6.32-754.28.1.el6.updates

仔细看输出结果, 你会发现, 已经安装的kernel版本号是2.6.32-754.el6, 但是没有找到可用的并且版本号是2.6.32-754.el6的kernel-devel, 而安装增强功能需要安装kernel-devel. yum包里面并没有版本号是2.6.32-754.el6的kernel-devel, 只找到kernel-devel-2.6.32-754.28.1.el6. 所以如果说你直接使用命令

sudo yum install kernel-devel

的话, 实际上是安装的kernel-devel-2.6.32-754.28.1.el6, 这个版本号与当前kernel(2.6.32-754.el6)不符合, 所以即使你此时使用命令安装了kernel-devel, 安装增强功能时仍然会报错. 如何解决这一问题呢? 如果你仔细看刚才的输出结果, 还会发现, 其实available packags中可以找到版本号是2.6.32-754.28.1.el6的kernel. 所以, 我们的做法就是, 安装kernel-2.6.32-754.28.1.el6, 再安装kernel-devel-2.6.32-754.28.1.el6, 然后重启系统, 使用kernel-2.6.32-754.28.1.el6登陆. 步骤如下:

step1. 使用命令去安装(更准确说是update)kernel:

sudo yum install kernel

step2. 安装kernel-devel:

sudo yum install kernel-devel

step3. 重启虚拟机:

reboot

step4. 当开机时, 你会看到此时CentOS6会有两个kernel版本, 选用刚安装得内核登陆(其实默认也是使用它登陆, 所以不用管也行)
step5. 进入系统, 你再使用命令:

uname -a

你会看到当前内核版本已经更新. 此时,右键桌面上的VBox_GAa_6.1.2选中Eject, 然后重新点击设备->安装增强功能,点击OK, Run, 输入root密码, 然后等它运行完毕即可. 如果此时没有错误, 安装增强功能已经完成, 接着, 请看设置共享文件夹. 如果仍有错误,类似与:

...
Please install the gcc make perl packages from your distribution.
...

说明当前系统没有安装gcc,使用命令

sudo yum install gcc

即可, 然后再右键VBox_GAs_6.1.2选中Eject, 再重新点击设备->安装增强功能,点击OK, Run, 输入root密码, 然后等它运行完毕即可.至此, 应该没有错误了, 接着看设置共享文件夹.