解决VBox中CentOS的增强功能安装问题 及 vbox centos安装增强功能总结

震惊!增强功能安装失败,百般瞎折腾无效,没想到只需要一个小操作就能完美解决?

记录一下我曲折的增强功能安装路程,并总结一下安装增强功能的步骤。我的是centos7,vbox5.28

目录

报错情况

解决

安装步骤 

1.确认增强包iso版本。

2.其次,需要装好需要用到的全套大礼包

2.1 安装Development Tools

 2.2 安装gcc环境

3.kernel相关安装

3.1 kernel相关版本及安装

3.2 重启centos

4.额外的补充命令

5.最后,安装增强功能并重启

附:kernel版本不一致的报错


报错情况

先来看一下我的报错。

起初,在运行安装增强功能包的过程中,没有提示错误,但也未提示安装成功,重启后发现并未安装成功。后来在我一顿操作折腾下,多了句提示,提示我看vboxadds-setup.log文件中其出现的错误。

这是在查看/var/log/vboxadds-setup.log时,中间的某段,(没想到能解决,就没来得及存文字,从别处找了个类似的报错)。在我的log记录中,中间运行多段都是这样,提示ERROR: Kernel configuration is invalid."; 

make[1]: warning: -jN forced in submake: disabling jobserver mode.
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (      \
echo >&2;                     \
echo >&2 "  ERROR: Kernel configuration is invalid.";      \
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";   \
echo >&2 ;                     \
/bin/false)

 不过从log文件可以看出,这也没使得安装中断,最后中断的关键报错是类似于下面这种(又是找了个类似报错,相似点在于标红的报错)

 

In file included from /tmp/vbox.0/vboxvideo_guest.h:32:0,
                 from /tmp/vbox.0/modesetting.c:27:
/tmp/vbox.0/vbox_drv.h:195:21: error: field ‘base’ has incomplete type
  struct drm_encoder base;
                     ^
make[2]: *** [/tmp/vbox.0/modesetting.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /tmp/vbox.0/hgsmi_base.c:27:0:
/tmp/vbox.0/vbox_drv.h:195:21: error: field ‘base’ has incomplete type
  struct drm_encoder base;
                     ^
make[2]: *** [/tmp/vbox.0/hgsmi_base.o] Error 1
make[1]: *** [_module_/tmp/vbox.0] Error 2
make: *** [vboxvideo] Error 2

解决

基于第一个,我曾尝试按照提示,企图执行 make oldconfig && make prepare,但此句命令出错。基于第二个,百度后,会发现这是一个c++相关报错。然后我试着安装gcc环境,然而并没什么用。在我一顿瞎折腾后仍然无果,我又谷歌了一下,发现几个解决办法。在vitualbox论坛某帖子 下有提到,可以将RHEL内核换成UEK内核(不过因 有人没能成功 等原因,我没有进行尝试)。最后,centos里一切所需组件等都安装齐全但仍未果,而就在我一筹莫展的时候,又突然想尝试一下,更换了centos的VBoxGuestAddition增强功能包点此处下载相应版本的包 我的vbox版本是5.28,所以我下了VBoxGuestAdditions_5.0.28.iso。选中vbox虚拟机列表中的centos虚拟机,在 设置 中的 存储中将IDE控制器磁盘选择为刚才下载的磁盘,再次运行,成功安装!如下图。(之前安装失败,就只是少了This may take a while及往后的三行语句

安装步骤 

 根据我期间的搜索和瞎折腾,总结了一下如何规避潜在报错的步骤

1.确认增强包iso版本。

首先一定要确认好,自己的GuestAddition.iso是和自己的vbox版本匹配的!!(不然就会像我一样TAT)点此处下载相应版本的包

2.其次,需要装好需要用到的全套大礼包

2.1 安装Development Tools

如果在安装centos时,没有安装Development Tools,可以先安装。

yum -y groupinstall "Development Tools"

2.2 安装gcc环境

一定要安装gcc相关环境

yum -y install gcc*
或者如下只安装c++
yum -y install gcc-c++

 

3.kernel相关安装

3.1 kernel相关版本及安装

先确认一下,自己的kernel-headers和kernel-devel是否版本对应一致。以下两个命令可以输出各自版本号,由此对比查看是否一致。

rpm -qa | grep kernel-devel
uname -r

         3.1.1不一致的话,需要将其统一为同一版本。(不然的话,安装中会出现报错(报错见最后一个标题“kernel版本不一致的报错”))。注意,需要前面执行过uname -r,在运行第二句时,才能找到对应的devel-CURRENT_KERNEL。

uname -r
sudo yum install kernel-devel-CURRENT_KERNEL


上面两句也可直接换作
yum install "kernel-devel-uname-r == $(uname -r)"

 

当然以上 3.1.1步骤,也可以简单粗暴地直接用下面两句,默认下载安装最新版本

yum install kernel-headers
yum install kernel-devel

          3.1.2一致但安装仍有问题的话,有可能是因为kernel版本过低;其某些配置文件的存放位置与记录的不符,故安装失败,这种情况下可 更新kernel(使用上文install的两句) 或 进行文件间的软连接(如下)

ln -s /usr/src/kernels/3.10.0-957.el7.x86_64 /usr/src/linux
ln -s /usr/include/drm/drm.h drm.h  
ln -s /usr/include/drm/drm_sarea.h drm_sarea.h 
ln -s /usr/include/drm/drm_mode.h drm_mode.h  
ln -s /usr/include/drm/drm_fourcc.h drm_fourcc.h

或使用下面这句,忽视此种错误提示

export MAKE='/usr/bin/gmake -i'

3.2 重启centos

另外,注意更新内核后重启一下,内核信息才会更新。 

4.额外的补充命令

 此外,还有一些别的安装(不过或许不那么重要,不一定要全部执行)

yum update
yum install make bzip2
yum -y install yum-plugin-priorities
yum install epel-release --enablerepo=extras
yum --enablerepo epel install dkms

第一句是一个系统所有组件的更新,第二个是安装了make和bzip。最后一句的运行,需要有前一句的运行(即epel的安装),最后这个是为了使得以后每次更新,guestAddition都能保持当前增强功能作用,而不用再次安装增强功能。

5.最后,安装增强功能并重启

通过vbox菜单中找到,安装增强功能,或通过在虚拟机设置中的存储中添加相应的增强包iso,使得虚拟机中含有增强包。

然后启动centos,可直接点开光盘,并选择运行为软件。

或者,通过shell运行:

cd /run/media/用户名
cd VBox_GAs_5.2.8                (可输入到VB后,直接tab键自动填充)
sh ./VBoxLinuxAdditions.run      (或直接./VBoxLinuxAdditions.run)

最后运行成功,reboot重启!会发现增强功能安装成功。

 

附:kernel版本不一致的报错

Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop.

解决方案见前面,安装步骤中的3。 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值