在华为云(以及目前绝大多数主流公有云)上安装 Ubuntu 22.04,结论非常明确:请选择 UEFI 模式。
这里没有“传统 BIOS”这个选项供你纠结,原因如下,我将从技术架构、合规性以及实际操作三个维度给你拆解清楚。
1. 核心事实:公有云虚拟机默认就是 UEFI
首先要纠正一个常见的认知误区:云服务器(ECS/CVM)和物理机不同。
- 物理机/自建机房:你可以进入主板 BIOS 设置界面,手动切换 Legacy (BIOS) 或 UEFI。
- 华为云 ECS:底层的虚拟化层(Hypervisor)已经固化了启动方式。华为云的所有新规格实例(包括通用型、计算提速型等),其虚拟机的固件类型(Firmware Type)强制为 UEFI。
你在创建云服务器时,虽然界面上可能不会直接出现“选择 BIOS 还是 UEFI”的下拉框,但你选择的“镜像”类型决定了这一点。Ubuntu 22.04 的官方镜像以及华为云提供的公共镜像,底层都是基于 UEFI 标准构建的。
2. 为什么必须用 UEFI?(技术必要性)
如果你强行尝试在非 UEFI 环境下运行 Ubuntu 22.04,会遇到以下硬伤:
A. GPT 分区表支持
UEFI 强制要求使用 GPT(GUID Partition Table)分区格式,而传统的 Legacy BIOS 主要依赖 MBR。
- Ubuntu 22.04 的最佳实践:推荐使用 GPT + ESP(EFI System Partition)。
- 优势:GPT 支持大于 2TB 的硬盘,且分区数量不受限制。对于云服务器来说,数据盘扩容、快照管理都更依赖于现代分区标准。
B. Secure Boot(安全启动)与内核模块
Ubuntu 22.04 默认启用了 Secure Boot。虽然华为云的公共镜像通常预签了必要的密钥以兼容 Secure Boot,但如果你关闭 UEFI 或切换到 Legacy 模式,会导致:
- 无法加载某些受保护的驱动模块。
- 系统启动失败或进入紧急模式。
- 部分第三方软件(如 NVIDIA GPU 驱动、某些数据库插件)需要 DKMS 重新编译,这在非 UEFI 环境下极易出错。
C. 性能优化
UEFI 启动过程比 Legacy BIOS 更快,因为它可以直接加载 EFI 应用程序,无需经过复杂的实模式过渡。虽然对服务器影响不大,但在高并发启动场景下,UEFI 是更优解。
3. 实际操作建议:如何确保正确部署?
既然不能手动选,那该怎么保证你的 Ubuntu 22.04 是在 UEFI 模式下运行的?
✅ 正确做法:使用华为云公共镜像或自定义镜像
-
创建实例时:
- 在“镜像”选择页面,选择 “公共镜像” -> “Ubuntu Server 22.04 LTS”。
- 华为云提供的这些镜像已经预配置好 UEFI 引导项(GRUB EFI)。
- 不需要任何额外操作,实例启动后即为 UEFI 模式。
-
验证是否成功:
登录到 Ubuntu 22.04 实例后,执行以下命令确认:# 检查是否存在 /sys/firmware/efi 目录 ls /sys/firmware/efi # 如果返回内容而非报错,则说明当前运行在 UEFI 模式或者使用
mokutil --sb-state查看 Secure Boot 状态(需安装 mokutil):sudo mokutil --sb-state
❌ 错误做法:从本地 ISO 上传并尝试 Legacy 模式
有些用户习惯从官网下载 Ubuntu ISO,然后通过“私有镜像”功能上传到华为云。这时需要注意:
- 不要使用旧的 Legacy 安装器:如果你使用的是旧版 Ubuntu 安装程序或未正确配置 GRUB-EFI 的自定义镜像,可能会导致启动问题。
- 推荐方式:即使是从 ISO 制作私有镜像,也务必使用
virt-install或cloud-init工具链,并确保生成的镜像包含grub-efi-amd64-signed包。 - 华为云最佳实践:直接使用华为云市场中的 Ubuntu 22.04 镜像,或参考华为云官方文档《创建 Linux 私有镜像》中关于 UEFI 的配置步骤。
4. 常见疑问解答
Q:我的业务需要兼容老旧系统,能不能强制用 BIOS?
A:不行。 华为云底层不支持 Legacy BIOS 启动的虚拟机。如果你的应用确实依赖 Legacy 环境,建议:
- 使用容器化部署(Docker/K8s),与应用层解耦。
- 在内部自建 Kubernetes 集群中使用 KubeVirt 等技术模拟,但这属于高级运维范畴,不推荐用于生产环境核心业务。
Q:升级 Ubuntu 版本会影响吗?
A:Ubuntu 20.04 开始就全面转向 UEFI 优先,22.04 更是完全拥抱 UEFI。所有后续版本(24.04+)都将延续这一标准。因此,无需担心未来兼容性。
Q:双系统或多引导怎么办?
A:在云服务器上,通常只运行单一操作系统。如果需要多系统,应通过不同的实例或容器实现,而不是在同一台 ECS 上搞复杂的双引导。UEFI 下的 GRUB 配置相对简单,只需挂载 ESP 分区即可。
总结
| 项目 | 推荐方案 |
|---|---|
| 启动模式 | UEFI(唯一可行选项) |
| 分区格式 | GPT |
| 文件系统 | ext4 / xfs |
| 镜像来源 | 华为云公共镜像或官方认证的私有镜像 |
| 验证命令 | ls /sys/firmware/efi |
一句话建议:别纠结,直接用华为云提供的 Ubuntu 22.04 公共镜像创建实例,它天生就是 UEFI 模式,稳定、安全、符合规范。
云技术博客