我的情况比较特殊。我有一台没有内置 CD 驱动器的 MacBook Pro,并且安装了 MacOS X(最低配置)和 Linux(我的主要系统)。在交叉升级到 Ubuntu 12.04 期间,我搞乱了 grub,所以我的 /boot/grub 目录基本上是空的。这意味着我无法再在笔记本电脑上启动 Linux,只能进入 grub 救援。
通常这不是问题,因为您只需从救援 CD 或 USB 记忆棒启动即可,但不幸的是,对于 MacBook Pro 来说这是不可能的(我安装了 reFIT 并尝试启动,但失败了,手册说 Apple 的 EFI 固件无法处理这种情况)。
但是,在 MacOS X 中,我仍然具有对 Linux 分区的写访问权限。我现在一直在尝试弄清楚如何用必要的文件填充 /boot/grub 文件夹,但目前无济于事。Ubuntu 12.04 的 ISO 映像包含一个 EFI 文件夹,这不是我要找的,而是我需要 Ubuntu 12.04 grub 版本的 normal.mod 文件。我没有其他机器来设置 Ubuntu 12.04 的虚拟机,以便在 grub 安装后从中提取它,所以我在这里寻求如何解决这个问题的想法。
附言:我之前安装 Linux 时,我的内置 CD 驱动器还处于工作状态。现在这个已经没有了。
答案1
了解您正在运行的 Grub 版本会有所帮助。Grub1 与 Grub2 实际上有很多(通常很烦人的)差异。这里主要相关的是您是否拥有 /boot/grub/menu.lst 文件(grub1)或 /boot/grub/grub.cfg(grub2)。
这些文件控制着您首次打开计算机时在 Grub 菜单中看到的内容。在正常情况下,您不应手动编辑这些文件,因为更新脚本会为您处理这些文件,但正如您所说,在这种情况下,这是不可能的。因此,请备份这些文件,然后手动编辑它们以适应您的相应内核版本。如果仅修复其中一个文件还不够(因为正如您所说,/boot/grub 几乎是空的),我会在另一台机器或驱动器上安装相同版本的 ubuntu,然后复制内容。希望配置足够相似,以便您能够启动,但不能保证这会起作用。
无论您做什么,在编辑或替换任何文件之前,请先备份!
答案2
如果您可以访问另一台具有可用 CD 驱动器的机器,则可以使用某些 Linux 发行版(如 knoppix)制作可启动的 USB。然后您可以从 CD 启动机器并修复 grub。