2023-07-28更新:这写的啥呀?我自己都看不懂了。

〇、概述

前情概要由于windows重装系统,导致ubunru18.04的引导出了问题。下面提供两种解决方案,本人采用第二种方式成功修复。

知识补充:grub(GrandUnified Boot Loader)是有名的引导内核程序(另外一款比较有名的是LILO,嵌入式环境使用U-boot、bootloader),它支持多种硬盘分区类型加载(FAT,ext2,ext3,minix,FFS等),支持多系统引导等。现在出的grub2是grub的升级版,提供更多的功能。更多请戳此处。


一、grub命令行界面解决

(1)找到启动分区:含有 boot/ 和 grub/目录

使用grub命令行界面中的ls命令来查看当前可以访问的设备和分区,然后根据它们的信息来判断哪一个是启动分区。比如,一个分区有boot/grub/这两个文件夹,那么这个分区很可能是启动分区。

先进入grub命令输入界面,我是开机自动进入,如果没有键盘按e即可,一般都有提示。

使用ls命令查看当前可以访问的扇区:

grub > ls ,会显示如下内容:

(hd0), (hd0, msdos7), (hd0, msdos6), (hd0, msdos5), (hd0, msdos3), ...
  • fd表示软盘驱动器,比如fd0表示第一个软盘驱动器。
  • hd表示硬盘驱动器,比如hd0表示第一个硬盘驱动器,hd1表示第二个硬盘驱动器。
  • msdos或gpt表示分区方案,比如msdos表示MBR分区方案,gpt表示GUID分区方案。
  • 数字表示分区号,比如1表示第一个分区,2表示第二个分区。注意,主分区和扩展分区的编号是从1开始的,而逻辑分区的编号是从5开始的,不管实际有多少个主分区。

继续使用ls查看每个分区的信息以及子目录,比如:

ls (hd0)
ls (hd0)/
ls (hd0,7)/

需要注意:

(hd0) ≠ hd0
(hd0,msdos5)(hd0,5)
ls (hd0) ⇒ 查看(hd0)扇区信息(盘符、空间...)
ls (hd0)/  ⇒ 查看(hd0)扇区下内容(多了一个`/``)

通过挨个打印某个分区子目录内容,我们可能遇到以下两种情况:

  • A分区下有boot/,boot/下还有grub/
  • A分区下有boot/,B分区下有grub/

造成该不同的原因是因为最初分区时的策略原因,如果按照其他教程发现boot目录下没有grub类似问题,有可能是在另一个独立扇区。

(2)加载系统内核

现在需要手动设置启动分区,以及grub/目录。

使用命令如下:

grub > set root=hd0,A                      #此处不需要括号,注意A的实际值(数字,包含boot/目录)
grub > set prefix=(hd0,A)/boot/grub        #对应第一种情况
grub > set prefix=(hd0,B)/grub             #对应第二种情况
grub > linux /vmlinuz root=/dev/sdaA       #vmlinuz必须使用TAB补全(可能有后缀),注意A的值,sda或sdb需要看自己的实际情况
grub > initrd /initrd.img-xxx              #TAB补全,或者对着你ls命令他显示出来的名称敲
grub > boot

注:

这里的root=/dev/sdaA中的sdaA,A就是前面说的含有boot/目录的那个分区对应的数字,sda是磁盘名称。由于这是2年前的问题了,我忘记了上面的命令会不会显示磁盘名称了,如果你不清楚,可以使用fdisk -l 或者 lsblk等与磁盘相关的命令来查看(我最新的文章有介绍这些命令)。

如果在boot之后进入了BusyBox,说明参数设置有问题,可以仔细看一下出错的Log(就在BusyBox上面),我操作就显示找不到/dev/sda7,所以我采用了方法二。

(3)修复引导

如果已经成功进入了系统,切记及时修复引导

$ sudo update-grub  #grub情况下命令,具体参考之前的设置
$ sudo update-grub2  #grub2命令(高版本使用grub2)

二、通过U盘+Boot-repair修复

通过U 盘修复有多种方式,我分享一下我使用的最有效的一个。

(1)拿出你的U盘启动盘,如果没有了,可以参照我的另一篇博客。进入BIOS选择U盘启动,选择use ubuntu without installing,意思一样的就行。

(2)进入ubuntu之后,使用Boot-repair工具自动修复引导,方法如下:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update              #添加源并更新
sudo apt-get install -y boot-repair && boot-repair                                                                          #安装并启动

接下来按照他推荐的方法操作就行了,期间需要你在终端输入几次命令,都有提示的。

完事后重启电脑,选择ubuntu启动即可。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐