GNU GRUB磁盘分区后不能引导启动---修复启动

本文记录了一位用户在安装Win10、Ubuntu18.04和16.04后,遇到GRUB引导问题的解决过程。通过尝试使用boot-repair工具,修改BIOS设置,以及在GrubRescue下手动修复,最终成功修复了GRUB引导,使其能够正常启动多系统。
摘要由CSDN通过智能技术生成

  笔者电脑装了win10、ubuntu18.04和ubuntu16.04三系统,磁盘有剩余空间,于是用分区软件把空余的空间进行分区,之后发现GNU GRUB不能正常引导启动,如下:
在这里插入图片描述
  由于开机能进入GNU GRUB version 2.02这个画面,所以隐藏分区应该并没有被破坏。

  输入:

exit

  退出GNU引导,则系统默认进入第一个磁盘分区引导的Ubuntu18.04系统。但是这样每次启动都要手动选择系统,很麻烦,所以考虑修复自动启动引导。

  尝试了网上写的(链接)找grub文件所在分区,所有分区都找过了,不是unknown filesystem 就是not found。遂转用他法。

使用boot-repair工具:

  命令如下:

sudo add-apt-repository ppa:yannubuntu/boot-repair   #加入目录,如果链接失败可能要挂代理,此步成功后进入下一步

sudo apt-get update

sudo apt-get install -y boot-repair

boot-repair   #启动boot-repair软件

  效果如下,点Recommended repair即可:
在这里插入图片描述
  报错:
在这里插入图片描述
  提示要从启动盘启动系统,制作Ubuntu启动盘:

  下载Ubuntu iso镜像:链接

  下载ultraISO软件,并制作启动盘:参考这篇文章

  使用U盘启动,选择try ubuntu,进入U盘的ubuntu系统后,重复上述步骤,安装并启用boot-repair软件,还是点击Recommended repair。

  提示在另一个terminal输入:

sudo chroot "/mnt/boot-sav/sda7" dpkg --configure -a

sudo chroot "/mnt/boot-sav/sda7" apt-get install -fy

sudo chroot "/mnt/boot-sav/sda7" apt-get purge -y --force-yes grub*shim-signed linux-signed*

  发现报错:GRUB is still present, Please try again.

  解决方法:重启F2进入BOIS,advance setting中的Boot/CSM(Compatibility Support Module)里,我原来的设置是Boot Device Control设为UEFI and Legacy OPROM,现在改为Legacy OPROM only,保存重启。

  再U盘启动Ubuntu,重复上述步骤,启用boot-repair,仍然报错:
在这里插入图片描述
  这次重启进入BOIS把advance setting中的Boot/CSM(Compatibility Support Module)中的Launch CSM之间Disable。再重复上述步骤,还是不行。

改用Grub Rescue方法

  发现是启动时候引导的normal.mod文件的路径因为盘符调整,乱掉了,所以先找到normal.mod文件:

search.file /i386-pc/normal.mod
>没找到
search.file /grub/i386-pc/normal.mod
>hd1,gpt8    #找到了,normal.mod文件就在(hd1,gpt8)这个分区
search.file /boot/grub/i386-pc/normal.mod
>没找到

查看现在设置的指向路径:

grub> echo $root   #查看默认启动的盘符
grub> echo $prefix    #查看默认启动normal的路径

发现并没有指向normal.mod文件所在的地方,(hd1,gpt8)/grub/i386-pc/normal.mod
所以修改root和prefix,使之指向正确的normal.mod路径:

grub> set root=(hd1,gpt8)
grub> set prefix=(hd1,gpt8)/grub

加载normal.mod模块:

insmod normal

运行normal模块:

normal

成功进入Ubuntu。

虽然进入系统了,但是Grub还是坏的,下面开始修复Grub:

sudo update-grub
sudo grub-install /dev/sda

在给硬盘/dev/sda安装grub时报错:

grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: error: embedding is not possible, but this is required for cross-disk install

解决方法:

sudo parted /dev/sda set 1 bios_grub on
sudo parted /dev/sda print

输出以下信息表示正确:

Model: ATA ST3000DM007-1WY1 (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      17.4kB  16.8MB  16.8MB               Microsoft reserved partition  bios_grub
...

接下来安装Grub:

sudo grub-install /dev/sda

成功:

Installing for i386-pc platform.
Installation finished. No error reported.

重启即可。

参考

AskUbuntu: https://askubuntu.com/questions/440024/boot-repair-grub-is-still-present-please-try-again-message-is-displayed-whi
博客:https://blog.csdn.net/laocaibcc229/article/details/79274412
链接:https://ubuntuqa.com/article/3006.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值