捣鼓往移动硬盘里装系统的时候一不小心把系统引导搞丢了,导致一开机就进了Grub的命令行界面,而不是正常的选系统界面。这个时候我的系统已经装在硬盘里了,只不过引导出了问题,所以可以在Grub的命令行界面手动引导系统。
一下内容只适合还进得去GRUB的情况,加入进不去GRUB就要用liveCD来修复了。
GRUB引导系统分为两步:加载内核和初始化RAM盘。
精简版
一共四条指令,关键是得找到自己系统装在哪个分区里。
shell
set root=(hd3,gpt3)
linux /boot/vmlinuz-5.15.0-107-generic root=/dev/sdb3
initrd /boot/initrd.img-5.15.0-107-generic
boot0. 设置根路径(可选)
shell
set root=(hdx,gptx)假如跳过了这一步,下文写路径的时候就要加上(hdx,gptx)
可以使用ls命令+tab键查看分区信息,找到linux根目录所在分区(注意,直接tab看可选项,不用回车)
shell
ls (hd0,gpt1输出如下图
可以看到第三个ext*类型的分区就是linux的根目录所在分区。
接着输入
shell
set root=(hd3,gpt3)根目录就设置完成了
1. 加载内核
加载内核的指令格式如下
shell
linux /path/to/<内核映像文件> root=/dev/<根目录分区>
# 一般是 linux /boot/vmlinuz-*-*-generic root=/dev/sd??
# 如果是nvme硬盘的话, root=/dev/nvme?n?p?内核映像文件靠tab补全就行,根目录分区可以查看/etc/fstab文件得到,用cat命令查看
shell
cat /etc/fstab
可以看到输出# / was on /dev/sdb3 during installation.,说明根目录在/dev/sdb3,所以root=/dev/sdb3。
最终得到
shell
linux /boot/vmlinuz-5.15.0-107-generic root=/dev/sdb3
2. 初始化RAM盘
shell
initrd /path/to/<initramfs镜像文件>
# initrd /boot/initrd.img-*-*-genericinitramfs镜像文件和内核映像文件类似,靠tab补全就行,一般都是放在/boot目录下,比如我的例子是
shell
initrd /boot/initrd.img-5.15.0-107-generic3.最后一步—— boot
输入boot启动系统
shell
boot完整截图

进了系统后怎么修复引导
一般就这两个指令默认参数就行
shell
sudo grub-install
sudo update-grub