1. 为什么是 VirtualBox + openEuler:一个常见但不该踩坑的组合
如果你和我一样,平时工作用的是一台 Ubuntu 桌面系统,又因为项目或学习需要接触 openEuler,大概率会走到 VirtualBox 这条路上。我最早试过直接用物理机装,但环境太金贵,舍不得折腾;也试过在 VMware Workstation 里跑,但在 Ubuntu 宿主机上它既不是默认安装,还要考虑授权问题,后来就彻底转向了 VirtualBox。原因很直接:VirtualBox 免费、开源、在 Ubuntu 软件源里就有,命令行工具 VBoxManage 还能做不少批量操作,配合快照功能做系统实验非常方便。
我这次写这篇文章,是想把"在 Ubuntu 上用 VirtualBox 安装 openEuler 虚拟机"的完整过程记录下来。你可能会觉得这有什么好写的,其实搜索热词里暴露了大量相关问题:虚拟机制建好以后黑屏、No bootable medium found、安装界面起不来、网卡连不上、分辨率不对、增强功能装不上……这些坑我在不同版本上都踩过。所以这篇文章不只是给你一步步点鼠标的教程,还会解释每一步为什么要这样做,参数为什么这么给,遇到问题应该沿着什么思路排查。
先说清楚一个前提:下面的完整流程,我是在 Ubuntu 24.04 LTS(x86_64)宿主机上,用 VirtualBox 7.0.18,安装 openEuler 22.03 LTS SP4 x86_64 版本的镜像来验证的。不同版本的关键差异我会在文中单独标注。如果你是第一次接触 openEuler,不知道 22.03 和 24.03 有什么区别,这里简单说明:openEuler 的版本号里 LTS 指的是长期支持版本,22.03 和 24.03 分别代表 2022 年 3 月、2024 年 3 月发布的长期支持版本,SP 后续是补丁更新版本,官方会持续维护很多年。服务器上追新不如求稳,所以我个人建议新手直接选 LTS 系列中的 SP 版本,而不是非 LTS 的创新版本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. VirtualBox 在 Ubuntu 上的安装:两种方式选哪种
2.1 直接用 Ubuntu 软件源安装,省事但版本偏旧
第一次装 VirtualBox,很多人会下意识地执行:
bash复制sudo apt update
sudo apt install virtualbox virtualbox-dkms
这种方式最大的好处是依赖关系全帮你处理好了,而且 virtualbox-dkms 会跟着内核版本重新编译模块,Ubuntu 系统升级内核后不容易出现 vboxdrv 起不来的问题。缺点是 Ubuntu 仓库里的 VirtualBox 版本通常比 Oracle 官方发布慢不少,而你手里的 openEuler 镜像如果比较新,某些新特性或修复可能用不上。
如果你只是为了装一台虚拟机跑着玩,不折腾 USB 直通、不做复杂网络实验,那么用 Ubuntu 软件源版本完全够用。但如果想用比较新的 VirtualBox 版本,我建议走官方源。
2.2 使用 Oracle 官方源,装到较新版本并配置内核模块
我是从官网源装的,因为后来的虚拟机快照、云镜像调试等操作都依赖新版对 NVMe 控制器和 EFI 的支持。具体步骤是这样:
先把官方软件源的 GPG Key 加进去:
bash复制wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg
再往源列表里写入官方源地址:
bash复制echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
更新源并安装:
bash复制sudo apt update
sudo apt install virtualbox-7.0
安装包会自动把 vboxdrv、vboxnetflt、vboxnetadp 这些内核模块加进去。如果安装完成后查看模块加载情况:
bash复制systemctl status vboxdrv
lsmod | grep vbox
如果 vboxdrv 没起来,最常见的原因有两个:一是缺少 Linux 内核头文件,需要先装:
bash复制sudo apt install linux-headers-$(uname -r) build-essential dkms
二是因为 UEFI Secure Boot。Ubuntu 默认在启用了 Secure Boot 的机器上只允许加载已签名模块,VirtualBox 自带的模块没签名,会被内核拒绝。碰到这种情况你可以用 mokutil --import 导入签名,也可以在 BIOS 设置里关闭 Secure Boot。如果只是自己本地开发用,后者通常更直接,但如果你安装了 Windows 和 Ubuntu 双系统,关闭 Secure Boot 前要想清楚是否影响其他系统引导。
2.3 扩展包要不要装,我建议装
VirtualBox 主程序之外,通常还有一个 Extension Pack,也就是扩展包。它提供 USB 2.0/3.0 设备支持、VirtualBox RDP、磁盘 AES 加密、NVMe 等能力。如果你只想跑一台 openEuler 做基础实验,扩展包确实不是必须的;但如果你需要把 U 盘里的启动盘、USB 网卡等设备直通到虚拟机里,就必须装了。
扩展包的下载页在 VirtualBox 官网,注意下载版本必须和主程序版本完全一致,否则 VirtualBox 会直接提示不匹配。命令行安装方式:
bash复制wget https://download.virtualbox.org/virtualbox/7.0.18/Oracle_VirtualBox_Extension_Pack-7.0.18.vbox-extpack
sudo VBoxManage extpack install Oracle_VirtualBox_Extension_Pack-7.0.18.vbox-extpack
安装完成后运行 VBoxManage list extpacks 可以看到扩展包状态。
2.4 宿主机的硬件虚拟化检查
在做别的操作之前,务必先确认 CPU 已开启硬件虚拟化。Linux 下可以用这个命令检查:
bash复制egrep -c '(vmx|svm)' /proc/cpuinfo
输出结果大于 0 表示支持。也可以安装 cpu-checker 后执行:
bash复制sudo apt install cpu-checker
kvm-ok
如果 BIOS 里没开虚拟化,VirtualBox 启动虚拟机时会非常慢,甚至在启动 64 位系统的时候直接报错。很多人折腾半天装不上 openEuler,结果发现是这里没开。
3. 创建虚拟机时最容易忽略的配置:EFI、显存、网络和磁盘
3.1 创建一个基础虚拟机并调整关键参数
打开 VirtualBox 主界面,点"新建",名称填 openEuler-22.03,类型选 Linux,版本这里有一个细节:VirtualBox 的版本下拉菜单里没有原生 openEuler 选项,很多人会选 Red Hat (64-bit),openEuler 本身兼容 RHEL 生态,这样选没问题。我习惯选 Oracle Linux (64-bit),它和 VirtualBox 的适配更近,实际区别不大,但建议始终选 64-bit,因为 openEuler 目前没有 32 位支持的说法。
内存给多少取决于你的宿主机。openEuler 命令行最小安装 1 GB 就够了,但如果你想在虚拟机里编译软件、同时跑几个服务,建议 2 GB 起步,能到 4 GB 体验更好。CPU 核数建议 2 核起步。磁盘方面,我在实际使用中发现 openEuler 装完最小系统加上常用软件后大概占用 5-8 GB,但为了后续安装桌面环境、编译缓存和 Docker 镜像,我给虚拟磁盘分配 60 GB,采用 VDI 格式、动态分配。动态分配的意思是文件大小随实际使用增长,不会一开始就占满宿主机磁盘,这个选项对空间紧张的同学很友好。
创建完成后不要急着启动,先打开"设置"把几个关键参数调整好。我把改动点和原因列出来:
| 设置项 | 推荐值 | 为什么这样调 |
|---|---|---|
| 系统 -> 主板 -> 启用 EFI | 开启 | 我在 VirtualBox 7 上用纯 BIOS(Legacy)模式安装 openEuler,遇到过图形安装界面无法正常显示的问题,开启 EFI 后顺利进入安装器 |
| 系统 -> 处理器 -> 处理器数量 | 2 或更高 | openEuler 的安装器和 dnf 包管理器对多核利用不错,给一个核心容易慢到怀疑人生 |
| 显示 -> 显存大小 | 128 MB | 默认 16 MB 只够命令行界面的,安装图形桌面后会出现分辨率上不去、界面卡顿的问题 |
| 显示 -> 图形控制器 | VMSVGA | VirtualBox 对 Linux 客户机支持较好的虚拟显卡,安装带 GNOME 桌面的 openEuler 时优先选它 |
| 存储 -> 光驱 | 挂载 openEuler ISO | 勿在启动前遗漏这一步 |
| 网络 -> 连接方式 | 先用 NAT | 安装阶段只需要外网访问;装完系统后再改成桥接做局域网测试 |
关于 EFI 选项,我得补充一点:在我早期的测试中,用默认 BIOS 模式也能完成 openEuler 安装,但有一个概率性问题是安装完成后重启引导失败,直接进不了 GRUB。后来用 EFI 模式就没有再出现。如果你在安装或重启阶段遇到黑屏或卡死,可以先把"启用 EFI"关掉或打开,来回切换测试一下,这是 VirtualBox 和 Anaconda 安装器组合时比较常见的排查手段之一。
3.2 镜像下载和校验不能被跳过
openEuler 官方镜像可以从 openEuler 官网或国内多家镜像站下载。镜像分很多种,常见的有 dvd.iso、everything.iso、最小化 ISO。dvd.iso 是完整安装包,包含了绝大多数软件包,适合离线安装;everything.iso 更全,但文件体积大;如果你的网络环境很好,安装时通过网络软件源补齐包,也可以只下载最小化 ISO,通过安装界面的"软件源"指定网络 repo 来安装。这里我建议新手使用完整版 dvd.iso 或 everything.iso,省去安装过程中网络源不稳定的麻烦。
另外一定要校验文件完整性。官方下载页会提供 SHA256 校验值,下载后执行:
bash复制sha256sum openEuler-22.03-LTS-SP4-x86_64-dvd.iso
把输出的哈希值和官方页面上的比对,一致再使用。我见过有人下载了一半的镜像,VirtualBox 启动后卡在引导阶段,排查了半天发现是镜像损坏,浪费时间。
3.3 存储控制器两种选择:SATA 和 NVMe
VirtualBox 在创建虚拟机的时候默认给的是 SATA 控制器。但新版 VirtualBox 支持模拟 NVMe 控制器,如果需要模拟更接近真实服务器的磁盘环境,可以在"存储"设置里把 SATA 控制器换成 NVMe,或新增一个 NVMe 控制器并把虚拟硬盘挂到上面。openEuler 的内核自带 NVMe 驱动,安装时能识别这种虚拟盘,没问题。
为什么要提这个?因为早期 VirtualBox 挂载 VDI 到 NVMe 控制器时有一些踩坑反馈,而很多人照着旧教程创建 SATA 盘,装完系统和真实环境又有差异。通常跑 openEuler 做云原生实验,用 SATA 就够了;如果你是要模拟物理机上 NVMe 硬盘上的部署行为,可以建 NVMe 控制器,openEuler 识别设备名会变成 /dev/nvme0n1 而不是 /dev/sda。
4. openEuler 安装全程:从启动到进入系统
4.1 安装引导阶段:选择 Install 进入
虚拟机设置完成后,点"启动"。如果光驱挂载正确、启动顺序里光驱在硬盘之前,你会看到 openEuler 的 GRUB 引导菜单,里面有两个关键选项:安装 openEuler 系统,和校验安装介质。建议先选校验介质,确认镜像没问题再正式安装,这条操作在服务器安装时最稳妥。
之后会进入图形化安装界面。语言看你自己的习惯,openEuler 的简体中文翻译做得挺完整,用中文界面基本无障碍。但如果你以后要习惯查英文文档,装系统时选英文、后续手动配置中文 locale 也是一种路子。
4.2 安装信息摘要里必须设置的四项
安装引导后会进入"安装信息摘要"这个总览页面,很多人直接点右下角的"开始安装",结果系统提示还需完善配置。这个页面里有几个必填项。
安装目的地是最关键的。必须点进去,选择你要安装的虚拟硬盘,默认是自动分区。如果你启用了 EFI,并且打算手动分区,必须记得创建一个 EFI System Partition,挂载 /boot/efi,否则 GRUB 会安装失败。不熟悉分区的新手请直接用自动分区,安全。点进去之后,右下角要确认磁盘已被勾选,然后点"完成"返回,磁盘才会真正被写入分区表。
软件选择决定了装出来的是命令行还是带界面的系统。如果你想体验 GNOME 桌面,选择"带 GUI 的服务器";如果只是做服务端实验,选"最小安装"即可,后续用 dnf 补包也很快。两者体积差异很大,最少装的系统完全够日常 ssh 和容器操作。
Root 密码必须设置。openEuler 对弱密码会有强度校验,如果密码强度不足,需要点两下"完成"确认。还要创建一个普通用户,并勾选"将此用户作为管理员",方便平时用普通用户登录,需要时再通过 sudo 提权,这是服务器安全的基本习惯。
网络与主机名要在安装阶段就开启。默认网卡可能是关闭状态,你需要手动把开关打开。打开后如果使用的是 DHCP,它会自动取得 IP,后续联网装软件就靠这一步。主机名我习惯设置为 openeuler-test,后续方便区分多台虚拟机。
这几项都设置好之后,点"开始安装",等进度条走完。
4.3 重启后第一件事:拔掉虚拟光驱里的 ISO
安装完成后界面会提示重启。此时如果直接点虚拟机窗口的重启按钮,有可能因为启动顺序里光驱仍排在第一位而再次进入安装引导。正确做法是在 VirtualBox 菜单栏选"设备 -> 光盘驱动器 -> 移除虚拟盘",让虚拟光驱不再挂载 ISO,然后再重启。如果你忘了移除,重启后看到 GRUB 安装菜单,不要慌,关机再移除一次就行。
登录系统后,建议先确认一下基本信息:
bash复制cat /etc/openEuler-release
uname -a
ip a
如果能看到 openEuler 版本号、内核版本和网卡 IP,说明系统安装已经成功。
5. 安装完成后的四项收尾配置
5.1 把网卡从 NAT 改成桥接,并设置静态 IP
VirtualBox 默认创建的 NAT 网络,虚拟机可以访问外网,宿主机也可以访问虚拟机,但局域网里的其他机器无法直接访问虚拟机。如果你想在公司或家里的局域网里单独访问这台 openEuler,就必须切换成桥接模式。
在虚拟机关机状态下,打开设置 -> 网络,把连接方式改成"桥接网卡",界面名称选择宿主机实际使用的网卡。如果宿主机插着有线网卡就选有线,连着 Wi-Fi 就选对应的无线网卡。
切换完桥接后,虚拟机里的网卡会像一台独立设备一样出现在局域网中。openEuler 默认使用 NetworkManager,设置静态 IP 推荐用 nmcli。先查看网卡名称,通常是 ens3 或 ens160:
bash复制ip addr show
假设网卡名是 ens160,所在网段为 192.168.1.0/24,网关是 192.168.1.1,设置静态 IP:
bash复制sudo nmcli con mod ens160 ipv4.addresses 192.168.1.100/24
sudo nmcli con mod ens160 ipv4.gateway 192.168.1.1
sudo nmcli con mod ens160 ipv4.dns "223.5.5.5 114.114.114.114"
sudo nmcli con mod ens160 ipv4.method manual
sudo nmcli con up ens160
设置完成后,用 ip addr show ens160 确认 IP 生效,再用宿主机 ping 一下就能通。
有一点要特别提醒:NAT 模式和桥接模式没有谁绝对好。如果你只是想让虚拟机能上网,NAT 最简单,宿主机断网虚拟机也断网;如果要在虚拟机里对外提供服务,需要局域网内其他设备访问,那么桥接是首选。还有一种"仅主机网络"模式,只能宿主机和虚拟机彼此访问,不能上网,通常用于隔离环境测试。
5.2 替换软件源,让 dnf 安装软件不再慢吞吞
openEuler 系统装完,默认的软件源指向官方源,在国内访问速度时好时坏。替换为国内镜像源是很实用的操作。openEuler 的 dnf 软件源配置在 /etc/yum.repos.d/openEuler.repo,操作前先备份:
bash复制sudo cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak
然后用编辑器打开,把里面的 baseurl 或 mirrorlist 指向可用的镜像。以 22.03 LTS SP4 为例,官方源地址是:
code复制https://repo.openeuler.org/openEuler-22.03-LTS-SP4/everything/x86_64/
如果你想使用华为云镜像或清华镜像,需要把域名部分替换成对应的镜像站名称,并且注意版本号和架构要保持一致。修改完成之后执行:
bash复制sudo dnf clean all
sudo dnf makecache
如果 makecache 正常完成,说明源配置没问题。接下来可以安装一些基础工具:
bash复制sudo dnf install -y vim wget tar net-tools
我这里提一下,openEuler 保留了 CentOS/RHEL 的很多使用习惯,把 yum 和 dnf 都做了兼容,日常输入 dnf 和 yum 都可以。但更推荐使用 dnf,它解析依赖关系更快,输出也更友好。
5.3 安装 VirtualBox 增强功能,这一步最容易出问题
装完 openEuler 后,界面分辨率通常很低,共享剪贴板、拖放文件等功能也不能用,这是因为没有装 VirtualBox Guest Additions 增强功能。
首先在 openEuler 里安装编译所需的依赖:
bash复制sudo dnf install -y gcc make perl kernel-devel glibc-devel
如果你的 openEuler 是最小安装,可能还需要 tar:
bash复制sudo dnf install -y tar
然后在 VirtualBox 虚拟机窗口菜单上选择"设备 -> 安装增强功能"。这会把一个虚拟光盘挂载到系统中。在 openEuler 命令行中执行:
bash复制sudo mkdir -p /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
sudo sh ./VBoxLinuxAdditions.run
编译过程需要几分钟。看到提示成功之后,重启虚拟机即可。
这里要提前打个预防针:VBox Guest Additions 对 openEuler 的支持并不是官方公开承诺的,因为 guest 系统是基于社区版内核,VBox 官方测试名单里主要包含 RHEL、Ubuntu、Debian、openSUSE 等主流发行版。所以你在 openEuler 上执行安装脚本,有一定概率遇到编译报错。如果报错了,不要急着放弃,查看日志:
bash复制sudo cat /var/log/vboxadd-setup.log
多数错误集中在缺少 kernel-devel 或者当前内核版本与头文件版本不匹配。你需要确认 kernel-devel 的版本和当前内核完全一致:
bash复制uname -r
rpm -q kernel-devel
如果版本不一致,重新安装对应版本:
bash复制sudo dnf install -y kernel-devel-$(uname -r)
如果实在装不上,我的建议是暂时不强求。对纯命令行使用 openEuler 来说,增强功能只是改善体验,不影响服务端功能。没有增强功能时,你完全可以保持 NAT 或桥接网络,然后通过 ssh 登录虚拟机操作,这才是服务器环境的正常操作方式。
5.4 创建快照,给自己留好退路
系统配置基本到位之后,我习惯在 VirtualBox 里给虚拟机打个快照。路径是"控制 -> 生成备份" 或对应版本的"快照"按钮。快照会在当前状态拍一张存档,后续哪怕你把系统搞崩了、配置改错了,随时能回滚到快照那一刻。
我的一个经验是:每完成一个阶段性的配置,比如刚装完系统、刚配置完网络、刚替换完软件源,就分别打一个快照,并备注这段时间的改动内容。这样当你做更高阶的实验时,出了任何问题都能精准回到某个节点,而不是被迫从头重装一遍,省下的时间非常可观。
6. 安装和启动过程中最值得记录的排查案例
6.1 错误:VirtualBox 启动虚拟机提示内核驱动未加载
有段时间我每次启动虚拟机都报 "Kernel driver not installed (rc=-1908)",后来发现是 Ubuntu 自动更新了内核,VirtualBox 的 vboxdrv 模块没有跟着新内核重新编译。排查命令如下:
bash复制systemctl status vboxdrv
dkms status
如果 vboxdrv 是 inactive 或 failed,先尝试重新加载:
bash复制sudo modprobe vboxdrv
如果提示找不到模块,需要重新构建 DKMS 模块。安装好 dkms 之后:
bash复制sudo dkms autoinstall
然后重启宿主机,通常问题就解决了。不想重启的话,也可以执行:
bash复制sudo /sbin/rcvboxdrv setup
VirtualBox 自带的这个命令会重新编译内核模块。这个是你在 Ubuntu 上从软件源安装 VirtualBox 和手动安装 VirtualBox 之间体验差异最大的地方:使用官方 .deb 安装包不会自动配置系统 DKMS,所以每次内核升级后都要留意一次 vboxdrv 状态。
6.2 现象:openEuler 安装界面黑屏,或者重启后进不了系统
这个问题在我早期尝试时非常典型,我在搜索热词里也看到大量类似反馈。黑屏场景分两种:
第一种是安装引导阶段黑屏。如果你看到 GRUB 菜单,选择安装后屏幕就黑掉,大概率是显卡驱动或 EFI 设置的问题。可以依次调节:关闭"启用 EFI",看能否启动;把图形控制器从 VMSVGA 换成 VBoxSVGA;关闭 3D 加速。这三个选项是 VirtualBox 里处理 Linux 图形安装失败最常用的组合开关。
第二种是安装完成后重启黑屏,或者卡死在 GRUB 引导。这种情况通常是引导模式不一致导致的。比如你安装时开了 EFI,安装完成后在 VirtualBox 设置里又把 EFI 关掉了,或者反过来,都会造成找不到引导项。排查思路很简单:确认当前 BIOS/EFI 模式和安装时保持一致,一般就能恢复正常。
还有一个细节容易被忽略:EFI 模式安装时,openEuler 的引导分区会创建为 EFI System Partition,如果安装完成后的 VirtualBox 启动顺序里硬盘排在光驱后面,而光驱里还残留着安装 ISO,它会优先尝试从 ISO 引导,表现为跳回安装界面。此时把光驱里的 ISO 弹出,再把硬盘启动顺序调到第一位即可。
6.3 错误:FATAL: No bootable medium found
这个提示出现得很直白,虚拟机没有找到可启动介质。我第一次遇到时还以为是系统坏了,后来排查发现只是虚拟硬盘没有挂到启动列表里。典型原因有三个:一是创建虚拟机后没有选择现有的虚拟硬盘文件,创建向导结束后直接启动,相当于裸机开机;二是虚拟机的硬盘控制器型号和虚拟硬盘挂载端口不对,VirtualBox 里把 VDI 挂到了 SATA 端口,但启动列表只检查 NVMe 端口;三是安装系统时没写引导记录就重启了,比如前面提到的 EFI 分区问题。
排查顺序是:先看虚拟机设置 -> 存储,确认虚拟硬盘是否已经挂载;再看系统 -> 处理器/主板里的"启动顺序",确认"硬盘"被勾选;最后在存储里看硬盘控制器类型是否匹配。如果这些都对,才需要考虑重装引导程序。
6.4 现象:虚拟机里能上网,但宿主机的局域网设备找不到它
这个问题我遇到最多。原因通常不是 openEuler 配置有问题,而是网络模式选错了。如果你创建虚拟机后一直保持默认的 NAT 模式,那么虚拟机对宿主机局域网来说是不存在的,它发出网络请求时像宿主机的一个代理进程在访问外网,外部设备无法直接寻址到虚拟机。想解决,第一步是切换到桥接模式,第二步是确认虚拟机 IP 和宿主机 IP 在同一网段,第三步是确保宿主机防火墙没有拦截 ICMP 或对应端口。
我见过一个比较隐蔽的情况:宿主机同时连接了有线网卡和无线网卡,VirtualBox 桥接时选错了网卡,虚拟机虽然拿到了地址,但走的是宿主机另一张没在用的网卡,导致网络二层都不通。排查时用 ip addr 看宿主机哪张网卡有真实 IP,桥接时选择同一张。
还有一个值得注意的点:在某些企业网络环境里,即使桥接模式,交换机也可能开了端口隔离,虚拟机同样无法和宿主机之外的设备互通。这属于网络环境限制,不是 VirtualBox 的问题,需要通过调整交换机端口策略解决,或者换用 Host-Only 加 NAT 的混合方案。
6.5 现象:安装增强功能时编译失败,日志出现找不到头文件
最后记录一个我踩过最深、也最容易被忽略的坑。openEuler 的 kernel-devel 包默认可能没有随系统安装,而你在没有安装头文件的情况下直接执行 VBoxLinuxAdditions.run,日志里会反复出现 "Unable to find the kernel source tree" 之类的错误。错误提示并不直观,容易让人以为是 VirtualBox 和 openEuler 不兼容。
正确解决路径是先确认内核版本和 kernel-devel 版本是否一致:
bash复制uname -r
sudo dnf list installed | grep kernel-devel
如果已经安装但版本不一致,就重新安装:
bash复制sudo dnf install -y kernel-devel-$(uname -r)
然后重新执行增强功能安装脚本。安装前也可以先卸载旧版本残留的模块清理环境:
bash复制sudo /sbin/rcvboxadd quicksetup all
根据我的实际经验,openEuler 22.03 的 5.10 内核配合 VirtualBox 7.0 通常可以顺利编译通过,但如果你用的是某个 alinux 改造内核或自行编译过的内核,就需要额外谨慎了。增强功能失败不影响系统基本使用,可以用 ssh、scp、rsync 等方式替代共享文件夹需求,遇到实在装不上的情况不必死磕。
讲了这么多,最想给你留下的建议还是那句话:每一步重要节点都打快照,尤其是刚安装完成、刚配好网络、刚换完源之后。我在多次帮同事排查虚拟机问题的过程中发现,相当一部分人不是不会装,而是装到一半系统崩了之后没有回滚点,只能从头再来。VirtualBox 的快照功能就是为这种场景准备的,顺手按键几秒钟,关键时刻能省下整个下午。
