上一篇
如何通过Grub命令行在系统无法启动时引导Linux?
- 行业动态
- 2025-04-24
- 3065
GRUB命令行启动Linux需先进入GRUB界面,按C键进入命令行模式,使用ls命令查看磁盘分区,确定Linux系统所在分区(如hd0,msdos1),依次输入命令:linux (hd0,msdos1)/vmlinuz root=/dev/sda1,initrd (hd0,msdos1)/initrd.img,最后执行boot启动系统,需根据实际分区调整参数。
在操作Linux系统时,偶尔会遇到启动失败的情况。GRUB命令行(Grand Unified Bootloader)是修复启动问题的关键工具,即使系统无法正常引导,通过GRUB手动加载内核和初始化文件,也能快速恢复系统,以下是详细的操作步骤和注意事项。
第一步:进入GRUB命令行
- 重启电脑,在开机时按住
Shift
键(部分系统需要按Esc
键)进入GRUB菜单。 - 若GRUB菜单未显示,可尝试在启动初期快速多次按下
C
键直接进入命令行模式。
第二步:确定Linux分区
在GRUB命令行中,需先找到Linux系统所在的分区:
grub> ls
输出结果类似:
(hd0) (hd0,msdos1) (hd0,msdos2) (hd1,msdos1) ...
hdX
表示磁盘编号(如hd0
为第一块硬盘),msdosY
或gptY
表示分区编号。- 通常Linux系统安装在
ext2/3/4
或xfs
格式的分区上,可通过以下命令查看文件系统:grub> ls (hdX,msdosY)/
若输出包含
/boot
、/etc
等目录,则该分区为系统根分区。
第三步:加载内核(vmlinuz)与初始化内存盘(initramfs)
- 设置根分区(假设系统在
(hd0,msdos2)
):grub> set root=(hd0,msdos2)
- 加载Linux内核(需确认路径,通常位于
/boot/vmlinuz-版本号
):grub> linux /boot/vmlinuz-5.15.0-78-generic root=/dev/sda2
root=/dev/sda2
需替换为实际分区(sda2
对应hd0,msdos2
)。
- 加载initramfs文件:
grub> initrd /boot/initrd.img-5.15.0-78-generic
确保initramfs版本号与内核一致。
第四步:启动系统
输入以下命令执行引导:
grub> boot
若一切正确,系统将开始启动流程,成功进入系统后,建议立即修复GRUB配置:
sudo update-grub sudo grub-install /dev/sda
常见问题与排查
分区号错误:
- 症状:
Error: file not found
或卡在启动界面。 - 解决:重新执行
ls (hdX,msdosY)/boot
确认分区和文件路径。
- 症状:
内核参数错误:
- 症状:启动时提示
Unable to mount root fs
。 - 解决:检查
root=/dev/sdXY
是否与GRUB分区一致(可通过lsblk
确认)。
- 症状:启动时提示
initramfs缺失或不匹配:
- 症状:系统卡在
Loading initial ramdisk
。 - 解决:进入Live CD环境,重新生成initramfs文件:
sudo update-initramfs -u -k all
- 症状:系统卡在
注意事项
- 备份数据:对分区操作前,确保重要数据已备份。
- 记录分区信息:建议提前通过
lsblk
或fdisk -l
记录分区结构。 - 多系统兼容:双系统用户需注意Windows的快速启动可能影响GRUB识别。
引用说明
本文参考了GRUB官方文档及Linux内核启动参数说明的准确性和权威性。