理论
概念理解
- UEFI
UEFI菜单是固件(firmware)的一部分,它是现代计算机系统中的一个更先进的替代传统BIOS的接口。它提供了一个图形化或文本界面的启动管理器,允许用户选择从哪些设备或操作系统启动。 - BCD
BCD菜单是Windows操作系统的一部分,由bcdedit命令管理。它存储在BCD存储(Boot Configuration Data store)中,定义了Windows如何启动,包括启动多个操作系统的选项、启动参数等。
引导启动过程
- UEFI启动
- NVRAM持久的EFI 文件启动项
- \EFI\Microsoft\Boot\bootmgfw.efi
- \EFI\Ventoy\bootx64.efi
- \ISO\WePE.iso
- \ventoy\ventoy_grub.cfg
- \EFI\Microsoft 1\Boot\bootmgfw.efi
- \EFI\Microsoft 2\Boot\bootmgfw.efi
- \EFI|Linux\grub.efi
- 外设的EFI启动项
- EFI分区 \EFI\BOOT\bootx64.efi
- 默认启动项
- EFI分区 \EFI\BOOT\bootx64.efi
- Legacy启动
维护手册
NVRAM
- DG修改UEFI
- bootice修改UEFI
- bcdedit命令
MBR
- 修复MBR:bootrec /fixmbr,即主引导记录,磁盘的第一个扇区512字节
- 修复PBR:bootrec /fixboot,即引导扇区,分区的起始处引导代码,bootmgr也在这个分区
EFI
- 创建分区:diskgenius可以创建efi分区,分配盘符或隐藏盘符
- 查看分区GUID:mountvol
- 格式化分区:
format H: /FS:FAT32
- 查看UEFI菜单:bcdedit /enum firmware
- 复制启动项:bcdedit /copy {current} /d "gpd win11 on 2230"
- 默认启动项:bcdedit /default {identifier}
- 删除启动项:bcdedit /delete {identifier}
- 修改启动项名称:bcdedit /set {a75ab60d-001a-11f0-9dea-806e6f6e6963} description "BC711 512GB - Window 11 HOME GPD"
bootmgr
- 查看BCD菜单:bcdedit 或 bcdedit /store X:\EFI\Microsoft\Boot\BCD
- 启动时显示菜单:bcdedit /set {bootmgr} displaybootmenu yes
- 扫描所有系统:bootrec /scanos
- 重建启动项:
bcdboot E:\windows /s F: /f UEFI
复制系统文件,重建EFI和BCD文件- efi/windows/boot/bootmgfw.efi覆盖到efi/boot/bootx64.efi,启动会默认查找efi/microsoft/boot/BCD
- 自动添加启动项:bootrec /rebuildbcd
- 启动超时:bcdedit /timeout 30
- 备份:bcdedit /export C:\BCD_Backup
- 恢复:bcdedit /import C:\BCD_Backup
grub
- 挂载EFI分区:sudo mount /dev/nvme1n1p1 /mnt/boot/efi
- 安装grub启动管理:sudo grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --boot-directory=/mnt/boot
- 自动扫描启动项
- 切换到chroot环境:
sudo chroot /mnt
- 扫描生成grub启动项:
os-prober
- 更新grub配置:
update-grub
- 退出chroot环境:
exit
系统安装
- 双盘双系统
- 独享EFI:两个盘有各自的EFI分区,有各自的BCD,指向各自系统所在分区
- 共享EFI:主盘EFI的BCD,增加启动项,指向副盘系统所在分区
- 单盘双系统
- 双windows:安装系统到两个分区,在EFI分区的BCD有两个启动项,指向两个系统分区
- win+linux:安装两种系统后,因为windows的启动管理bootmgr封闭,所以需要修复为grub来管理win和linux两个启动项
- 单盘三系统
- 添加启动项:对EFI分区下的BCD或Grub进行维护,添加新启动项
常见问题
EFI修复
- EFI的BCD修复
- 格式化:format H: /FS:FAT32
- 重建:bcdboot E:\windows /s H: /f UEFI
- Diskgenius或bootice修改UEFI启动顺序或内容时,很多时候没有生效
- 软件修改的内容没有固化到BIOS NVRAM区域,每次启动会重载
-
MBR修复
- 用bootice修复分区引导PBR选bootmgr,再修复硬盘MBR即可
- 外置后分区GUID变了
- 修复EFI:不需要修复,旧GUID没扫到自动失效,新GUID自动扫入启动菜单,所见即正确
- 修复BCD:bcdboot E:\Windows /s F: /f UEFI
bcdedit /store I:\EFI\Microsoft\Boot\BCD /copy {5b230f5b-ec32-11ef-9700-d162f58c607e} /d "Windows 11 USB 2230"