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

编程入门 行业动态 更新时间:2024-10-18 14:13:32

GNU GRUB<a href=https://www.elefans.com/category/jswz/34/1769757.html style=磁盘分区后不能引导启动"/>

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

  笔者电脑装了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 updatesudo apt-get install -y boot-repairboot-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 -asudo chroot "/mnt/boot-sav/sda7" apt-get install -fysudo 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                          Flags1      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:
博客:
链接:.html

更多推荐

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

本文发布于:2023-06-28 04:08:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/921529.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:磁盘分区   GNU   GRUB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!