我在一台旧的 Windows 机器上安装了 Ubuntu 12.04。它安装在外部 USB 硬盘上。我在内部硬盘的 MBR 上安装了 grub,因此如果我连接外部硬盘并启动计算机,我最初会获得 Windows 引导加载程序,它提供 Windows 和 Ubuntu。如果我选择 Windows,我会启动到 Windows,如果我选择 Ubuntu,我会得到 Ubuntu/grub 启动菜单(它也提供 Windows)并可以启动到 Ubuntu。一切都很好。
如果我启动电脑时没有连接外部硬盘,电脑会立即进入 grub 救援 shell
error: no such device: df9058b0....
grub rescue>
它甚至不显示 Windows 启动加载程序,而是直接进入 grub 救援。我进入 BIOS 设置并禁用从外部硬盘启动,但没有任何变化。
这让我很担心,因为这意味着即使我想启动 Windows,我也需要连接外部 Ubuntu 磁盘(具有特定的 UUID)。
是否可以将 grub 配置为只有当我尝试通过 grub 菜单从中启动时它才会进入救援状态?
答案1
哎呀,您将 grub(旧版)放到了错误的磁盘(MBR)上,现在它需要外部磁盘上的文件才能显示菜单。
- 当您可以运行 Ubuntu 时,请将 grub 安装到您的外部磁盘(sdb?)上,并检查您是否可以成功从它启动并启动 Windows。
好的,启动失败。外部磁盘是否使用 MSDOS 分区?如果是 GPT,则需要添加一个带有 grub-bios 标志的小分区(1-2M)(无需格式化)。然后重新安装 grub 并重试。好的,
这是 MSDOS。
逻辑分区、启动标志对 Ubuntu 来说没有区别。您看到的是 grub 提示吗?很多答案都像启动错误 > 没有这样的设备:grub rescue但您的情况更简单——您可以从 sda 启动 grub,并在 sdb 上运行 Ubuntu。从那里,您应该能够简单地将 grub 安装到 sdb。只是检查一下,您没有在 UEFI 模式下运行,对吗?也许像 16.04 这样的较新版本会更好,如果完整的 ubuntu 对您的机器来说太多了,请返回到 lubuntu。
- 然后,您将需要将旧的 Windows 启动 MBR 恢复到您的内部磁盘上,这样它只能启动 Windows。
- 在 BIOS 中,选择在启动顺序中首先启动外部磁盘,然后将内部磁盘放在第二个位置(或者如果愿意,将两者都放在 CDROM 之后)。
当 USB 磁盘存在时,启动应该提供 grub,当不存在时,内部磁盘应该启动 Windows。