1. 多系统启动基础:BIOS 与 UEFI 的区别、启动模式选择与引导管理器

做多系统启动,第一个绕不开的问题就是:你的电脑到底是怎么把系统拽起来的?

我见过太多人,硬盘上装了 Windows 和 Linux,结果死活进不去其中一个。折腾半天,最后发现是启动模式没选对。说白了,就是 BIOS 和 UEFI 这俩东西没搞清楚。

今天咱们就把这个根儿上的问题捋清楚。

1.1 BIOS 与 UEFI:两代启动固件的本质差异

BIOS 和 UEFI,都是主板上的固件,负责在开机时初始化硬件、加载操作系统。但它们的干活方式完全不同。

对比维度 BIOS (Legacy) UEFI
界面 纯文本,键盘操作 支持图形,可鼠标操作
磁盘分区 MBR(主引导记录) GPT(GUID 分区表)
磁盘容量 最大支持 2TB 支持 2TB 以上
启动速度 较慢,逐项自检 较快,并行初始化
引导程序位置 MBR(磁盘第一个扇区) ESP(EFI 系统分区)
安全性 无 Secure Boot 支持 Secure Boot
架构 16 位实模式 32/64 位保护模式

嗯,这里要注意一个关键点:BIOS 只能从 MBR 磁盘启动,UEFI 只能从 GPT 磁盘启动。这是硬性约束,没得商量。

核心结论:如果你用的是 2012 年以后买的电脑,默认都是 UEFI + GPT。强行改成 Legacy 模式,反而会损失性能和安全特性。

1.2 Legacy 与 UEFI 启动模式:怎么选?

我个人习惯,只要硬件支持,一律选 UEFI。为什么?

  • 速度快:UEFI 跳过 BIOS 的冗长自检,直接加载操作系统。我实测过,同一台机器,UEFI 启动比 Legacy 快 5-8 秒。
  • 容量大:MBR 分区表只能管理 2TB 磁盘。现在随便一块硬盘就 4TB、8TB,不用 GPT 根本认不全。
  • 安全:Secure Boot 能防止未签名的引导程序被加载,对多系统环境来说,这是个额外的保护层。

但有一种情况,你不得不选 Legacy:安装老系统。比如 Windows 7 早期版本、某些定制 Linux 发行版,它们根本不认识 UEFI。我在项目中遇到过一台工控机,必须装 Windows XP,那只能切回 Legacy 模式。

避坑指南:我曾经在给客户装双系统时,忘了检查主板默认模式。结果 Windows 装在 UEFI 下,Linux 装在 Legacy 下。两个系统各自都能启动,但想切换就得进 BIOS 改模式。折腾了一下午才搞定。所以,所有系统必须统一启动模式。

1.3 启动顺序与引导管理器

启动顺序,就是主板固件按照你设定的优先级,去检查每个设备上有没有可启动的操作系统。你想想看,如果第一启动项是 U 盘,那插着 U 盘开机,它就不会进硬盘系统。

引导管理器,则是安装在磁盘上的小程序,负责把系统内核加载进内存。常见的引导管理器有:

  • Windows Boot Manager:Windows 自带的,只能引导 Windows。
  • GRUB2:Linux 世界的主流,能引导几乎所有操作系统。
  • systemd-boot:轻量级 UEFI 引导管理器,Arch Linux 用户比较喜欢。
  • rEFInd:图形化引导管理器,适合多系统切换。

在多系统环境下,我通常的做法是:让 GRUB2 作为主引导管理器。它识别能力强,配置灵活,还能自动探测已安装的其他系统。

下面这张图,展示了 UEFI 模式下多系统启动的完整流程:

UEFI 多系统启动流程 UEFI 多系统启动流程 按下电源按钮 UEFI 固件初始化硬件 读取 NVRAM 中的启动项列表 加载引导管理器 (GRUB2) 用户选择要启动的系统 Windows Boot Manager Linux 内核 其他系统 (BSD/macOS) 所有引导程序均存放在 ESP 分区(EFI System Partition)中,格式为 FAT32

这张图里,最关键的一步是读取 NVRAM 启动项。UEFI 固件会把可启动的 EFI 程序路径记录在主板的 NVRAM 芯片里。你装完 Linux 后,GRUB2 的 .efi 文件会被注册进去,下次开机就能直接识别。

1.4 实战:查看当前启动模式

动手之前,先确认你的机器当前是什么模式。方法很简单:

Windows 下:

# 打开 PowerShell(管理员),运行:
bcdedit /enum {current} | find "path"

# 如果输出包含 \Windows\system32\winload.efi,就是 UEFI 模式
# 如果输出包含 \Windows\system32\winload.exe,就是 Legacy 模式

Linux 下:

# 查看 /sys/firmware/efi 目录是否存在
ls /sys/firmware/efi

# 如果目录存在且有内容,说明是 UEFI 模式
# 如果提示 "No such file or directory",就是 Legacy 模式

重要提醒:启动模式一旦确定,不要随意切换。从 Legacy 切换到 UEFI,需要重新分区为 GPT 并重建引导。从 UEFI 切回 Legacy,则需要把磁盘转为 MBR。这两种操作都会导致现有系统无法启动。

1.5 引导管理器配置示例

最后,给一个 GRUB2 的典型配置片段。假设你装了 Windows 10 和 Ubuntu 双系统:

# /etc/default/grub 关键配置
GRUB_DEFAULT=saved          # 记住上次选择的系统
GRUB_TIMEOUT=5              # 等待 5 秒
GRUB_GFXMODE=1920x1080      # 设置图形模式分辨率
GRUB_DISABLE_OS_PROBER=false # 允许探测其他系统

# 更新 GRUB 配置后,运行:
sudo update-grub

运行 update-grub 后,GRUB2 会自动扫描所有磁盘,找到 Windows Boot Manager 并添加到启动菜单。这就是多系统启动的基石。

嗯,这一章的内容就到这里。BIOS 和 UEFI 的区别、启动模式的选择、引导管理器的作用,这三件事搞明白了,后面分区和参数适配才不会跑偏。