磁盘分区后不能引导启动"/>
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磁盘分区后不能引导启动
发布评论