第一步
使用ls命令查找系统分区
ls #查看所有磁盘分区
ls (hd0,gpt2)/
#查看分区内容,根据分区内容确定系统分区号
#存在/home、/boot等文件夹便是系统分区)
#此处经过查找我的设备为gpt2,gpt2的“2”可以理解为设备号为2,因此后文我们也锁定设备号2
第二步
设置系统分区、加载内核和initrd并启动系统
set root=(hd0,gpt2) #设置系统分区
linux /boot/vmlinuz-6.6.38-trim root=/dev/nvme0n1p2
#加载内核文件
#对于长文件名文件,可以使用TAB键自动补全,请注意空格
#root=/dev/后面所跟的设备路径目前暂不明确,此处可以使用nvme0n1p2和sda2、sdb2碰运气,他并不是固定的,经测试前两个比较常见。运气好后续直接进入系统,那么你可以跳过第三步,运气不好会掉入initramfs,但这是正常流程,不必紧张
initrd /boot/initrd.img-6.6.38-trim #加载initrd,可tab补全
boot #启动系统
整体命令执行效果如下:
而后我们大概率会掉入“initramfs”状态,接着进行第三步
第三步 确认引导设备路径
使用fdisk命令确认设备
fdisk -l
根据输出,观察硬盘大小我们可以确定用于安装系统的实际设备名称,发现实际的设备其实是sda,因此我们需要重启系统,回到第二步
请注意更正root=/dev/后面的内容
我这里为:
set root=(hd0,gpt2)
linux /boot/vmlinuz-6.6.38-trim root=/dev/sda2
initrd /boot/initrd.img-6.6.38-trim
boot
经过一连串的跑码后,我们熟悉的飞牛启动脚本页面就回来了!!
第四步 创建账户
打开网页端,创建一个账户,再回到tty界面,继续后续操作。如有需要,此处也可以打开ssh进行后续操作。
第五步 重建Grub引导
首先,查看系统类型(应该都是x86_64吧)
uname -m
重新把grub安装到efi分区
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck
更新grub配置
sudo update-grub
到这里,理论上我们就完成了引导的重建,也可以继续一下步骤去查看配置文件是否生成
切换到root用户
sudo -i
进入efi分区的文件夹中并使用ls查看文件夹内容
cd /boot/efi/EFI/debian/
ls
正常情况下会有六个文件,由于我们是手动生成,数量会比官方自带的多几个,不用去处理它,继续输入
cat grub.cfg
看到如图输出就说明已经正常指向到/boot/grub/grub.cfg,继续执行
cat /boot/grub/grub.cfg
或
nano /boot/grub/grub.cfg # 此命令需要按ctrl+x退出
确认无误后重启系统
reboot
或者
sudo reboot
不出意外的话,迎接我们的就是常规的grub引导界面了
可以看到,比官方安装玩系统后多了一个选项,这也是正常的!!
至此我们也完成了引导的修复。
总结
本文中,笔者详述了在Linux系统引导故障时的手动修复方法,包括通过命令行工具确定系统分区、正确设置内核和初始化内存文件系统、确认并修正引导设备路径以及重建GRUB引导加载器以恢复系统的正常启动流程。对于大部分的引导问题,这些步骤都是通用的,理论上都能实现系统的启动。至于机器本身的bios设置,本文没有提及,各位玩家按各自机型要求去设置即可。 |