GRUB2 命令行实战:5个核心命令手动引导 Ubuntu 系统(以 Z3735 为例)
2026/7/8 21:38:54 网站建设 项目流程

GRUB2 命令行实战:5个核心命令手动引导 Ubuntu 系统

当你的Ubuntu系统无法正常启动时,GRUB2命令行界面可能是你最后的救命稻草。本文将深入解析lsset rootlinuxinitrdboot这五个核心命令在系统恢复中的关键作用,帮助你掌握手动引导系统的技能。

1. GRUB2命令行基础与环境准备

GRUB2(GRand Unified Bootloader version 2)是大多数Linux发行版默认使用的引导加载程序。当系统启动失败时,你可能会看到一个黑屏界面,顶部显示"GNU GRUB version x.x"字样,这就是GRUB2的命令行界面。

要进入GRUB2命令行,通常有以下几种方式:

  • 在GRUB菜单界面按c
  • 系统启动失败后自动进入
  • 通过Live CD环境手动调用

在开始操作前,你需要准备以下信息:

  • 知道你的Linux内核版本(如5.4.0-42-generic)
  • 了解你的根分区位置(如/dev/sda2)
  • 确保你有一个可用的键盘(某些虚拟机环境可能需要特别设置)

重要提示:GRUB2中的设备命名规则与Linux系统内不同:

  • (hd0)表示第一个硬盘
  • (hd0,msdos1)表示第一个硬盘的第一个MBR分区
  • (hd0,gpt1)表示第一个硬盘的第一个GPT分区

2. 设备探测与分区定位

ls命令是GRUB2中最基础的探测工具,它能列出所有可识别的存储设备和分区。

# 列出所有存储设备 ls # 列出特定设备的分区 ls (hd0) ls (hd0,gpt1)/ # 查看分区内容 ls (hd0,gpt2)/boot

执行ls命令后,你可能会看到类似如下的输出:

(hd0) (hd0,gpt1) (hd0,gpt2) (hd1) (hd1,msdos1)

常见问题排查

  • 如果ls命令没有输出,可能是存储驱动未加载
  • 如果分区内容无法列出,可能是文件系统损坏或不被支持

3. 设置根分区与内核加载

确定正确的分区后,你需要使用set root命令设置根设备,然后加载内核。

# 设置根分区(假设根分区在第二个GPT分区) set root=(hd0,gpt2) # 加载Linux内核 linux /boot/vmlinuz-5.4.0-42-generic root=/dev/sda2 # 加载初始内存盘 initrd /boot/initrd.img-5.4.0-42-generic

参数说明

参数说明
root=/dev/sda2指定根文件系统位置
ro以只读模式挂载(可选项)
quiet减少启动信息输出(可选项)
splash显示启动画面(可选项)

如果不知道确切的内核版本,可以尝试使用Tab键自动补全:

linux /boot/vmlinuz-<按Tab键>

4. 引导系统与常见问题解决

完成内核和initrd加载后,使用boot命令启动系统:

boot

如果启动失败,可能需要检查以下问题:

  1. 内核参数错误

    • 确认root=参数指向正确的根分区
    • 尝试添加nomodeset参数解决显卡问题
  2. 文件系统损坏

    # 尝试修复文件系统 fsck /dev/sda2
  3. initrd不匹配

    • 确保initrd版本与内核版本一致
    • 可以尝试使用旧版本内核启动

5. GRUB2设备命名与Linux设备映射

GRUB2使用自己的设备命名规则,与Linux系统中的设备名称不同。以下是对照表:

GRUB2设备名Linux设备名说明
(hd0)/dev/sda第一块硬盘
(hd0,gpt1)/dev/sda1第一块硬盘的第一个GPT分区
(hd1,msdos1)/dev/sdb1第二块硬盘的第一个MBR分区
(hd2)/dev/nvme0n1NVMe固态硬盘

实际案例:假设你的Ubuntu安装在第三块硬盘的第二个分区:

  • GRUB2中表示为(hd2,gpt2)
  • Linux中可能为/dev/nvme0n1p2

6. 高级技巧与自动化脚本

对于经常需要手动引导的用户,可以创建GRUB2自定义菜单项:

menuentry "Manual Boot Ubuntu" { set root=(hd0,gpt2) linux /boot/vmlinuz-5.4.0-42-generic root=/dev/sda2 initrd /boot/initrd.img-5.4.0-42-generic }

或者使用更智能的自动探测脚本:

menuentry "Auto Detect Ubuntu" { search --set=root --file /etc/os-release linux /boot/vmlinuz-$(ls /boot | grep vmlinuz | sort -V | tail -n1) root=UUID=$(blkid -s UUID -o value $(findfs $(mount | awk '$3=="/"{print $1}'))) initrd /boot/initrd.img-$(ls /boot | grep vmlinuz | sort -V | tail -n1) }

7. 故障排查清单

当手动引导失败时,可以按照以下步骤排查:

  1. 确认分区布局

    ls (hd0)/boot
  2. 检查内核文件

    cat (hd0,gpt2)/boot/vmlinuz-*
  3. 验证文件系统

    ls (hd0,gpt2)/etc/fstab
  4. 查看启动日志

    dmesg | grep error
  5. 尝试恢复模式

    • linux命令后添加singleinit=/bin/bash

掌握这些GRUB2命令不仅能解决启动问题,还能让你更深入地理解Linux系统的启动过程。记住,熟练使用GRUB2命令行是每个Linux系统管理员必备的技能之一。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询