xpt*_*xpt 4 dual-boot boot windows grub2
基本上我丢失了 Windows 8 启动选项,并且 Windows 安装介质的启动修复无法解决问题。
我知道这或多或少是 Windows 的问题,但我正在寻求一种efibootmgr
解决方案,而不是使用更尴尬的基于 Windows 的bcdedit
命令的解决方案。因此我在这里问而不是超级用户。
详细的背景在这里,基本上我的系统是在 BIOS/MBR/CSM 模式下初始设置的,Windows 10 拒绝安装在那里,所以我必须将我的 MBR 磁盘转换为 GPT。之后我让 Linux 端的一切都正常工作,但通过 Windows 安装介质修复 Windows 启动失败。
update-grub
,但 GRUB 菜单中缺少我的 Windows 8。os-prober
无法列出/找到我的 Windows 8。我希望修复方法只是使用 重新添加我的 Windows 8 作为启动项efibootmgr
,但这正是我迷失并需要帮助的地方。可以在此处找到进一步详细信息(如当前分区架构)。谢谢。
也许我的 Windows 8 是以 BIOS/MBR/CSM 模式安装的,并且没有 EFI 启动功能,因为我/EFI
在其中没有看到目录?以下是我的 Windows 8 分区中的所有根级目录:
$Recycle.Bin/ ProgramData/
$WINDOWS.~BT/ Programs/
$Windows.~WS/ Recovery/
BOOTNXT Recovery.txt
BOOTSECT.BAK System Volume Information/
Boot/ Tmp/
Documents and Settings/ Users/
ESD/ Windows/
Intel/ bootmgr
Program Files/ pagefile.sys
Program Files (x86)/ swapfile.sys
Run Code Online (Sandbox Code Playgroud)
efibootmgr
或者也许我根本不需要,只需要一个自定义条目,/etc/grub.d/40_custom
如下所示?
menuentry "Windows 8 BIOS MBR" {
insmod part_msdos
insmod ntldr
insmod ntfs
ntldr (hd0,msdos1)/bootmgr
}
Run Code Online (Sandbox Code Playgroud)
好的,根据 @FelixJN 的请求,这里是答案而不是链接。
我的目的是寻求一个基于 Linux 的解决方案,因为至少使用ntldr
“加载 Windows”是我bootmgr
过去使用的技巧。就像,这应该有效:grub
grub4dos
menuentry "Windows 8 UEFI/GPT" {
insmod part_gpt
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root 28cf-35de
chainloader ($root)/EFI/Microsoft/Boot/bootmgfw.efi
}
Run Code Online (Sandbox Code Playgroud)
但我没有尝试它,因为我对 grub2 及其文档没有太多信心,而是转向 Windows 的解决方案,就像 @telcoM 总结的那样,
在 UEFI 模式下运行引导修复过程,将 Windows UEFI 引导加载程序写入 ESP 分区
以下是从此处采取的详细步骤。
将媒体 (DVD/USB) 插入 PC 并重新启动。
从媒体启动。
选择修复您的计算机。
选择疑难解答。
从菜单中选择命令提示符:
输入并运行命令:
diskpart
Run Code Online (Sandbox Code Playgroud)
输入并运行命令:
sel disk 0
Run Code Online (Sandbox Code Playgroud)
输入并运行命令:
list vol
Run Code Online (Sandbox Code Playgroud)
验证 EFI 分区(EPS - EFI 系统分区)是否使用 FAT32 文件系统并为其分配驱动器号(分配一个尚未使用的盘符。):
输入并运行命令:
sel vol <number of volume>
Run Code Online (Sandbox Code Playgroud)
输入并运行命令:
assign letter=<drive letter>:
Run Code Online (Sandbox Code Playgroud)
输入并运行命令:
exit
Run Code Online (Sandbox Code Playgroud)
为了修复引导记录:
输入并运行命令:
cd /d <drive letter>:\EFI\Microsoft\Boot\
Run Code Online (Sandbox Code Playgroud)
输入并运行命令:
bootrec /FixBoot
Run Code Online (Sandbox Code Playgroud)
此时,所有操作系统的下一步都是相同的:
重建 BCD 存储
首先运行以下命令来备份旧的 BCD:
ren BCD BCD.old
Run Code Online (Sandbox Code Playgroud)
现在使用以下命令重新创建它:
bcdboot c:\Windows /l en-us /s <boot letter>:All
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21194 次 |
最近记录: |