背景
昨天试图安装 Windows11 + Debian13 双系统,完成安装后重启总是直接进入Windows。历经折腾解决了问题(启动后进入Grub菜单,菜单列表中有Windows启动项)。
- 条件:Windows + Debian 安装在同一硬盘,采用同一 ESP 引导。
- 关键动作:Debian分区时,选择既有 ESP 设置挂载点为 /boot/efi。
- 重点说明:Windows 和 Debian 引导程序共享同一个 ESP (EFI 系统分区)。
心得
以下是经历本次安装后的心得,没有详细操作说明。
-
安装前检测 UEFI 中的选项
- Secure Boot 设置为 Disabled。
- Boot Mode 设置为 UEFI Only 或 UEFI First。(找不到该项目就跳过)
-
Debian安装镜像
安装镜像主要有3种:netinst (网络安装镜像)、完整 DVD/CD 镜像、Live 镜像。对应 Debian13,名称分别为:debian-13.6.0-amd64-netinst.iso、debian-13.6.0-amd64-DVD-1.iso、debian-live-13.6.0-amd64-kde.iso。
建议初学者采用 Live 镜像,它可以像运行一个完整的操作系统一样,直接从U盘启动进而操作计算机,方便安装出现异常后解决问题。
建议用 Rufus 制作 Debian 镜像。
-
先安装 Windows
先安装 Windows,并在安装分区时给 ESP 留出 500 MB 的空间。在完成 Windows 后,ESP 中就存在了一个 EFI 文件夹,包含: Boot 和 Microsoft 两个子文件夹。
/EFI/Microsoft这个路径,用来存放Windows的引导文件。而/EFI/Boot是UEFI规范规定的默认启动路径,用于兼容性引导(当UEFI找不到其他有效的启动项时,会尝试这个路径)。
ESP (FAT32分区)
└── EFI
├── Boot
│ └── bootx64.efi (默认的UEFI启动文件)
└── Microsoft
├── Boot
│ ├── bootmgfw.efi (Windows的引导管理器)
│ └── BCD (Windows的启动配置数据)
└── Recovery (Windows恢复环境)
-
再安装 Debian
在分区时,注意保留 ESP,不能格式化,否则无法启动 Windows 。并将 ESP 挂载点设置为 /boot/efi,同时不要选择 boot 选项(这里有反例)。
令我困惑的是,我之前用 debian-13.6.0-amd64-DVD-1.iso 反复安装时,ESP 选择后没有选择挂载点的选项。在之后用 debian-live-13.6.0-amd64-kde.iso 安装时,是先进入了桌面,通过图标启动的安装,到了分区时,ESP 就有了挂载点设置选项。
安装完成后,ESP 中的目录结构为:
ESP (FAT32分区,比如挂载在 /boot/efi)
└── EFI
├── Boot
│ └── bootx64.efi (UEFI的默认后备启动文件)
│
├── Microsoft (Windows的“鞋盒”,完全独立)
│ └── Boot
│ ├── bootmgfw.efi (Windows的引导管理器,核心文件)
│ ├── bootmgr.efi (Windows的引导管理程序)
│ └── BCD (Windows的启动配置数据库,包含启动菜单)
│
└── debian (Debian的“鞋盒”,完全独立)
├── grubx64.efi (GRUB的主引导文件,Debian的引导管理器)
├── shimx64.efi (启用Secure Boot)
└── grub.cfg (GRUB的配置文件/boot/grub/grub.cfg)
-
UEFI 缓存启动项清除
由于历史安装可能导致 UEFI 的缓存 NVRAM 上有历史操作系统项,在 UEFI 设置启动顺序时会造成困惑。可能通过 Debian 中安装 efibootmgr,对不存在的启动项清除。这里不再详细说明。
-
手动安装 Grub
若手动安装 Grub,需注意明确路径和 id,如:
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
-
双硬盘或双 ESP
有时在安装双系统时,会采用双硬盘或双 ESP。所谓双硬盘,即各自安装于一块硬盘上,各自硬盘上都拥有自己的 ESP。而双 ESP,是同一块硬盘上各自采用一个 ESP来引导系统。这种情况会带来系统升级(无论是Windows 还是Debian)后找不到另一个 ESP 的问题(启动时只进入一个系统), 是高段位选手的操作空间,我们初学者还是尽量避免吧。
-
Grub中没有Windows启动项
要在 /etc/default/grub 中启用 os-probe 扫描系统,并更新 grub.cfg。再启动时就会找到 Windows 了。
总结
- 我遇到的问题和解决的办法同于 debian13安装 - #11,来自 beiluo ,所谓的 /boot 在 Debian 中就是 ESP, /boot/efi 挂载点就是 ESP 中的 EFI 文件夹。
- 请教debian12的uefi安装 - #7,来自 o1345 描述的解决办法是在手动拷贝 /boot/efi 中应该有的文件。只有概念清晰,也是可以解决问题的。
- 双系统可以共享分区中的文件,比如将 Windows 的 D 盘共享给 Debian 中的一个文件夹,只要配置好 /etc/fstab 即可,见参考链接。