在 UEFI 架构的服务器(无论是物理机还是云主机裸金属)上安装 Ubuntu 22.04,核心痛点通常不在“能不能装”,而在“装完能不能正常引导”以及“后续维护是否方便”。
相比传统的 BIOS+MBR 时代,UEFI 引入了安全启动、分区的规范性要求以及更严格的文件系统限制。以下是基于实际生产环境踩坑经验总结的关键配置点:
1. EFI System Partition (ESP) 是重中之重
这是最容易出错的地方。在 UEFI 模式下,必须存在一个 FAT32 格式的分区作为 EFI 系统分区(ESP)。
- 大小建议:官方文档说 512MB 足够,但在服务器场景下,如果你打算多版本共存或保留多个内核备份,建议给 512MB – 1GB。太小了装几个内核更新就满了,导致无法启动。
- 挂载点:必须是
/boot/efi。注意,不要把它和/boot混在一起。 - 格式与标签:确保格式化为
vfat。为了方便识别,可以用mkfs.vfat -F 32 -n EFI /dev/sdXN设置卷标为EFI,这样在多磁盘环境中更容易定位。 - 权限:默认情况下,ESP 分区应该是全局可读可写,但通常不需要特殊权限修改。确保安装过程中没有因为权限问题导致 grub 文件写入失败。
2. GPT 分区表 vs MBR
- 强制使用 GPT:UEFI 机器必须配合 GPT 分区表。如果你看到选项里有 MBR,直接忽略。
- BIOS Boot Partition(仅针对特殊情况):
- 如果你只是做纯 UEFI 引导,不需要创建所谓的 “bios_grub” 分区(那是 Legacy BIOS + GPT 混合模式才需要的)。
- 但是,如果你的服务器 RAID 卡或者某些特定硬件对纯 UEFI 支持有 bug,可能需要预留一个 1MB 左右的未格式化分区用于 GRUB 第二阶段引导。大多数现代 Ubuntu 22.04 安装器会自动处理,但如果手动分区,请确认你的引导加载器能直接读取 ESP 中的文件。
3. Secure Boot(安全启动)的处理策略
国内很多云服务器厂商(如阿里云、腾讯云、华为云)的裸金属实例或自建 IDC 服务器,出于兼容性考虑,往往默认关闭 Secure Boot,或者只允许签名过的内核。
- 生产环境建议:关闭 Secure Boot。
- 原因:Ubuntu 22.04 虽然支持 Secure Boot,但当你需要安装第三方驱动(如 NVIDIA 闭源驱动、ZFS 模块、某些网卡驱动)时,这些驱动往往没有经过微软或 Canonical 的严格签名认证。开启后会导致模块加载失败,系统蓝屏或黑屏。
- 操作:进入 BIOS/UEFI 设置,找到
Secure Boot选项,设为Disabled。
- 如果必须开启:你需要提前导入 Machine Owner Key (MOK),并在安装后通过
mokutil --import导入你的公钥,这在自动化部署中非常麻烦,不适合大规模服务器集群。
4. 网络接口命名与 IPMI/iLO 冲突
服务器网卡数量多,且常有管理口(BMC/IPMI)和业务网口。
- 预测性网络命名:Ubuntu 22.04 默认启用
systemd-networkd或 NetworkManager 的预测性命名规则(如ens1f0)。这比旧的eth0更可预测,但需要你在配置静态 IP 时明确对应关系。 - 关键检查:在安装前,务必通过 IPMI/iLO/ILO 查看当前物理网口的 MAC 地址和名称映射。避免把业务流量配到了管理口上。
- Netplan 配置:22.04 使用 Netplan。编辑
/etc/netplan/*.yaml时,确保指定正确的match条件(MAC 地址或 driver),而不是硬编码接口名,因为重启后接口名可能因 PCIe 枚举顺序变化而改变。
5. Grub 配置与内核参数
- GRUB_TIMEOUT:服务器通常无人值守,建议将
GRUB_TIMEOUT=0或极小值,避免卡在启动菜单。 - console=ttyS0,115200n8:对于远程管理至关重要的服务器,确保内核命令行包含串口控制台输出。这样即使图形界面挂了,你还能通过 IPMI 的虚拟控制台看到日志。
- 修改
/etc/default/grub中的GRUB_CMDLINE_LINUX_DEFAULT,添加上述参数。 - 执行
sudo update-grub生效。
- 修改
- UEFI 变量清理:如果之前装过 Windows 或其他 Linux,UEFI NVRAM 里可能有残留的启动项。安装 Ubuntu 后,用
efibootmgr检查并删除无用的启动条目,防止混乱。
6. 文件系统选择:ext4 vs ZFS
- 推荐 ext4:对于大多数通用服务器,ext4 稳定、性能可预测、恢复工具丰富。
- 谨慎使用 ZFS:虽然 Ubuntu 22.04 对 ZFS 支持很好,但在 UEFI 服务器上,ZFS 的 bootfs 机制需要额外配置。如果选 ZFS,安装器会自动创建 ESP 和 ZFS 根文件系统。但要注意,ZFS 的内核模块较大,可能影响启动速度,且在某些老旧 RAID 卡上兼容性不佳。除非你有明确的快照/复制需求,否则优先选 ext4。
7. 常见坑点排查清单
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 安装后重启进不了系统,直接跳回 BIOS | ESP 分区未正确挂载或 grub 未安装到 ESP | 检查 /boot/efi 是否存在,重新运行 sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu |
| 启动时提示 “No bootable device” | UEFI 启动顺序错误,或 ESP 分区不是 FAT32 | 进 BIOS 调整启动顺序,确认 ESP 分区格式 |
| 无法获取 IP 地址 | 网卡驱动缺失或 netplan 配置错误 | 检查 ip a,确认网卡是否被识别;检查 /etc/netplan/ 下的 yaml 语法 |
| 时间不同步 | NTP 服务未启动或时区设置错误 | 安装 chrony 或 ntp,设置 timedatectl set-timezone Asia/Shanghai |
8. 自动化部署建议(Kickstart/Autoinstall)
如果是批量部署,推荐使用 Ubuntu 22.04 的 Autoinstall 功能(基于 cloud-init)。
- 编写
user-dataYAML 文件。 - 重点配置
storage部分,明确定义 ESP 分区的大小和类型。 - 示例片段:
storage: config: - ptable: gpt path: /dev/sda type: disk wipe: superblock - {ptype: ef00, size: 512M, flag: boot, number: 1, type: partition} # ESP - {fstype: fat32, volume: <partition_id>, label: EFI} # 格式化 ESP - {fstype: ext4, volume: <root_partition_id>}
总结
在 UEFI 服务器上装 Ubuntu 22.04,记住三个关键词:GPT、ESP (/boot/efi)、关 Secure Boot。只要这三个环节不出错,剩下的就是标准的 Linux 安装流程。别迷信图形化安装器的“自动分区”,对于服务器,手动规划分区表永远是最稳妥的选择。
云技术博客