GRUB2:总是无法启动,每次启动时都必须手动执行配置文件

GRUB2:总是无法启动,每次启动时都必须手动执行配置文件

http://paste.ubuntu.com/1690610/

从 USB 拇指驱动器全新安装 Ubuntu 12.10 后(使用 UNetBootin 将 ISO 复制到拇指驱动器...如果这很重要的话。)我将 Ubuntu 安装到我的系统上。

我有这些设备可以使用。

P1:华硕 DVD/Blue Ray RW P2:Corsair 240GB SSD(Windows) P3:Corsair 240GB SSD(Ubuntu) P4:西部数据 750 GB HDD(数据驱动器) P5:西部数据 80 GB HDD(数据驱动器)

我将 Ubuntu 安装在 P3 上,结果系统显示在 /dev/sdc 驱动器上。我删除了该驱动器上的所有旧分区,使用安装程序快速格式化了文件系统,并将驱动器留空。然后我单击该驱动器,并点击下一步。Live USB 驱动器中的安装程序抱怨我没有 SWAP 卷,但我忽略了该警告。大约 5 分钟后,安装完成。重新启动系统,结果弹出了 GRUB Rescue 菜单。

我遵循了这里的指南...https://help.ubuntu.com/community/Grub2/Troubleshooting... 并成功启动系统。我以为一切都会结束,所以我安装了所有我使用的软件,并像往常一样进行了更新。系统要求我重新启动后,我照做了,这次我得到了 GRUB 提示。

再次按照上述指南,我使用 configfile 命令并将其指向 grub.cfg 文件,然后一切又正常启动了。我不想每次启动时都发生这个问题,所以我按照启动后跟进部分操作,结果出现了以下错误...

dygear@Dygear-Ubuntu:~$ sudo update-grub
[sudo] password for dygear: 
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.5.0-23-generic
Found initrd image: /boot/initrd.img-3.5.0-23-generic
Found linux image: /boot/vmlinuz-3.5.0-17-generic
Found initrd image: /boot/initrd.img-3.5.0-17-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sdd1
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
done

这是安装有我的 Linux 的驱动器。

dygear@Dygear-Ubuntu:~$ sudo fdisk -l /dev/sdc

Disk /dev/sdc: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x75a8b2f8

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048   468860927   234429440   83  Linux

到目前为止,我的运气一直不太好,而且当提供的工具似乎不起作用时,我不知道如何解决这个问题。

需要注意的是,我有一块支持 UEFI 的华硕主板。我在 GRUB 恢复控制台中使用的大多数命令都指向 i386-pc 路径,而它应该是 x86_64-efi 路径。这可能是问题的一部分,我不确定。

dygear@Dygear-Ubuntu:~$ ls /boot/grub
fonts  grub.cfg  grub.efi  grubenv  locale  x86_64-efi

关于如何修复此问题您有什么想法吗,或者我应该将其报告为错误?

答案1

在 13.04 beta 中,我下载了您可以通过手动对要安装的驱动器进行分区来解决此问题的根本原因,在驱动器的最开始处添加一个 EFI 分区。这会让安装程序意识到它需要在那里安装 grub-efi。


首先,从 Rescue GRUB 提示符启动您的系统。

重新启动系统,然后启动到安装 Ubuntu 的正确驱动器。您应该会看到一个grub rescue>提示。从那里输入以下内容以启动系统。

  1. set prefix=/boot/grub/
  2. insmod normal这会将提示的文本从灰色变为白色。
  3. insmod linux
  4. linux /vmlinuz root=/dev/sdXY ro用驱动器的字母和数字替换 X 和 Y。
  5. initrd /initrd.img
  6. boot

这将启动你的系统的引导过程。


现在您已进入系统,是时候修复潜在问题了。对我来说,这个问题是找不到文件夹/grub/i386-pc/。下面的操作应该可以让您启动系统而无需进行救援。

  1. Alt+ F2
  2. 输入gksudo nautilus并按下Enter
  3. 输入您的密码。
  4. /boot/grub/将您的目录复制到您的/根目录中。

最终结果应该是你仍然有一个/boot/,现在你有一个/grub/目录。重新启动系统,它应该工作。如果它不起作用,那么你就又回到原点了。


在我看来,如果以下条件为真,则在安装 Ubuntu 12.10 后,GRUB 将无法立即启动系统。

  1. 您有一个基于 UEFI 的系统。
  2. 在安装过程中,您还会删除正在安装的整个磁盘。
  3. 删除整个磁盘后,您无需创建新的分区,而只需单击“下一步”,然后让安装程序发挥其神奇的作用。

在我看来,问题就出在这里,因为安装程序没有考虑到它需要为 /boot/ 目录创建一个 EFI 分区,但 GRUB 根本没有收到此备忘录,而且据它所知 /boot/ 目录位于它自己的分区上。从那里,GRUB 尝试读取,/grub/但无法读取,因为它嵌套在 中/boot/grub

无论如何,这是我的看法。谢天谢地,我的系统现在可以启动了,而我不必在 grub 命令行上做一些疯狂的操作。

答案2

我的 Ubuntu 机器也遇到过类似的问题。我使用软件更新从 11.10 升级到 12.04,但升级过程中出现了问题。我启动时进入 grub 救援提示符,然后我做了一些我不记得的事情,然后不断启动到 grub 提示符。从 grub 提示符中,我可以使用以下命令加载配置文件:

grub> 配置文件 (hd0,msdos1)/boot/grub/grub.cfg

我尝试了 update-grub,但没用。然后我使用以下命令重新安装了 grub:

$ sudo grub-install /dev/sda

...然后运行 ​​update-grub 以确保万无一失,重新启动后它就正常工作了。

相关内容