file ‘/grub/i386-pc/normal.mod‘ not found.解决方法

作者介绍

张伟伟,男,西安工程大学电子信息学院,2019级硕士研究生,张宏伟人工智能课题组。
研究方向:机器视觉与人工智能。
电子邮件:[email protected]

  • 课题组CSDN官方账号,欢迎一键三连!.

其中的图为了节约时间,当时在拯救模式不好截图,事后总结各个帖子,解决了遇到的问题,提到的帖子当时不能解决我的问题,希望记录可以帮助到大家,不吝点赞关注和收藏哈。
我的硬件环境情况介绍:
戴尔电脑 双系统,在一块64G固态硬盘安装的windows系统,在一块500G固态安装的linux系统。

1.问题出现的状态和部分原因

无法进入系统引导项目,进入grub系统启动拯救模式,在黑窗口操作。

2.问题解决方法

先看几个指令的含义:

set 设置环境变量
ls 查看设备
insmod 加载模块
root 指定用于启动系统的分区
prefix 设定grub启动路径

2.1 问题解决方法

参考自最给力的帖子:https://www.cnblogs.com/GHzcx/p/9379871.html
file ‘/grub/i386-pc/normal.mod‘ not found.解决方法_第1张图片

ls // 第一步ls查看所有设备,启动项肯定在其中一个里
ls (hd0,gpt5)   //网上的帖子根据实际情况看是gpt还是msdosX,大都是(hd0,msdosX)表示
//X代表挂载设备号1,2,3,4....查找每个设备,
直到设备内容与图片中相似,里面有一个grub/文件夹,启动项就在其中

—对各个分区,例如有s,都要运行’ls s’这样的操作,s可以为(hd0,gpt5)等,如果出现’unknown filesystem’这样的情况就跳到下一个分区.
直至——》》》
—如果明确出现了filesystem的格式(例如说ext4)不出现’unknown filesystem’。则运行: set,可以看到好多文件夹。由此尝试确定我们的引导项所在分区。

例如,我查到系统的引导项目确定在(hd0,gpt3)中,运行如下指令:

set root=(hd0,gpt3)
set prefix=(hd0,gpt3)/grub    //网上的帖子有的是/boot/grub,电脑不同,可参考
insmod normal
normal

然后选择我们熟悉的启动项,正常进入linux操作系统

2.2 安装boot-repair软件对其进行修复

//参考自:https://www.cnblogs.com/GHzcx/p/9379871.html
sudo -i  //可选择进入超级管理员权限
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

下载成功后弹出一个界面,选择第一项(推荐修复),waiting----
若修复成功,重新开机就恢复正常了。

如果在waiting----中出现以下错误:

GPT detected. Please create a BIOS-Boot partition (>1MB, unformatted filesys

以往的帖子我查看了许多,并不能解决问题,我们按照问题描述:就需要新建分区用于boot挂载了,我们继续以下步骤。

2.3 利用gparted工具进行分区

#安装gparted工具
sudo apt-get install gparted
#进入gparted工具
sudo gparted
  • (1) 进入软件界面,自己可以百度了解这个软件学会分区。按照2.2waiting----中的错误描述,我们需要分一个ext4类型的分区,文件分区大小大于1M即可。设置完成后确定,之后这个小的分区被系统会自动命名,如 /sdb12(表示第二快硬盘的第12个分区)---》记住自己分配的命名
    file ‘/grub/i386-pc/normal.mod‘ not found.解决方法_第2张图片
  • (2) 对设置的分区设置标志位flags为bios_grub
    也可以直接用以下的代码设置: 参考自.
#设置查询到自己的分配分区,例如/sdb12,相应的设置如下:
parted /dev/sdb set 12 bios_grub on
#下面语句打印后,应该可以看出有bios_grub标志了!!!
parted /dev/sdb print (查看分区)

---------修改示例-------------
#若自己的分配分区在别的盘,在第一块磁盘分的区,例如/sda5,相应的设置如下:
parted /dev/sda set 5 bios_grub on
#下面语句打印后,应该可以看出有bios_grub标志了!!!
parted /dev/sda print (查看分区)

也可以在软件建立分区的时候设置flags。

2.4 得到waiting----的问题描述所需分区后继续再次重新执行步骤2.2

安装过可以在执行一遍,简单解决问题不影响。


希望记录可以帮助到大家,不吝点赞关注和收藏哈!!!

你可能感兴趣的:(各种软件工具的使用总结,ubuntu,windows)