我不是创建双引导系统的初学者,但我想我还有很多东西要学,因为我已经在当前系统上苦苦挣扎了好几天。
我从占用两个物理磁盘的 Windows 7 系统开始。我拿了第二个,把它做成了一个 Ubuntu 系统。目前,它看起来像这样:
/dev/sda1 NTFS (labeled as "system reserved")
/dev/sda2 NTFS Windows 7
/dev/sda3 NTFS (Data for Windows 7 system to access)
/dev/sdb1 FAT32 Mounted on /boot/efi (flags "boot" and "esp")
/dev/sdb3 Ext4 Mounted on /
(有一个 /dev/sdb2,但我将其删除并合并到 /dev/sdb3 中gparted
。)
我安装了 Ubuntu 19.04,它运行良好。但是我无法启动到 Windows 7。我想将 Windows 7 添加到 grub 菜单或至少访问它;我现在连那个都做不到。
所以,我尝试了以下方法:
- 运行
sudo update-grub
。 sudo os-prober
挂载 /dev/sda2 后运行。- 在计算机上运行
boot-repair
,也可以使用可启动的活动磁盘。 - 运行
grub-customizer
。
它们都不起作用。
对于boot-repair
,我尝试了几种方法,例如“重新安装 GRUB”和“恢复 MBR”。如果我执行“推荐修复”,我得到“检测到 GPT。请创建一个 BIOS-Boot 分区(>1 MB,未格式化的文件系统,...)。...或者,您可以在激活 [Separate /引导/efi 分区:] 选项。” 在其他系统上运行boot-repair
多年后,这是我第一次看到这个消息。
使用grub-customizer
,它为 /dev/sda2 (Chainloader) 创建了这些行:
set root='(hd0,2)'
search --no-floppy --fs-uuid --set XXX
drivemap -s (hd0) ${root}
chainloader +1
当我重新启动时,我收到诸如“没有这样的设备:XXX”、“找不到命令驱动器映射”和“找不到磁盘 hd0,2”之类的错误。
在我用其他计算机遇到这个问题的所有时间中,我想这是我遇到的最古老的。(毕竟它有 Windows 7。)同样,BIOS 也很旧。所以,这难倒我。我也有点担心我有一些如何破坏(Windows)系统。我尝试了“恢复 MBR”选项boot-repair
并将 MBR 写入 /dev/sda2 ,但我仍然无法启动到 Windows - 它grub
改为进入。(当我意识到这一点时,我想我需要向其他人寻求帮助......现在感觉很糟糕。)
Ubuntu 端是全新安装的,如果我需要以某种方式破坏它以撤消我为使其双启动而犯的错误,我可以接受。
任何人都可以就我应该尝试什么提供建议吗?正如我老实猜测的那样,我确信答案就在我面前,但是一些关于我应该尝试什么的建议,也许订单会有所帮助。
引导模式(传统与 EFI)很重要。Grub 不能在不同的引导模式下链式加载引导加载程序,因此要实现正确的多重引导,所有操作系统必须安装在相同的引导模式下。在错误的引导模式下安装似乎是一个常见的错误。
从问题中的少量信息来看,我不能 100% 确定,但看起来您的 Windows 安装在传统模式下,而 Ubuntu 似乎安装在 EFI 模式下。
您可以通过不同的方式解决此问题,一种方法是以旧模式重新安装 Ubuntu。您必须确保以传统模式启动安装程序,仅此而已。
另一种方法是仅重新安装引导加载程序 (Grub)。只需启动到您安装的 Ubuntu(在 EFI 模式下)并运行
这将删除
grub-efi
(Grub 的 EFI 版本)并安装grub-pc
(Grub 的 BIOS 版本)。在安装过程中,系统会询问您将引导加载程序放在哪里。这很有趣,因为您有多个磁盘,并且您不需要覆盖应该驻留在sda
. 所以你应该把 Grub 放在sdb
. 然后在 BIOS 中检查引导顺序。额外的清理不是绝对必要的,但删除关于/boot/efi
from的行/etc/fstab
是有道理的,它不再需要了。你应该知道的另一件事:
如果您要放置 Grub 的磁盘使用 GPT,您需要创建一个带有 bios-boot 标志的小 (2MB) 分区并保持未格式化(无文件系统)。Grub's
core.img
将被放置在那里。