首先我要说的是,我尝试了所有能找到的方法。但还是没有任何效果。
前言
我已经将旧的 MBR 转换为 GPT 分区表。我原本以为只需重新安装 GRUB2 并最终安装 Windows 就可以了。但事实并非如此。我使用 gdisk(GPT fdisk)进行转换,没有丢失数据。
问题
一开始,我的 Windows 无法加载。然后,我修复了问题所在的 BCD,结果根本无法启动到 HDD,卡在 grub 救援屏幕上。尝试了全面修复,以及我遇到的所有其他修复,都是同样的问题。当我重新安装/修复 GRUB 时,我在 Windows 启动时收到 BCD 错误。
解决方案和其他问题
最明显的一个是重新安装 Windows。嗯,不会发生。如果没有 UEFI 硬件,它就无法安装在 GPT 上。保护我自己,微软风格。我犯了一个可怕的错误,没有意识到问题出在分区表上,而不是分区本身,以及格式化的 Windows 分区。我没有丢失任何重要的东西——嗯,除了 Windows。
我接下来尝试的是混合 MBR。我想没人告诉 Windows 安装程序这一点,因为它给出了相同的错误(尝试了 Windows 7 和 8,均为 64 位)。我为此使用了 gdisk 恢复菜单,并检查了所有输入,最终正常工作。
接下来是尝试安装 DUET。我以为它会启动失败,但由于我的 AMD CPU,它甚至无法安装。我使用了与文件一起下载的 duet-install 脚本这里。脚本总是停在同一个地方:
Partition starts at sector 2048
。我查看了脚本的源代码,它应该很快就会打印出下一行(它一下子打印了 13 行),但几个小时都没有发生任何事情。尝试重新运行、重新下载、从实时 CD 运行,但没有任何反应。这是整个输出:
将安装 SYSLINUX 到 MBR SYSLINUX 的路径是 /usr/share/syslinux
bootduet 的路径是 /home/ubuntu/Downloads/tianocore_uefi_duet_builds-tianocore_uefi_duet_installer/BootSector
UEFI DUET 的路径是 /home/ubuntu/Downloads/tianocore_uefi_duet_builds-tianocore_uefi_duet_installer
将安装UEFI版本UDK目标分区为/dev/sda1
将在目标分区上创建一个名为“ESP”的 FAT 文件系统
目标磁盘(用于存储 MBR 引导代码)为 /dev/sda 分区号为 1
分区从扇区 2048 开始
[编辑] 尝试安装 XP,但它无法格式化未格式化的空间。我尝试使用 GParted 将其格式化为 ntfs,但安装仍将其注册为未格式化的空间(除此以外没有其他内容)。但说实话 - 那张 CD 被搁置了很长时间,我几乎找不到它,我不知道它是否是 x64(可能不是,所以不会起作用)。
所以,我现在陷入困境。能帮忙吗?
此外,重新格式化整个硬盘不是一个选项。Windows 不值得,我宁愿使用 Linux。此外,转换回 MBR 也不行,因为据我所知,它包括格式化。此外,我有 7 个(或 8 个?)分区(5 个在旧 MBR 上,但我使用了扩展分区……很乱)。
眼镜
主板:华硕 M5A78l-M LX CPU:AMD Athlon II x3 450
当前的解决方法 (嗯,除了 obious(linux))
我已在 VirtualBox 中启动 Windows 8 安装。这取得了一些进展,但我不想每次启动 Windows 时都被困在 VM 中。
編輯
我尝试过一个 duet-install 脚本。如果我输入一些字母并按回车键,它会打印parted: invalid token: [letter]
。如果该字母是“c”,它会打印Unknown partition table type ! Aborting!
,这显然不是事实。我想我必须更深入地分析源代码才能找到问题的根源,因为那个脚本现在对我来说是最好的解决方案。
到达脚本停止执行的位置:
ptLine=
parted“${targetDisk}”print | grep“Partition Table”。将尝试通过跳过检查并设置值以匹配我的系统来找到解决方案。
我编辑了脚本,删除了不起作用的部分,最后终于成功安装了 DUET。或者至少它是这么说的……我注意到 BIOS 没有变化,一切都和开始时一样。仍然无法工作。
答案1
我最终使用与转换为 GPT 相同的工具将其转换回 MBR,并且分区表几乎和以前一样。
我尝试过的东西,将来可能会对某些人有用:
安装 DUET:我建议使用本指南,但我会很快解释我所做的事情。
首先,我为 EFI 创建了新的 200MB FAT32 分区。然后我从这里并使用 cd 进入我解压它的目录。然后,我运行chmod +x ./duet-install
,你的 syslinux 的路径在./duet-install -64 -F -s /usr/lib/syslinux -m /dev/sda1
哪里(默认应该是,但请搜索你的系统以获取更多信息)。你也可以从互联网上下载它,然后编译它。注意:它需要/usr/lib/syslinux
/usr/share/syslinux
国家音乐基金会,它有自己的依赖项,而且由于我没有使用它,所以我无法提供太多帮助。/dev/sda1 是您之前创建的分区的路径。
但是,脚本无法超过第 275 行,因此我删除了从第 275 行到外部 if 末尾(从第 276 行或第 277 行开始)的所有内容,并将其替换为 tableType="gpt"。
要创建混合 MBR:同样,我推荐一个长度适中的指南,这里。如需快速指南,请继续阅读。
我打开 gdisk 并使用 运行它gdisk /dev/sda
,然后使用 进入恢复菜单,r
并在恢复菜单中输入h
。在提示符下,我输入了要添加到混合 MBR 的分区,然后输入 EFI GPT 分区y
。如果您需要在恢复菜单中找出要使用的分区的分区号p
,或者您最喜欢的分区工具(对我来说是 GParted)。之后,我输入了默认的 MBR 十六进制代码(ntfs 为 07),并且没有为任何设置可启动标志,因为我使用 GRUB。
就这样。这两次都没有给出任何结果 - 没有错误,什么都没有,它继续像通常的 BIOS 一样使用完整的 GPT。我可能在某个地方犯了一个错误,导致了这个问题 - 请随时纠正我。
我希望它能帮助到某些人,但如果没有,你总是可以转换回 MBR,如果你最初将 MBR 磁盘转换为 GPT,这应该不会很麻烦。只需使用你的 HDD(gdisk /dev/sda
对我来说)输入 gdisk,输入r
, Enter, g
, Enter, q
, Enter, Y
。Enter如果你需要更全面的指南,请阅读第二部分本文
答案2
您可以从 BIOS 启动 GPT 上的 Windows如果你有什么小的您可以从 MBR 驱动器或软盘启动。这甚至不是黑客行为,甚至可以在 Windows 32 位上运行。
基本上启动 Windows 安装/修复光盘。只需在软盘上创建系统驱动器,然后使用bcdboot
将启动文件放在软盘上。使用 添加引导扇区bootsect
。将 更改为{bootmgr}
device
。boot
从软盘启动。
步骤很详细这里。