GRUB RESCUE下 修复Linux引导

本文介绍了解决GRUB启动时出现“unknown filesystem”错误的方法。通过使用grub-rescue模式下的命令集,如set、ls等,定位Linux根分区,并通过手动编辑grub配置实现系统的正常启动。

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

前段时间修复移动硬盘分区表的时候,把本本的分区也重新弄了下,导致ubuntu的grub找不到linux分区(由于root分区uuid改变造成的不能正常启动),切换到Linux系统时,提示错误“unknown filesystem”,进入grub rescue模式。

在Google上搜了一下,终于解决了,方法如下:

1. 首先使用set命令,查看当前配置信息;

2. 然后再使用ls命令,遍历一下所有的磁盘;

3.查找Linux操作系统的”/”分区所在的磁盘,可以使用“ls (hdx,x)/”,这里的hdx代表你的物理磁盘,如果只有一块硬盘,则x的值为0,后面一个x(也肯呢个是msdosx,是具体情况而定)代表“/”分区的编号。

执行该命令(注意,ls命令后的“/”不能少,否则会出现“bad filename”错误)后,如果结果为“unknown filesystem”,则说明不是Linux分区,继续查找,知道返回带有“ /boot”目录的分区。

4. 找到“/”挂载点所在的分区后,就可以修改启动分区了:

grub rescue >root=(hdx,msdosx)

grub rescue >prefix=(hdx,msdosx)/boot/grub

grub rescue >insmod normal

grub rescue >normal

执行完normal命令后,如果normal模块加载成功,那我们就可以看到久违的grub引导菜单了。此时,按“c”切换到grub的命令行模式,修改grub菜单:

grub >root=(hdx,msdosx) //设置系统启动分区,在这里指向内核所在分区

grub >prefix=(hdx,msdosx)

接下来加载Linux.mod模块,并将新的启动信息写入grub:

grub >insmod (hdx,msdosx)/boot/gurb/linux.mod

grub >linux /boot/vmlinuz-xxx-xxx root=/dev/sdax //里边的xxxx可以按Tab键

grub >initrd /boot/initrd.img-xxx-xxx

5.执行boot命令,启动系统(如果系统不能启动,可以重复1-4步,多试几次):

grub >boot

6.正常启动系统后,在终端中输入“sudo update-grub”命令,重新生成“grub.ccfg”文件,更新grub信息,屏幕会出现“generating…”的信息。

如果没有安装grub-pc软件包,或者grub-legacy,会出现无法找到命令的错误。这时,只需安装一下grub-pc软件包即可。(注意:安装过程中会出现提示要不要新建grub到第一分区,由于我的本本第一分区是Windows系统,所以在此我选择“NO”,而是将grub建立在“/”挂载点所在的分区)

7.更新完毕之后,重启,问题解决了。如果问题还没解决,重复1-6步的同时,重新建立grub到第一硬盘mbr:

sudo grub-install /dev/sda

转载自:http://blog.youkuaiyun.com/miromelo/article/details/6132702


<think>好的,我现在要帮用户解决Linux修复GRUB Rescue引导的问题。用户提到的是GRUB Rescue模式,所以首先得理解这个问题的常见原因。通常,GRUB引导损坏可能是因为MBR被覆盖、分区表变动或者配置文件丢失。 接下来,我需要回忆之前处理这类问题的方法。根据用户提供的引用内容,有两种方法:使用grub rescue命令行手动引导,或者进入急救模式重新安装GRUB。另外,可能还有一种方法是用Live CD/USB启动,然后chroot到系统进行修复。这些步骤需要详细说明,确保用户能一步步操作。 首先,手动引导的方法。用户需要知道如何找到正确的分区,设置prefix、root,加载必要的模块,然后引导系统。这部分需要检查命令的正确性,比如ls命令查看分区,是否用insmod加载模块,以及linux和initrd命令的路径是否正确。要注意不同系统版本可能路径不同,比如vmlinuz和initramfs的版本号可能需要用户自行确认。 然后是进入急救模式的方法。这里可能需要引导进入恢复环境,然后挂载系统分区,安装GRUB到硬盘。这里需要确保设备名称正确,比如/dev/sda,以及是否使用grub2-install命令,这取决于发行版。另外,重新生成grub.cfg也是关键步骤,用户可能需要执行update-grub或者grub2-mkconfig命令。 第三种方法使用Live USB,这对于无法进入rescue模式的用户可能更适用。需要指导用户挂载正确的分区,绑定必要的目录,然后chroot进去进行GRUB的安装和配置。这一步需要特别注意挂载点的正确性,以及是否安装了必要的软件包,比如grub2。 还要考虑用户可能的疑问,比如如何确定根分区,或者遇到命令错误怎么办。这时候可能需要建议用户使用ls命令在grub rescue下查看分区结构,或者检查文件系统是否有错误。此外,提醒用户在操作前备份重要数据,以防万一。 最后,生成相关问题,帮助用户进一步了解GRUB修复的其他方面,比如不同发行版的差异,或者如何预防引导问题。这些问题需要与用户的实际需求相关,能够引导他们深入学习。 总的来说,回答需要结构清晰,步骤详细,同时参考提供的引用内容,确保方法可靠。还要注意使用正确的中文表达和LaTeX格式,虽然用户问题中没有数学公式,但按照系统指令,行内公式要用$...$,独立公式用$$...$$。不过在这个问题中可能用不上数学公式,所以主要确保其他格式正确,如代码块和引用标注。</think>### 如何修复GRUB Rescue引导问题 #### **方法一:通过GRUB Rescue命令行手动引导** 1. **列出所有磁盘分区** 在GRUB Rescue模式下输入: ```bash grub rescue> ls ``` 查看所有分区,例如:`(hd0) (hd0,msdos1) (hd0,msdos2)`。 2. **定位根分区和引导文件** 依次测试分区是否包含`/boot`目录: ```bash grub rescue> ls (hd0,msdos1)/boot ``` 若显示文件列表(如`vmlinuz-xxx`和`initrd.img-xxx`),则找到正确的根分区。 3. **设置GRUB环境变量** 假设根分区为`(hd0,msdos1)`: ```bash grub rescue> set root=(hd0,msdos1) grub rescue> set prefix=(hd0,msdos1)/boot/grub ``` 4. **加载必要模块并进入正常模式** ```bash grub rescue> insmod normal grub rescue> normal ``` 5. **引导系统并修复GRUB** 进入系统后,在终端执行: ```bash sudo update-grub sudo grub-install /dev/sda ``` --- #### **方法二:使用Live USB进入急救模式** 1. **启动Live环境** 使用Linux安装U盘启动,选择“试用模式”(Try Ubuntu/Fedora等)。 2. **挂载原系统分区** 假设原系统根分区为`/dev/sda1`: ```bash sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys ``` 3. **切换到原系统环境** ```bash sudo chroot /mnt ``` 4. **重新安装GRUB** ```bash grub-install /dev/sda update-grub exit sudo reboot ``` --- #### **方法三:直接修复引导记录(适用于MBR损坏)** 若主引导记录(MBR)损坏,可通过以下命令修复: ```bash sudo grub-install --target=i386-pc /dev/sda sudo grub-mkconfig -o /boot/grub/grub.cfg ``` --- ### 关键注意事项 - **分区命名差异**:不同设备可能显示为`hd0,gpt1`或`hd0,msdos1`,需根据实际情况调整[^1]。 - **配置文件更新**:修复后必须执行`update-grub`以重新生成引导菜单[^2]。 - **双系统用户**:若为Windows/Linux双系统,需确认分区未被Windows更新覆盖。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值