这是一个非常经典且容易让新手踩坑的问题。很多刚接触云服务器的同学,在创建实例时看到“UEFI”和“Legacy BIOS(非UEFI)”两个选项,往往随手点一个,结果后续装系统、配网络或者做某些底层操作时莫名其妙报错,排查半天才发现是启动模式不匹配。
简单直接地说,区分这两者主要是为了兼容不同的硬件架构、引导加载程序(Bootloader)机制以及特定的安全合规要求。对于Ubuntu这种主流Linux发行版来说,虽然内核本身对两者支持都很好,但镜像层面的区分背后有以下几个核心逻辑:
1. 硬件抽象层与固件接口的差异
首先得厘清概念:UEFI(Unified Extensible Firmware Interface) 是现代计算机的标准固件接口,它取代了老旧的 BIOS(Basic Input/Output System)。
- Legacy BIOS(非UEFI):这是传统的启动方式,通过MBR(Master Boot Record)分区表来定位引导扇区。它的最大特点是兼容性极强,几乎能启动过去20年所有的操作系统,但它不支持大于2TB的硬盘(除非使用GPT+特殊补丁),且没有图形化界面,调试困难。
- UEFI:这是现代标准,通常配合GPT(GUID Partition Table)分区表使用。它支持更大的硬盘、更快的启动速度、更安全的启动流程(Secure Boot),并且可以在固件层提供简单的图形界面。
云平台提供两种镜像,本质上是因为底层的虚拟化硬件模拟不同。有些老旧的虚拟化平台或者特定的轻量级实例类型,为了节省资源或保持最大兼容性,依然模拟的是传统BIOS环境;而新的通用型、计算增强型实例,默认就是UEFI环境。
2. Ubuntu 自身的引导机制变化
从 Ubuntu 18.04 开始,Canonical 官方就逐步将 UEFI 作为默认的推荐启动方式,尤其是针对 64 位系统。
- GRUB 的配置差异:在 Legacy BIOS 模式下,GRUB 通常安装在
/dev/sda的前几个扇区(boot sector)。而在 UEFI 模式下,GRUB 需要安装在一个独立的 EFI System Partition (ESP),这个分区通常是 FAT32 格式,挂载在/boot/efi。 - 镜像打包内容不同:如果你下载一个“UEFI版”的Ubuntu ISO,里面会包含
shim和grub-efi等专门用于处理 EFI 签名的组件。而非UEFI版则主要依赖传统的grub-pc。如果用户试图在非UEFI的硬件上强行引导UEFI镜像中的内核,或者反过来,都会导致“找不到引导设备”或“Kernel Panic”。
所以,云平台制作镜像时,必须根据目标实例的固件类型,预先配置好 GRUB 的安装位置和参数。这就是为什么你不能随意混用的原因。
3. 安全启动(Secure Boot)的需求
这是近年来区分两者的另一个重要驱动力,特别是在XX、XX等对安全性要求较高的场景。
- UEFI + Secure Boot:允许验证引导加载程序和内核模块的数字签名。这意味着只有经过厂商(如 Canonical)签名的内核才能被加载。这能有效防止 rootkit 等恶意软件在内核级别驻留。
- Legacy BIOS:传统 BIOS 几乎没有内置的安全启动机制,完全依赖操作系统自身的安全策略。
如果你的业务场景要求通过等保三级、四级认证,或者需要使用 TPM(可信平台模块)进行密钥存储,那么 UEFI 几乎是必选项。因此,云平台会专门提供开启 Secure Boot 支持的 UEFI 镜像,供这类高安全需求用户使用。
4. 性能优化与新特性支持
虽然在日常 Web 服务中感知不强,但在高性能计算场景中,UEFI 有优势:
- 启动速度:UEFI 可以并行初始化硬件,比传统 BIOS 的顺序扫描快得多。对于需要快速冷启动的容器集群或批处理任务,几秒的差异也是有意义的。
- ACPI 支持:UEFI 提供更完善的高级配置与电源接口(ACPI)支持,这对于多路 CPU、NUMA 架构的服务器调度至关重要。Legacy BIOS 对这些复杂拓扑的支持较差,可能导致内核无法正确识别所有 CPU 核心或内存节点。
5. 国内云厂商的实际考量
以阿里云、腾讯云、华为云为例,他们的做法略有不同,但逻辑一致:
- 阿里云:早期 ECS 实例多为 KVM 虚拟化,默认提供 Legacy BIOS 镜像以确保兼容性。后来随着 x86_64 成为绝对主流,新建实例默认推荐 UEFI。但对于一些老用户迁移过来的系统,或者使用特定老旧镜像家族的场景,依然保留 Legacy 选项。
- 华为云:由于华为在鲲鹏(ARM)和昇腾(AI)领域的布局,其 UEFI 实现更加标准化。特别是在 ARM 架构服务器上,UEFI 是唯一可行的启动方式,因为 ARM 平台的 BIOS 实现本身就趋向于 UEFI 规范。
- 腾讯云:类似,其 CVM 实例在创建时会提示选择启动模式。对于需要安装 Windows Server 2019/2022 的用户,UEFI 也是必须的,因此 Linux 镜像也同步提供了对应版本,方便运维人员统一维护。
总结与建议
为什么区分?
- 硬件兼容性:适配不同代际的虚拟化硬件(旧模拟BIOS vs 新原生UEFI)。
- 引导机制:GRUB 安装位置不同(MBR vs ESP分区),镜像预配置内容不同。
- 安全合规:支持 Secure Boot 和 TPM,满足高等级安全需求。
- 性能与特性:更好的多核支持、更快的启动速度。
怎么选?
- 绝大多数新用户:直接选 UEFI。这是未来趋势,兼容性更好,性能更优,且符合主流最佳实践。
- 老旧应用迁移:如果你是从物理机迁移上来的老系统,或者使用的第三方闭源软件明确只支持 Legacy BIOS,再考虑非UEFI版。
- ARM 架构实例:只能选 UEFI。
最后提醒一点:一旦实例创建成功,启动模式就不能更改了。如果你想从 Legacy 切换到 UEFI,通常需要重新创建磁盘并重装系统,或者使用复杂的镜像转换工具(如阿里云的镜像复制功能可能支持格式转换,但需谨慎测试)。所以在创建初期选对,能省去大量麻烦。
云技术博客