在VirtualBox中安装openEuler这里不再阐述,网上已经由许多篇文章详细进行了讲解,这篇文章里主要讲一讲openEuler 20.03 SP1 安装 VirtualBox增强功能遇到的坑和解决方案。
- 安装完成openEuler 20.03 SP1后,登录openEuler(我这里使用root用户登录,如果你是普通用户可能下面执行命令时需要
sudo
),然后点击设备
->安装增强功能...
将最新版增强功能安装光盘装载系统中。
- 装载光盘:
mkdir -p /run/media/openeuler/VBoxAdditions
mount /dev/sr0 /run/media/openeuler/VBoxAdditions
cd /run/media/openeuler/VBoxAdditions
3. 直接安装可能会提示解压错误,因为最小安装的情况下系统缺少tar
解压程序,这里安装一下:
dnf update
dnf install tar
4. 运行安装:
./VBoxLinuxAdditions.run
可以看到报错了,让我们看一看是什么错误:
cat /var/log/vboxadd-setup.log
可以看出是编译错误,查阅资料得知,access_ok函数在Linux内核5版本之后由传三个参数被改为了传两个参数,VBoxAdditions根据Linux版本号是4.x.x还是5.x.x来进行判断传三个还是两个参数,而openEuler 20.03 SP1使用的内核版本号为4,却已经合并了Linux内核5.x.x版本之后的补丁,也就是access_ok函数只要两个参数,因而我们只需要更改VBoxAdditions源代码,让它在4.x.x时也使用两个参数调用access_ok就行啦!
- 修改VBoxAdditions源代码(注意根据VBoxAdditions版本号更改对应路径):
cd /opt/VBoxGuestAdditions-6.1.22/src/vboxguest-6.1.22/vboxguest/r0drv/linux
vi memuserkernel-r0drv-linux.c
使用i进行编辑,将以下两处RTLNX_VER_MIN(5,0,0)
改为RTLNX_VER_MIN(4,0,0)
即可啦:
然后按下ESC
键,:wq
保存并退出。
随后还有一个文件中需要更改该函数问题,继续执行命令:
cd ../../../vboxsf
vi regops.c
然后按下ESC
键,:wq
保存并退出。
- 最终继续安装:
/sbin/rcvboxadd setup
安装完成!
重启系统即可以用到VirtualBox的增强功能啦!