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 设备支持、
