error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>
我能做什么?我只是坐在那里凝视着它。
我发现我的旧上网本(Dell Inspiron 1010)大约四年没有使用。我用Ubuntu 12.10替换了Windows XP。我使用了可启动的USB驱动器。我安装并重新启动。我收到normal.mod
未找到的消息。
我该怎么办?类型exit
,reboot
或quit
?我应该重新安装吗?
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>
我能做什么?我只是坐在那里凝视着它。
我发现我的旧上网本(Dell Inspiron 1010)大约四年没有使用。我用Ubuntu 12.10替换了Windows XP。我使用了可启动的USB驱动器。我安装并重新启动。我收到normal.mod
未找到的消息。
我该怎么办?类型exit
,reboot
或quit
?我应该重新安装吗?
Answers:
Grub有一个小的核心映像,该映像在引导时加载。核心映像会动态加载提供更多功能的模块。i386-pc/normal.mod not found
表示grub无法加载normal.mod,后者是提供normal命令的grub模块。要加载normal.mod,您需要告诉grub它在哪里。为此,您可以使用grub命令行(也称为Rescue Console)。如果启动有问题,则Grub将启动命令行,或者您可以通过在grub启动时按住Shift键(强制显示grub菜单),然后按'c'键来手动启动它。
使用grub,您可以浏览驱动器,分区和文件系统。你需要:
以下仅是示例。您将需要使其适应本地驱动器和分区设置。
normal.mod在哪里?看一些可能的地方
grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod
grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod
grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1
如果得到"Unknown command 'search.file'"
,则表示search.file命令不可用。这可能是因为您在grub rescue>
提示符下而不是grub>
提示符下。在这种情况下,您仍然可以继续使用并使用ls
命令和对分区布局的了解来查找normal.mod
。
在(hd0,msdos1)找到它
grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod
为什么grub找不到它?
检查$ prefix-grub目录的绝对位置
(在通过grub-install安装grub时设置)
grub> echo $prefix
(hd0,msdos2)/boot/grub
检查$ root-不包含设备
grub的路径的默认设备最初将其从$ prefix设置为设备
grub> echo $root
hd0,msdos2
root和prefix指向错误的分区(hd0,msdos2)
将$ root和$ prefix设置为我们发现normal.mod(hd0,msdos1)的分区
grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub
加载并运行普通模块
grub> insmod normal
grub> normal
ls列出所有设备和分区
grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)
ls分区
grub> ls (hd0,msdos1)
Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib
ls文件系统(注/结尾)
grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/
在/ boot / grub里面查看
i386-pc目录的存在意味着这是BIOS安装
x86_64-efi目录的存在将指示EFI安装
grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg
search
或search.file
命令,则设置$prefix
正确,然后执行do insmod search
,for ls
do insmod ls
等。在运行find /boot/grub -name *.mod
正常的Linux安装上运行,以查看所有动态加载的Grub模块。sudo grub-install /dev/sdX
安装我的grub。我认为LVM安装以某种方式使我的grub感到困惑。
今天下午在机器上解决了这个问题。似乎导致此问题的一个原因是安装程序认为没有EFI安全启动,因此安装了错误的GRUB文件。
您需要执行的是安装GRUB2。为此,您需要启动到实时实例,安装根分区并安装。
在活动实例中,找到根分区已加载到的分区。GParted会告诉您这一点,或者您可以使用
sudo fdisk -l
转到安装了ubuntu的分区。
一旦有了分区,就需要挂载它。假设根分区位于/ dev / sda5上,则为:
sudo mount /dev/sda5 /mnt
然后安装GRUB 2
sudo grub-install /dev/sda --root-directory=/mnt
[为此,请使用复制和粘贴,因为您需要纠正一些空格。]
假设这是您的问题,那么您应该只需重新启动即可,一切都会正常。
原始的解决方案是从这里:http : //ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html
我没有在论坛上找到该信息,所以尽管很久以前就问过这个问题,但我还是想分享一些信息:
如果您的大型分区(例如1TB)安装了Ubuntu,并且没有为/ boot /分配额外的分区,则可能是此类错误的原因。GRUB启动时,它将使用biosdisk驱动程序从/ boot / grub /目录中读取常规驱动程序。有时,此目录可能实际位于biosdisk扇区支持的最大值之后的硬盘驱动器上。例如,在系统升级后,该问题可能会出现。另外,在全新安装Ubuntu 13.10之后,我始终会遇到该问题,但是它可能有所不同,因为它取决于主板/ BIOS。
您可以检查是否使用grub恢复-设置正确的PREFIX和ROOT后,尝试执行ls / boot-如果看不到任何东西,但是从活动CD /闪存驱动器启动时可以在那里看到文件-比您遇到的上述问题。
您可以做一些不同的事情来使系统可启动,但是避免将来发生此问题的唯一方法(在dist升级期间)是将/ boot目录放在单独的小分区上。
如果您看到grub-rescue
提示和/或您的配置使用LVM,则其他解决方案可能不起作用,这应该可以。
在应急磁盘上启动(提示:我在备份USB磁盘的专用分区上保留了一个小分发包)。
如果使用LVM,请使用lvdisplay
或其他与LVM相关的命令查找卷组的名称。激活它(否则mount: special drive /dev/volumegroupname/partition does not exist
尝试挂载时会出现错误):
vgchange -a y volumegroupname
现在挂载您常用的/
分区,例如/mnt
:
mount /dev/volumegroupname/partition /mnt
还要安装一些特殊设备(以及/boot
安装在单独的分区上):
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys
然后chroot
放入您通常的分配中:
chroot /mnt
最后,重新安装GRUB2-命令可能会因您的发行版而异,这可在Slackware上使用(如果驱动器为/dev/sda
):
grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
重新启动,您应该完成。
第二步至关重要。
请勿使用/boot
。
可能还有另一种解决方案:尝试在启动过程中手动更改启动设备;但是,我认为这行不通,并且我尚未对其进行测试。
这是一个长期存在的问题,一直存在于Ubuntu 17.10及更高版本中。
use your windows partition as your primary boot device
。最后一步至关重要。不要使用/ boot。可能还有另一种解决方案:尝试在启动过程中手动更改启动设备;但是,我认为这行不通。这是一个长期存在的问题,一直存在于Ubuntu 17.10及更高版本中。谢谢。