GRUB2 命令行实战:5个核心命令手动引导 Ubuntu 系统(以 Z3735 为例) GRUB2 命令行实战5个核心命令手动引导 Ubuntu 系统当你的Ubuntu系统无法正常启动时GRUB2命令行界面可能是你最后的救命稻草。本文将深入解析ls、set root、linux、initrd和boot这五个核心命令在系统恢复中的关键作用帮助你掌握手动引导系统的技能。1. GRUB2命令行基础与环境准备GRUB2GRand 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如果启动失败可能需要检查以下问题内核参数错误确认root参数指向正确的根分区尝试添加nomodeset参数解决显卡问题文件系统损坏# 尝试修复文件系统 fsck /dev/sda2initrd不匹配确保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/nvme0n1p26. 高级技巧与自动化脚本对于经常需要手动引导的用户可以创建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 --setroot --file /etc/os-release linux /boot/vmlinuz-$(ls /boot | grep vmlinuz | sort -V | tail -n1) rootUUID$(blkid -s UUID -o value $(findfs $(mount | awk $3/{print $1}))) initrd /boot/initrd.img-$(ls /boot | grep vmlinuz | sort -V | tail -n1) }7. 故障排查清单当手动引导失败时可以按照以下步骤排查确认分区布局ls (hd0)/boot检查内核文件cat (hd0,gpt2)/boot/vmlinuz-*验证文件系统ls (hd0,gpt2)/etc/fstab查看启动日志dmesg | grep error尝试恢复模式在linux命令后添加single或init/bin/bash掌握这些GRUB2命令不仅能解决启动问题还能让你更深入地理解Linux系统的启动过程。记住熟练使用GRUB2命令行是每个Linux系统管理员必备的技能之一。