Linux 修复grub开机引导(ubuntu)

Linux 修复grub开机引导(ubuntu),第1张

问题 : 有时候Linux系统/boot分区损坏时,启动Linux系统时直接进入字符介面的grub引导,并没有进入到系统或者开机显示 error:unknow filesystem提示

解决办法:

Linux开机自动会进入到grub引导介面(如果没进入到grub引导介面可以按C键进入)

第一步:找到系统对应的扇区及/boot/grub目录

注意 :假设是硬盘接口类型sd,hd0对应是sda hd1对应是sdb

(hd0)≠(hd0)

(hd1,gpt2)=(hd1,2)

ls (hd1,gpt2) 查看(hd1,gpt2)扇区信息(盘符、空间等)

ls (hd1,gpt2)/  查看(hd1,gpt2)扇区下的内容(文件、文本等)

如果打印每个扇区目录信息,会出现两种情况:

1、ls (hd1,gpt2)显示Unknow filesystem提示说明这个扇区不是我们要找系统分区

2、ls (hd1,gpt2)显示/boot /proc等系统目录信息说明这个扇区是我们要找的系统分区

如果找到对应扇区的系统分区,可能会遇到两种情况:

1、 A目录下有/boot/grub

2、A目录下有/boot,B目录下有/grub (此时在第二步加载系统内核要使用 set prefix=(hd1,gpt2)/grub 命令)

grub >ls

(hd0), (hd1), (hd1, gpt1), (hd2,gpt2), (hd3, gpt3)

第二步:加载系统内核

grub >set root=hd1,2 #此处不需要括号,加括号也可以,hd0和hd1是有区别

grub >set prefix=(hd1,2)/boot/grub

grub >linux /vmlinuz root=/dev/sdb2 #vmlinuz必须使用TAB补全(可能有后缀),注意sda或sdb需要看自己的实际情况

grub >initrd /initrd.img-xxx #TAB补全,多内核情况下版本需统一

grub >boot

提示 :如果在boot之后不幸进入BusyBox,说明参数设置有问题,可以仔细查看出错的日志,再重启系统后重复执行第二步 *** 作(重启系统后上面设置的参数会被清空)。

第三步:修改grub引导

如果成功进入系统,记得要马上信息grub引导,不然重启系统后问题还是存在

sudo update-grub2 #grub2命令(高版本使用grub2)

$ sudo grub-install /dev/sdb

第四步:重启系统

重启系统后即可正常进入系统

reboot

首先 在win7上下载一个EasyBCD2.2, 然后就是下面图示过程添加 linux系统所在分区 以便引导进入linux!

到这里就可以了, 我是已经把win 自己的给删除了 所以 只显示了linux的!到这里 *** 作无误的话 可以点工具重新启动了!!重新启动我们会发现出来了引导选项 进入linux系统, 但是到我这里遇到的问题就是 这个引导其实 没有找到我们在linux下 grub.conf 或者 grub.cfg所在的正确目录,(是cfg 还是 conf 后缀取决自己系统)!

所以我们要手工配置这就是说 我们最好首先 在linux系统下 查找到grub.conf/cfg所在的目录, 和 清楚自己 linux系统(终端下 fdisk -l命令查看)所在硬盘分区 再开始 *** 作!!!

好 出现这个这个情况后 按 e 进入编辑状态, 注意! 这里 只要先把grub.conf或者grub.cfg 的给修改正确 然后 (hd0, hdx) x 就是系统所在分区, 其实可以一个一个试这里不会出问题的',修改好之后 按 b 进入引导 如果无误 到这里 就会重新看到你熟悉的 grub 引导界面了! 好 进入 系统后 还需要对 grub 进行 修复, 也就是 重写mbr的引导

进入了系统之后进入终端首先就是 update-grub fdisk -l (查看系统所在分区编号)

然后就是 mount /dev/sdax /mnt (x代表你系统所在分区编号)

重装grub-install --root-directory=/mnt /dev/sda(这里sda就是硬盘 不需要加分区编号)

成功之后 可以reboot 了( 注意, 我这里重启 会进入grub recue模式, 不知道为何,难道是还需要 update-grub一下再重启)

下面 再说下 如果遇到了 grub recue 情况 怎么解决的办法

grub resuce>ls 罗列所有磁盘分区信息 比如(hd0) (hd0, msdos1) 这样

然后就是 找出 grub文件所在 分区 也就是 ls (hd0, msdosX)/boot/grub (X可变)

当罗列出一大堆 说明找到了

可以继续下面的命令:

set root=(hd0, msdosX)

set prefix=(hd0, msdosX)/boot/grub

insmod /boot/grub/normal.mod

normal

现在就可以重新看到正确的grub引导了 不过 进入 系统 还需要再最后解决下问题!

sudo update-grub

sudo grub-install /dev/sda

到这里 reboot 一般来说问题就解决了!其中个别缘由也不是太清楚, 希望以后慢慢能弄懂!

本文已重新排版并上传到个人博客 U盘修复 Kali Linux grub引导

总是爱折腾多系统,出了问题是难免的。

U盘启动到live模式,打开终端。

fdisk -l

查看输出结果,然后根据文件类型和分区大小来判定 Linux 系统安装在哪块硬盘和安装的分区。

挂载安装分区 /dev/sda3,sda3为Kali Linux所在分区

mount /dev/sda3 /mnt

挂载其他所需的目录(使用 –bind)

mount --bind /dev /mnt/dev

mount --bind /proc /mnt/proc

mount --bind /sys /mnt/sys

Chroot 到硬盘上的 Linux 系统

chroot /mnt

安装&更新 Grub

grub-install /dev/sda

grub-mkconfig -o /boot/grub/grub.cfg

退出 chroot 环境

exit

卸载分区

umount /mnt/dev

umount /mnt/proc

umount /mnt/sys

umount /mnt

reboot重启,引导修复完成


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/5860134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-02-23
下一篇 2023-02-23

发表评论

登录后才能评论

评论列表(0条)

保存