openEuler 20.03 SP1 安装 VirtualBox增强功能

本文档详细介绍了在openEuler20.03SP1中安装VirtualBox增强功能时遇到的编译错误及解决方案。问题在于内核版本和VBoxAdditions不兼容,通过修改源代码使得access_ok函数调用适应内核,最终成功安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在VirtualBox中安装openEuler这里不再阐述,网上已经由许多篇文章详细进行了讲解,这篇文章里主要讲一讲openEuler 20.03 SP1 安装 VirtualBox增强功能遇到的坑和解决方案。

  1. 安装完成openEuler 20.03 SP1后,登录openEuler(我这里使用root用户登录,如果你是普通用户可能下面执行命令时需要sudo),然后点击设备 -> 安装增强功能...将最新版增强功能安装光盘装载系统中。
  2. 装载光盘:
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就行啦!

  1. 修改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保存并退出。

  1. 最终继续安装:
/sbin/rcvboxadd setup


安装完成!

重启系统即可以用到VirtualBox的增强功能啦!

### 安装 VirtualBox 的前提条件 为了在 OpenEuler 上成功安装并运行 VirtualBox,需先确认主机已满足最低硬件需求以及软件环境准备充分。通常情况下,建议确保系统已经更新至最新状态,并且内核支持 KVM 虚拟化技术以获得更好的性能表现[^1]。 ### 添加必要的仓库 由于默认的 OpenEuler 仓库可能不包含 VirtualBox 及其依赖项,因此需要添加额外的第三方源来获取这些包。可以考虑使用 OBS (Open Build Service) 或者其他社区维护的镜像站点作为补充资源。具体命令如下: ```bash sudo dnf config-manager --add-repo=https://download.opensuse.org/repositories/home:/virtualbox/openSUSE_Leap_15.3/home:virtualbox.repo ``` 请注意上述 URL 是示例链接,实际操作前应当访问官方网站查找适用于当前发行版的最佳下载地址。 ### 安装 VirtualBox 完成以上准备工作之后,就可以通过 DNF 包管理器轻松地安装 VirtualBox 了: ```bash sudo dnf install virtualbox-7.0.x86_64 ``` 这里假设要安装的是 7.0 版本;如果想要安装不同版本,则应调整相应的包名参数。 ### 启动与配置服务 安装完成后,启动 VirtualBox 并设置开机自启功能: ```bash sudo systemctl start vboxdrv.service sudo systemctl enable vboxdrv.service ``` 此时应该能够正常打开图形界面或者命令行工具来进行后续的操作了。 ### JDK 解压安装(非必需) 对于某些特定应用场景下需要用到 Java 开发套件的情况,可以通过下面这条指令将预先下载好的压缩文件解压到指定目录中去: ```bash tar -zvxf jdk-8u401-linux-x64.tar.gz -C /opt/ ``` 不过这一步骤并非安装 VirtualBox 所必须执行的部分[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值