现在,在您告诉我使用搜索功能解决此(常见)问题之前 - 我已经为此工作了 5 个小时,但没有找到(接近)解决方案。
这就是确切的问题:昨天将我的 12.04 更新到 14.04 后,启动时出现了 GRUB 救援提示。所以我做了以前遇到启动问题时经常做的事情(每次都成功了,直到昨天!):我安装了一个实时 USB 设备并运行,boot-repair
但这次情况变得更糟:我的 BIOS 现在甚至无法识别硬盘(SATA)作为可启动设备。
使用不同的设置再运行boot-repair
几次也没有用。然后我搜索了所有论坛和 wiki,了解如何手动安装 grub,结果如下:
- 启动实时系统
- 挂载“损坏”的系统,特别是 /sys、/proc 和 /dev 目录
- chroot 进入此系统
- (重新)安装正确的 grub 包(对我来说是 grub-efi-amd64)
- 跑步
update-grub
- 退出 chroot
- 重启
但这仍然导致我的硬盘无法被识别(并因此出现“未找到操作系统”错误)
。分区如下:
/dev/sd?
/dev/sd?1: 94MB, flags: boot, fat16
/dev/sd?2: 2GB, linux-swap
/dev/sd?3: ~260GB, ext4, the rest of the ubuntu 14.04
就我天真的看法而言,我一直认为它的工作方式如下:
- 我的 BIOS 看到了硬盘和带有启动标志的分区
- bios(对我来说,efi 或 legacy 都无所谓,只要能用就行)会在那里启动 grub
- Grub 从第三个分区加载 linux 内核
我坚持使用单独的启动分区,因为——正如我所说——这不是我第一次遇到 GRUB 的大问题。单独的分区让我更容易解决问题。
我当然会提供任何必要的信息。提前谢谢!
答案1
您grub-install
需要运行 ,而不是update-grub
,它只会重建菜单。由于您似乎正在使用 efi,因此在 chroot 进入根分区之前,您还必须在 /boot/efi 中安装 efi 系统分区。
答案2
我上面发布的程序在细节上并不正确。我认为这仅适用于 (U)EFI 启动:
- 启动实时系统
- 挂载“损坏”的系统,特别是 /sys、/proc 和 /dev 目录
- 如果要使用单独的启动分区,请将其挂载到 /boot/efi
- chroot 进入已安装的系统
- (重新)安装正确的 grub 包(对我来说是 grub-efi-amd64)
- 使用
grub-install --force
启动分区作为参数运行(例如grub-install /dev/sdb1
) - 运行更新-grub
- 退出 chroot
- 重启