Ubuntu开机进入GRUB手动引导
2018-12-01 本文已影响33人
团不慌
推测原因:昨天系统升级添加内核后没有更新grub
相似情况:Win10更新后引导崩溃修复
问题描述:在引导彻底崩溃的情况下我们曾尝试使用grub rescue
手动寻找引导进入系统。这次的情况有些不同,开机找到了grub
,但grub
无法正确引导系统。
问题特征:开机后进入以下界面:
GNU GRUB version x.x.xxxxx
Minimal BASH-like line editing is supported...
grub >
第一步:找到根目录和GRUB
使用ls
命令查看当前可以访问的扇区:
grub > ls #这里没有4的原因:第四扇区应该是虚拟扇区
(hd0), (hd0, msdos7), (hd0, msdos6), (hd0, msdos5), (hd0, msdos3), ...
继续使用ls
查看每个扇区的信息,需要注意:
-
(hd0)
≠hd0
-
(hd0,msdos5)
⇔(hd0,5)
-
ls (hd0)
⇒查看(hd0)扇区信息(盘符、空间...)
ls (hd0)/
⇒查看(hd0)扇区下内容(多了一个`/``)
通过挨个打印子目录内容,我们可能遇到以下两种情况:
- A目录下有
boot/
,boot/
下还有grub/
- A目录下有
boot/
,B目录下有grub/
造成该不同的原因是因为最初分区时的策略原因,如果按照其他教程发现boot目录下没有grub类似问题,有可能是在另一个独立扇区。
第二步:加载系统内核
使用命令如下:
grub > set root=hd0,A #此处不需要括号,注意A的实际值(参前)
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补全,多内核情况下版本需统一
grub > boot
如果在boot
之后不幸进入了BusyBox
,说明参数设置有问题,可以仔细看一下出错的Log
(就在BusyBox
上面)
第三步:修复引导
如果已经成功进入了系统,切记及时修复引导
$ sudo update-grub #grub情况下命令,具体参考之前的设置
$ sudo update-grub2 #grub2命令(高版本使用grub2)
$ sudo grub-install /dev/sda
正文完 | 附:Ubuntu删除多余内核
GRUB里发现的小彩蛋:
GNU GRUB version x.x.xxxxx
Minimal BASH-like line editing is supported...
grub > hello
Hello World
grub >
看起来像是测试基础功能用的,不过Hello World
还真是无处不在。