grub rescue救援模式的处理

本文详细介绍了如何在Linux遭遇grubrescue救援模式后,通过设置启动分区、加载模块并修复grub配置,以解决因分区调整导致的启动问题。步骤包括查看设备、定位boot目录、设置启动路径和引导系统,并提供虚拟机实验和双系统场景的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

grub rescue救援模式的处理

来源: https://www.cnblogs.com/itcomputer/articles/4182344.html

我的linux在调整分区后,出现了grub rescue>
这表示grub2的配置文件坏了,由于分区调整或分区UUID改变造成GRUB2不能正常启动,从而进入修复模式(grub rescue)也称救援模式。

在救援模式下只有很少的命令可以用:
set , ls , insmod , root , prefix

(1)set 查看环境变量,这里可以查看启动路径和分区。
(2)ls 查看设备
(3)insmod 加载模块
(4)root 指定用于启动系统的分区,在救援模式下设置grub启动分区
(5)prefix 设定grub启动路径

一、分区乱了,我不知道boot目录在什么地方了
ls #查看一下设备状态
如图:
grub rescue救援模式的处理 - 汉斯的遗忘 - 汉斯的遗忘
grub rescue> ls (hd0,msdos3)
error: bad filename.
提示:错误的文件名,我在测试时发现必须是后面加一个/

grub rescue> ls (hd0,msdos3)/
./ …/ lost+found/

通过查看发现在(hd0,msdos1)/下有一个boot目录

二、设置grub的启动分区和路径
set root=(hd0,msdos1) #设置grub启动分区
set prefix=(hd0,msdos1)/boot/grub/ #设置grub启动路径
查看一下设置情况:
grub rescue> set
prefix=(hd0,msdos1)/boot/grub
root=hd0,msdos1

三、加载基本模块
insmod /boot/grub/normal.mod #加载基本模块

四、进入正常模式
normal #进入正常模式,出现菜单,如果加载grub.cfg(错误的)可能出现问题,按shift可以出现菜单,之后按c键进入控制台
进入正常模式后就会出现grub>这样的提示符,在这里支持的命令就非常多了。

五、引导系统
set root=(hd0,msdos1) #设置正常启动分区
linux /boot/vmlinuz … ro text root=/dev/sda1 #加载内核,进入控制台模式
initrd /boot/initrd … #加载initrd.img
boot #引导

六、更新grub
安装:grub-install /dev/sda
更新:update-grub

虚拟机实验:
经过上面的经历,我在虚拟机里进行了一下实验,加深巩固。
一、把boot目录移到别的分区
mv /boot/ /home/
这样重启之后就出现了
grub rescue>救援模式。
二、手动启动过程记录
ls (hd0,msdos6)/ #找到了boot所在的分区
set root=(hd0,msdos6) #设置grub启动分区
set prefix=(hd0,msdos6)/boot/grub/ #设置grub启动路径
insmod /boot/grub/normal.mod #加载基本的模块
normal #从救援模式进入正常模式

set root=(hd0,msdos6) #设置系统启动分区,在这里指向内核所在的分区
linux /boot/vmlinuz-2.6.35-22-generic ro text root=/dev/sda1 #加载内核
initrd /boot/initr … #加载initrd.img
boot #启动

测试中正常启动并出现登录对话框。

双系统,win7下一键Ghost,进入grub rescue的解决方法

本人安装的是win7+ubuntu10.10,硬盘直接安装。因为win7下装了几个大软件,所以决定一键Ghost备份一下,结果重启之后,就进入了grub rescue界面:

error:unknown filesystem

grub rescue>

研究了半天,才解决这个问题。先说说是怎么回事。

安装ubuntu时,启动是用grub2进行启动。我的win7在C盘,Ubuntu空间是从D盘里分出来的。我们知道,每次系统启动时都是先进入grub,也就是先在ubuntu的启动目录里选择进入哪个系统,如果按分区来讲,grub2在(hd0,msdos7)也就是我的ubuntu所在的分区。那么启动时root应该设在(hd0,msdos7),可一键ghost会修改启动,它把root改在(hd0,msdos9),这是个windows分区,也就是NTFS分区,ubuntu是不能识别这种文件系统的,所以就有了error:unknown filesystem,这种情况下自然不能启动,那么grub2就会启动grub rescue模式,就是修复模式。那么我们要做的就是把grub重新指向(hd0,msdos7)。

下面是具体步骤:

①查看分区

因为每个人的分区不一样,所以我们要查看分区,用ls指令

grub rescue>ls

回车后,就会出现

(hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos1)

grub rescue>

注:我用的是grub2,对于grub用户,分区前没有msdos字样

上面是我的分区,每个人的不一样。

grub rescue>set回车

prefix=(hd0,msdos9)/boot/grub

root=hd0,msdos9

从上面可以看出来现在我的系统是从(hd0,msdos9)里启动的。

那么怎么知道ubuntu在哪个分区呢?进入第二步

②寻找ubuntu所在分区

这一步我们要一个一个的试,

还是用ls指令

先试下在不在(hd0,msdos8)里边

grub rescue>ls (hd0,msdos8)

回车会发现,不是,还是unknown filesystem

接着来

。。。。。。。。。

当我试到

(hd0,msdos7)的时候,可以看到一下子多了很多字,这些就是我ubuntu主文件夹下的文件夹和文件的名字。OK,找到分区了!

③修改启动分区

grub rescue>root=(hd0,msdos7) grub rescue>prefix=/boot/grub //grub路径设置 grub rescue>set root=(hd0,msdos7) grub rescue>set prefix=(hd0,msdos7)/boot/grub grub rescue>insmod normal //启动normal启动

grub rescue>normal

依次敲入上面的指令,是不是看到熟悉的启动菜单了?选win7后,一键Ghost就开始备份系统了。别高兴太早,一切还都没开始呢。如果你不是因为一键Ghost问题进入grub rescue,可以直接跳到第⑤步

④再来一遍

当你等着一键Ghost备份完系统,重启后,你发现还是

error:unknown filesystem

grub rescue>

别着急,再把前三步进行一遍就可以了

⑤进入命令行 启动Ubuntu

进入系统启动选项界面后,你发现,无论点那个还是进不去,这是因为你还没有真正的修改grub,这个要到ubuntu里修改

进入系统启动项界面后,按C进入命令行模式

grub> set root=hd0,msdos7

grub> set prefix=(hd0,msdos7)/boot/grub

grub> linux /vmlinuz-xxx-xxx root=/dev/sda7 //里边的xxxx可以按Tab键,如果有acpi问题,在最后加一句acpi=off grub> initrd /initrd.img-xxx-xxx grub >boot

Ubuntu正常启动了吧?

⑥进入ubuntu修复grub

大功就要高成了

进入Ubuntu后,修复grub

在终端里运行

sudo update-grub

重建grub到第一硬盘mbr sudo grub-install /dev/sda

好啦,重启,一切搞定!

### GRUB Rescue模式下文件系统未知的解决方案 当删除 Ubuntu 或其他 Linux 发行版后,可能会导致 GRUB 引导加载程序出现问题,从而进入 `grub rescue` 模式并报错 `error: unknown filesystem.` 这种情况通常发生在多系统环境中,尤其是 Windows 和 Ubuntu 双系统的场景。 以下是详细的解决方法: #### 1. 查看磁盘分区 在 `grub rescue>` 提示符下输入以下命令来查看当前硬盘上的所有分区: ```bash ls ``` 这会列出所有的分区及其基本信息。例如,可能看到如下输出: `(hd0,msdos1) (hd0,msdos2)` 其中 `(hd0,msdos1)` 表示第一个硬盘的第一个分区,而 `(hd0,msdos2)` 则表示第二个分区[^2]。 #### 2. 找出安装操作系统的分区 通过逐一尝试各个分区,找到包含操作系统引导文件的那个分区。可以使用以下命令检查某个分区中的文件是否存在: ```bash ls (hdX,Y)/ ``` 替换 `(hdX,Y)` 为实际的分区编号。如果该分区中有类似于 `boot`, `EFI`, 或者 `Windows` 文件夹,则说明这是目标分区之一[^3]。 对于 Windows 系统来说,特别需要注意的是寻找是否有 `NTLDR` 或 `BOOTMGR` 文件存在。如果是 Linux 系统则应查找 `/boot/grub/`. #### 3. 设置正确的前缀和根目录 一旦确认了正确的分区之后,就需要将其设为新的默认路径以便继续修复过程。假设已经知道 Windows 安装所在的分区是 `(hd0,msdos1)` ,那么执行下面两条指令即可完成设定工作: ```bash set prefix=(hd0,msdos1)/boot/grub # 对于Linux的情况适用此句 set root=(hd0,msdos1) # 需要根据实际情况调整参数值 insmod normal # 加载normal模块使能更多功能支持 normal # 返回正常的Grub菜单界面而非救援状态 ``` #### 4. 使用 Boot-Repair 工具自动修复 如果手动方式难以解决问题或者希望更简便的办法,可以从 Live CD/DVD 或 USB 启动一个基于 Debian 的发行版本比如 Xubuntu 并安装 boot-repair 应用来进行自动化处理。 打开终端窗口键入这些语句获取软件包以及启动图形用户端口GUI形式的应用对话框: ```bash sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update sudo apt-get install -y boot-repair && boot-repair ``` 按照界面上给出的选择推荐选项进行操作即能够有效恢复大部分复杂的引导链路错误状况[^4]. --- ### 注意事项 在整个过程中保持冷静非常重要;即使面对严重的引导失败也不要轻易放弃自己的数据资料。始终记得备份重要文档以防万一发生不可逆损害事件的发生几率极低但仍需谨慎对待每一步骤动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值