如何通过Windows命令提示符为ext4分区中的GRUB添加手动启动项
如何通过Windows命令提示符为ext4分区中的GRUB添加手动启动项
嘿,我之前也踩过Insyde BIOS的坑,这种基础款BIOS完全不给手动添加EFI启动项的选项,确实闹心。不过别慌,咱们可以通过Windows的命令提示符来搞定这个问题,步骤很清晰:
步骤1:挂载EFI系统分区(ESP)
首先得把那个存着GRUB EFI文件的FAT32分区(你说的Volume3)给挂载上,Windows默认不会自动挂载ESP:
- 右键点击开始菜单,选择「Windows终端(管理员)」或者「命令提示符(管理员)」,一定要用管理员权限哦
- 输入
diskpart进入磁盘分区管理工具 - 输入
list disk,找到你的第二块SSD(看容量就能区分开),记下来它的磁盘号(比如Disk 1) - 输入
select disk X(把X换成你刚才找到的磁盘号) - 输入
list partition,找到那个FAT32格式的分区(一般是几百MB大小,类型显示为「系统」),记下来分区号 - 输入
select partition Y(Y是分区号) - 输入
assign letter=Z:给这个分区分配一个盘符,选一个没被占用的就行,这里用Z举例 - 输入
exit退出diskpart工具
步骤2:把GRUB添加到Windows启动引导项
回到命令提示符窗口,执行下面的命令来添加启动项:
- 先创建一个新的启动项:
这里的bcdedit /create /d "Arch Linux (GRUB)" /application bootsector"Arch Linux (GRUB)"是启动项的显示名称,你可以改成自己喜欢的,比如「Arch引导」都行 - 执行完上面的命令后,会返回一个类似
{1a2b3c4d-5e6f-7g8h-9i0j-klmnopqrstuv}的GUID,把这个字符串复制下来,后面要用到 - 设置启动项对应的设备:
把bcdedit /set {你的GUID} device partition=Z:{你的GUID}替换成刚才复制的那个字符串 - 指定GRUB EFI文件的路径:
bcdedit /set {你的GUID} path \EFI\grub\grubx64.efi - 把这个新启动项加到开机选择菜单里:
要是你想让它排在菜单最前面,就把bcdedit /displayorder {你的GUID} /addlast/addlast改成/addfirst
步骤3:验证和收尾
- 重启电脑,你就能在Windows启动管理器里看到刚才创建的「Arch Linux (GRUB)」选项了,选它就能进入GRUB引导Arch了
- 如果以后不需要那个ESP分区的盘符Z了,可以再打开diskpart,选中对应分区后输入
remove letter=Z:来移除盘符
哦对了,这里要提一句:UEFI本身是不支持读取ext4分区的,所以你说的GRUB EFI文件在ext4里其实是个误区——GRUB的EFI引导文件必须放在FAT32格式的ESP分区里才能被UEFI识别。你用LinuxReader看到的路径应该是ESP分区里的路径,不是ext4的。如果真的是在ext4分区里,那得先把grubx64.efi复制到ESP分区的EFI/grub目录下,再按上面的步骤操作。
备注:内容来源于stack exchange,提问作者DavidGordiienko




