当前位置: 首页 > news >正文

GRUB 2 命令行实战:5个命令从 UEFI Shell 手动引导 Ubuntu 系统

GRUB 2 命令行实战:5个核心命令从 UEFI Shell 手动引导 Ubuntu 系统

当你的Ubuntu系统突然无法启动,屏幕上只留下冰冷的UEFI Shell或GRUB Rescue提示符时,别急着重装系统。掌握GRUB 2命令行工具,你完全可以在没有图形界面的情况下,像外科手术般精准地手动引导系统。本文将带你深入GRUB 2的底层机制,通过5个关键命令的组合使用,解决各种引导故障场景。

1. 理解GRUB 2引导流程与故障场景

GRUB 2(GRand Unified Bootloader version 2)是现代Linux系统的默认引导加载程序,它负责在系统启动时加载内核和初始化内存盘。与传统BIOS不同,UEFI环境下的引导过程更为复杂,这也导致了更多潜在的故障点。

常见的引导失败场景包括:

  • UEFI Shell直接启动:系统无法找到有效的引导加载程序
  • GRUB Rescue模式:GRUB无法定位其核心模块或配置文件
  • 黑屏或无响应:内核加载失败或初始化内存盘损坏
  • 文件系统错误:根分区损坏或UUID变更

在Intel Atom Z3735等低功耗设备上,问题可能更复杂。这些设备通常只支持32位UEFI固件,却需要引导64位操作系统,导致标准Ubuntu安装介质无法直接工作。

手动引导的关键在于理解GRUB 2的三个阶段:

  1. 引导加载阶段:由UEFI固件执行GRUB的EFI应用程序
  2. 核心映像阶段:加载GRUB核心模块和基本功能
  3. 配置执行阶段:读取grub.cfg并显示引导菜单

当自动引导失败时,我们需要在命令行手动完成这些步骤。下面这个表格对比了自动引导与手动引导的关键差异:

引导方式所需文件用户交互适用场景
自动引导grub.cfg系统正常时
手动引导内核与initrd命令行输入系统故障时

2. 准备工作:定位关键分区与文件

在开始手动引导前,我们需要先找到几个关键组件的位置:

  • Linux内核:通常位于/boot/vmlinuz-版本号
  • initrd镜像:通常位于/boot/initrd.img-版本号
  • 根分区:包含系统文件的挂载点

进入GRUB命令行的方法:

  1. 在引导时按住Shift键(传统BIOS)或Esc键(UEFI)
  2. 出现GRUB菜单时按'c'键
  3. 或者在UEFI Shell中直接输入grubx64.efi

2.1 使用ls命令探索磁盘结构

GRUB的ls命令可以列出所有可识别的设备和分区:

ls

典型输出示例:

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

这里需要注意:

  • hd0表示第一个硬盘,hd1是第二个,以此类推
  • gpt表示GPT分区表,msdos表示MBR分区表
  • 数字表示分区号(从1开始)

对于eMMC存储的设备(如Z3735平板),可能会显示为(hd0,msdos1)(hd0,gpt1)形式。而SD卡或USB设备通常会被识别为(hd1)等后续编号。

2.2 定位Linux分区

通过以下命令检查各分区内容,寻找包含/boot目录的分区:

ls (hd0,gpt1)/ ls (hd0,gpt2)/boot

成功找到内核的分区会显示类似内容:

vmlinuz-5.15.0-56-generic initrd.img-5.15.0-56-generic grub/

对于不同存储设备,根分区的设备节点名称也不同:

  • SATA硬盘:/dev/sda2
  • eMMC存储:/dev/mmcblk0p2
  • NVMe SSD:/dev/nvme0n1p2

提示:在不确定分区时,可以尝试所有可能的组合。GRUB支持Tab键补全,输入部分路径后按Tab可以显示可用选项。

3. 手动引导五步法

找到必要文件后,按照以下五个步骤完成引导:

3.1 设置根设备

set root=(hd0,gpt2)

这个命令告诉GRUB哪个分区包含内核和initrd。这里的(hd0,gpt2)应替换为你实际找到的分区。

3.2 加载Linux内核

linux /boot/vmlinuz-5.15.0-56-generic root=/dev/mmcblk0p2

参数说明:

  • 第一个参数是内核路径(相对于上一步设置的root)
  • root=指定根文件系统设备
  • 可添加其他内核参数如ro(只读挂载)、quiet(减少输出)等

对于不同设备类型,root参数需要相应调整:

  • SATA硬盘:root=/dev/sda2
  • eMMC:root=/dev/mmcblk0p2
  • LVM卷:root=/dev/mapper/vgubuntu-root

3.3 加载initrd镜像

initrd /boot/initrd.img-5.15.0-56-generic

initrd(初始内存磁盘)包含启动早期所需的驱动和工具。其版本号必须与内核一致。

3.4 启动系统

boot

执行此命令后,GRUB会将控制权交给Linux内核,开始系统启动过程。

3.5 故障排查

如果启动失败,常见问题及解决方法:

  1. 内核panic:检查root参数是否正确,确认文件系统无损坏
  2. 无法挂载根文件系统:确认root设备路径,尝试添加rootfstype=ext4等参数
  3. 卡在initramfs:可能是initrd损坏或缺少关键驱动

4. 针对不同硬件设备的调整

4.1 Intel Atom Z3735等32位UEFI设备

这类设备需要特殊处理:

  1. 使用32位GRUB EFI加载器(bootia32.efi)
  2. 手动引导命令与常规系统相同
  3. 安装系统后需修复引导:
sudo apt-get install grub-efi-ia32-bin sudo grub-install --target=i386-efi --efi-directory=/boot/efi --boot-directory=/boot

4.2 多硬盘系统

当系统有多个磁盘时,GRUB的设备命名可能变化。可以通过以下命令确认:

ls -l /dev/disk/by-id/

然后在GRUB命令中使用UUID指定根分区:

linux /boot/vmlinuz-... root=UUID=5e7e4f8d-3b12-4a8c-9c5d-1e1f3a7b8c9d

5. 永久修复GRUB引导

成功进入系统后,需要永久修复引导问题:

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

对于EFI系统:

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu

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

对于经常需要手动引导的用户,可以创建自定义GRUB菜单项。编辑/etc/grub.d/40_custom

menuentry "Manual Boot" { set root=(hd0,gpt2) linux /boot/vmlinuz-... root=/dev/mmcblk0p2 initrd /boot/initrd.img-... }

然后更新GRUB配置:

sudo update-grub

7. 安全注意事项

手动引导时需注意:

  • 避免随意修改内核参数,特别是init=参数
  • 不要使用未知来源的内核和initrd
  • 在公共计算机上输入命令时注意隐私保护

掌握这些GRUB命令行技巧后,你将能够应对绝大多数Linux引导故障,无需依赖Live CD或重装系统。记住,每个成功的系统修复都是对技术理解的深化,而这些经验最终会让你成为真正的Linux问题解决专家。

http://www.jsqmd.com/news/1150297/

相关文章:

  • 双节锂离子电池主动均衡系统设计与实现
  • 企业级船运物流管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • Ideogram 4.0图像生成技术解析:排版控制与区域编辑实战指南
  • CentOS7 离线安装 GCC 9.3.0:源码编译与 RPM 包安装 2 种方案对比
  • RubyPorter:如何快速将RubyGems模块自动打包成RPM?5分钟上手指南
  • Kali Linux SSH 与 xrdp 远程桌面:2 种远程访问方案对比与 5 步可视化配置
  • Rainmeter音频频谱深度解析:从原理到实战的终极指南
  • 第21届智能车竞赛在线文档成绩登记使用教程
  • 终极Foobar2000逐字歌词解决方案:三大音乐平台歌词完美兼容指南
  • Android短信备份终极解决方案:SMS Backup+ 全面保护你的通信记忆
  • VR-Reversal:终极3D转2D视频转换工具,让VR内容触手可及
  • Ubuntu 20.04 安装 ROS1 melodic:2种非官方支持方案与兼容性实测
  • Linux 0.11 中断处理全流程解析:从 IDIV 指令到 IRET 的 3 次栈切换
  • 如何禁止Win11系统升级?6大方法关闭Win11更新最安全简单操作方法
  • 本地部署AI生图与视频生成工具:免费开源方案实战指南
  • Stable Diffusion本地部署:零成本解锁AI绘画无限创作自由
  • Windows 11 任务管理器 3 类内存泄露排查:分页/非分页缓冲池与句柄激增定位
  • Adobe Illustrator批量替换革命:3分钟掌握ReplaceItems.jsx完整指南
  • 高效转换Mixamo动画:专业Blender插件实现UE4骨骼重命名与根运动保留
  • Seedance 2.5本地部署指南:AI生图与视频生成的完整实践
  • AI生图视频本地部署指南:从环境配置到工作流优化
  • Microsoft Edge 安装目录深度解析:7处冗余文件与3个核心路径优化指南
  • CentOS 7.9 LVM 扩容实战:从 VG 空间不足到 LV 扩容 40G 的 9 步操作
  • Seedance2.5本地AI生图与视频生成工具部署与优化指南
  • Seedance 2.5本地部署指南:AI生图与视频生成的离线解决方案
  • Seedance2.5本地AI生图视频工具实测:免费离线部署全攻略
  • Veritas NetBackup 10.1 Windows 静默安装:3步配置应答文件实现无人值守部署
  • 锂离子电池组电压平衡技术及MP2672A应用实践
  • Linux 系统 ECC 内存状态验证:3 种命令对比与实战解读
  • Samba 4.15.13 多用户权限配置:5步实现Windows/Linux混合环境共享