怎样修复grub开机引导(grub rescue)

本文介绍了解决GRUB2引导错误“error: unknown filesystem”的详细步骤。通过使用救援模式命令,如ls、insmod等,定位Linux分区,并重新设置grub启动配置,最终恢复正常启动流程。

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

很多时候,特别是在linux调整分区后,开机重启时会出现
error : unknow filesystem
grub rescue>
的字样,系统就是进不去。这表示你的grub2的配置文件坏了……
由于分区调整或分区UUID改变造成grub2不能正常启动,从而进入修复模式了(grub rescue),也称救援模式。

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

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

具体修复步骤如下:
1、查看分区:grub rescue> ls 回车
会出现如下字样:
(hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)
注:上面是我的分区设备,每个人可能不一样,但原理都是一样的。

   2、寻找ubuntu所在分区:
       (就是寻找你的Linux系统是装在以上哪个分区里)
         grub rescue> ls (hd0,msdos1)/
        若出现unknown filesystem字样,则尝试下一个
        ……
        若出现的是你的ubuntu主文件夹下的文件夹和文件的名字,那就是的要找的分区了。

    3、修改启动分区:
         (假如你找到的启动分区是hd0,msdos8)

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

     grub rescue>normal

    之后你就会看到熟悉的启动菜单栏了

4、进入命令行启动ubuntu

     进入系统启动选项界面后还是进不去,

   因为你还没有真正的修改grub,这个要到ubuntu里修改

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

    grub >set root=hd0,msdos8

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

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

   这样就可以进入了


   5、进入ubuntu修复grub

在终端里运行 sudo update-grub

                                    sudo grub-install /dev/sda


   6、重启,搞定!!

注:我当时只是修改了1~3步骤,然后在菜单栏就可以进入系统了,且一切正常。

   可惜,在重启时,系统就只有一个光标在左上角不停的闪,咋也进不了系统。后来开机按F2,开机启动项改为硬盘启动就好了。

有遇到过这样安装不成功的,在GRUB2手册中有另外的重装grub2 到MBR 的方法,记录一下:

[html] view plain copy

此方案安裝會使用 chroot 指令來存取受損系統的檔案。  
一旦執行了 chroot 指令,LiveCD 會將損壞系統的 / (根目錄)當作是目前自己所使用的。  
在 chroot 環境中執行的指令會影響受損系統的檔案系統,而不是 LiveCD 的。  
1. 開機進入 LiveCD 桌面(Ubuntu 9.10 或更新版)。注意此 LiveCD 必須要與您現在欲修復系統的版本相同 - 無論 32-bit 或是 64-bit(否則 chroot 會失敗)。  
2. 開啟終端機 - 應用程式,附屬應用程式,終端機。  
3. 確認您的標準系統分割區 - (選項是小寫的「L」)  
sudo fdisk -l  
若您不確定,執行  
df -Th  
找到正確的磁碟容量及 ext3 或 ext4 格式。  
4. 掛載您的標準系統分割區  
用正確的分割區替換:sda1, sdb5 等等。  
sudo mount /dev/sdXX /mnt #範例:sudo mount /dev/sda1 /mnt  
5. 若您有獨立的 /boot 分割區:  
sdYY 是 /boot 分割區的位置(例如 sdb3)  
sudo mount /dev/sdYY /mnt/boot  
6. 掛載重要的虛擬檔案系統:  
sudo mount --bind /dev /mnt/dev  
sudo mount --bind /dev/pts /mnt/dev/pts  
sudo mount --bind /proc /mnt/proc  
sudo mount --bind /sys /mnt/sys  
7. Chroot 至您的標準系統裝置:  
sudo chroot /mnt  
8. 若系統中沒有 /boot/grub/grub.cfg 或其內容不正確,使用以下指令重建  
update-grub  
9. 重新安裝 GRUB 2:  
以正確裝置替換 - sda, sdb, 等等。不要指定分割區號碼。  
grub-install /dev/sdX  
10. 驗證安裝(使用正確的裝置,例如 sda。不要指定分割區):  
sudo grub-install --recheck /dev/sdX  
11. 退出 chroot:按下鍵盤之 CTRL-D  
12. 卸載虛擬檔案系統:  
  
sudo umount /mnt/dev/pts  
sudo umount /mnt/dev  
sudo umount /mnt/proc  
sudo umount /mnt/sys  
若您有掛載獨立的 /boot 分割區:  
sudo umount /mnt/boot  
13. 卸載 LiveCD 的 /usr 目錄:  
sudo umount /mnt/usr  
14. 卸載最後的裝置:  
sudo umount /mnt  
15. 重新開機。sudo reboot  

另外常用的就是,无法启动到grub界面,这个时候就需要另外的引导了,网上很多的方法是使用ubuntu的安装光盘,也就是livecd,

我常用的就是U盘,用老毛桃加载一个ubuntu 的iso 制作一个ubuntu启动U盘,然后bios选择U盘启动,

选择 try running ubuntu,不选 install 选项

这样就运行了我们制作在U盘上面的ubuntu系统,可以以这个为媒介来修改本机上其它的系统文件,像上面提到的 先mount 上那些分区:

sudo mount /dev/sdxx /mnt

可先使用 sudo fdisk -l 命令查看分区情况,选择对应的

如果要修改对应内容 使用 chroot 切换 完了之后 ctrl+d退出

我这边是13.04 , grub版本为:

[html] view plain copy

jscese@jscese-H61M-S2P:~$ grub-install -v  
grub-install (GRUB) 2.00-13ubuntu3  

在这个情况下可以使用如下命令将正确的grub 安装到 MBR:

[html] view plain copy

grub-install --root-directory=/mnt /dev/sda  

我这的sda 为第一块硬盘

症状:
开机显示:GRUB loading
error:unknow filesystem
grub rescue>

原因:

由于操作者不知道grub2分为两部分,一部分(一般情况下)写在了mbr上,另一部分写在了某个分区的/boot/grub目录(如果 /boot单独分区,则直接写在对应分区的/grub目录)里面。由于上述操作,致使grub2的mbr里面的那一部分找不到/grub目录里面的那一部 分了(或者那一部分已经删除了)。

<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更新覆盖。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值