在 Ubuntu 服务器场景下,UEFI 和传统 BIOS(Legacy)启动模式的区别,不仅仅是“新”与“旧”的迭代关系,更直接关系到底层硬件交互、安全机制以及云原生环境下的部署效率。
既然你问的是“实际区别”,我们就抛开那些教科书式的定义,从运维实操、性能表现和架构限制三个维度来拆解。
1. 分区表与文件系统:GPT vs MBR
这是最直观的区别,也是迁移成本最高的地方。
- BIOS (Legacy):强制使用 MBR 分区表。
- 硬伤:最大只支持 2TB 以下的磁盘。如果你的数据盘超过 2TB,或者你需要超过 4 个主分区,MBR 就玩不转了。
- 兼容性:几乎所有老硬件都认,但在新式 NVMe SSD 上,引导加载程序(GRUB)可能需要额外的补丁或配置才能正确识别驱动。
- UEFI:默认使用 GPT 分区表。
- 优势:理论上支持无限大的磁盘空间,最多支持 128 个主分区。对于现代服务器动辄几十 TB 存储池来说,这是刚需。
- EFI System Partition (ESP):UEFI 需要一个专门的 FAT32 格式的 ESP 分区来存放引导文件(
/boot/efi)。这意味着你在安装 Ubuntu Server 时,必须手动或自动预留这个分区。如果不小心把/boot放在非 EFI 分区,或者挂载点搞错,机器直接进不了系统。
实操影响:如果你是在阿里云、腾讯云等国内主流云平台购买 ECS/CVM,现在默认都是 UEFI + GPT 组合。如果你试图用老旧的 ISO 镜像去刷一个配置为 Legacy 模式的实例,大概率会报 No bootable device 或者卡在 GRUB 界面。
2. 启动速度与初始化流程
很多运维人员觉得 UEFI 启动慢,其实是个误区。真正的差异在于“谁在做初始化的工作”。
- BIOS:
- POST(加电自检)过程非常繁琐且冗长。它需要逐个检测内存、PCIe 设备、USB 控制器等。
- GRUB 需要在实模式下运行,加载内核的过程涉及大量的代码转换和兼容层处理。
- 结果:开机时间通常在 30s – 60s 甚至更长,取决于硬件复杂度。
- UEFI:
- 固件本身是图形化界面的(虽然服务器端通常隐藏),POST 过程被大幅精简,很多检测交给 OS 内核去做(Driver Support Protocol)。
- GRUB 可以直接以 EFI 应用程序的形式运行,不需要经过实模式到保护模式的切换,加载内核的速度更快。
- 结果:在同等硬件下,UEFI 启动速度通常比 Legacy 快 30%-50%。对于需要快速弹性伸缩的云实例来说,这几十秒的差距是有意义的。
3. 安全性与安全启动(Secure Boot)
这是企业级部署中越来越重要的考量点。
- BIOS:没有原生的安全启动概念。你可以随意替换 bootloader,甚至可以植入 Rootkit 而不会被固件拦截。
- UEFI:支持 Secure Boot。
- Ubuntu Server 镜像默认包含签名好的内核和 GRUB 二进制文件。开启 Secure Boot 后,只有经过微软或 Canonical 签名的组件才能被执行。
- 实际痛点:在国内很多私有云或混合云环境中,如果你要加载第三方闭源驱动(比如某些 RAID 卡驱动、特定网卡的 offload 功能驱动),这些驱动往往没有通过 Secure Boot 的签名认证。一旦开启 Secure Boot,这些驱动加载失败,导致网络不通或存储不可用。
- 建议:除非你有明确的安全合规要求(如等保三级以上对固件完整性的要求),否则在纯 Linux 服务器场景中,建议关闭 Secure Boot,以免引入不必要的调试麻烦。
4. 虚拟化与云环境下的特殊考量
如果你是在 KVM、OpenStack 或国内各大云厂商的虚拟机上跑 Ubuntu,情况又有所不同。
- HVM vs PV:
- 传统上,PV(Paravirtualized)驱动性能更好,但不依赖具体的 CPU 虚拟化指令集。
- 现代云服务器几乎全量采用 HVM(Hardware Virtual Machine),并模拟 UEFI 固件(如 OVMF)。
- 热插拔支持:
- UEFI 对 PCIe 设备的热插拔支持远优于 BIOS。如果你在云上需要做动态扩容网卡、GPU 直通等操作,UEFI 模式下的设备枚举和重新初始化更加稳定。
- 镜像制作工具:
- 使用
virt-builder或Packer制作自定义镜像时,UEFI 模板生成的镜像结构更标准。Legacy 模式往往需要手动调整fdisk分区和grub-install的参数,容易出错。
- 使用
总结与建议
什么时候选 UEFI?
- 所有新建的生产环境服务器。
- 磁盘容量超过 2TB。
- 需要使用 Secure Boot(需确保驱动已签名)。
- 在主流公有云(阿里云、腾讯云、华为云、AWS 等)创建实例。
- 追求更快的启动速度和更好的硬件兼容性(尤其是 NVMe SSD)。
什么时候还能见到 Legacy BIOS?
- 维护极其古老的遗留系统(10 年前的硬件)。
- 某些特定的嵌入式 ARM 服务器或老旧的 IPMI 管理口限制。
- 个人实验室里为了研究 GRUB 底层原理而故意搭建的环境。
给 Ubuntu Server 管理员的一条铁律:
在安装过程中,如果使用 subiquity(Ubuntu 20.04+ 的新安装器),选择 “Custom storage layout” 时,务必确认分区方案是 GPT,并且有一个独立的 /boot/efi 分区挂载为 EFI System Type。不要试图在 UEFI 主板上去模拟 MBR 的行为,那是自找麻烦。
最后提醒一点:一旦从 Legacy 切换到 UEFI,或者反过来,无法直接无损转换。通常需要备份数据,重新分区,重装系统或进行复杂的镜像转换操作。所以,在项目初期选型阶段,定死 UEFI 是唯一正确的选择。
云技术博客