当前位置:首页 > 行业动态 > 正文

如何通过Grub命令行在系统无法启动时引导Linux?

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命令行

  1. 重启电脑,在开机时按住 Shift 键(部分系统需要按 Esc 键)进入GRUB菜单。
  2. 若GRUB菜单未显示,可尝试在启动初期快速多次按下 C 键直接进入命令行模式。

第二步:确定Linux分区

在GRUB命令行中,需先找到Linux系统所在的分区:

grub> ls

输出结果类似:

(hd0) (hd0,msdos1) (hd0,msdos2) (hd1,msdos1) ...
  • hdX 表示磁盘编号(如hd0为第一块硬盘),msdosYgptY 表示分区编号。
  • 通常Linux系统安装在ext2/3/4xfs格式的分区上,可通过以下命令查看文件系统:
    grub> ls (hdX,msdosY)/

    若输出包含/boot/etc等目录,则该分区为系统根分区。

    如何通过Grub命令行在系统无法启动时引导Linux?  第1张


第三步:加载内核(vmlinuz)与初始化内存盘(initramfs)

  1. 设置根分区(假设系统在 (hd0,msdos2)):
    grub> set root=(hd0,msdos2)
  2. 加载Linux内核(需确认路径,通常位于/boot/vmlinuz-版本号):
    grub> linux /boot/vmlinuz-5.15.0-78-generic root=/dev/sda2
    • root=/dev/sda2 需替换为实际分区(sda2对应hd0,msdos2)。
  3. 加载initramfs文件
    grub> initrd /boot/initrd.img-5.15.0-78-generic

    确保initramfs版本号与内核一致。


第四步:启动系统

输入以下命令执行引导:

grub> boot

若一切正确,系统将开始启动流程,成功进入系统后,建议立即修复GRUB配置:

sudo update-grub
sudo grub-install /dev/sda

常见问题与排查

  1. 分区号错误

    • 症状:Error: file not found 或卡在启动界面。
    • 解决:重新执行ls (hdX,msdosY)/boot确认分区和文件路径。
  2. 内核参数错误

    • 症状:启动时提示 Unable to mount root fs
    • 解决:检查root=/dev/sdXY是否与GRUB分区一致(可通过lsblk确认)。
  3. initramfs缺失或不匹配

    • 症状:系统卡在Loading initial ramdisk
    • 解决:进入Live CD环境,重新生成initramfs文件:
      sudo update-initramfs -u -k all

注意事项

  • 备份数据:对分区操作前,确保重要数据已备份。
  • 记录分区信息:建议提前通过lsblkfdisk -l记录分区结构。
  • 多系统兼容:双系统用户需注意Windows的快速启动可能影响GRUB识别。

引用说明
本文参考了GRUB官方文档及Linux内核启动参数说明的准确性和权威性。


0