虚拟机 grub error: unknown filesystem错误解决办法

本文介绍了一种解决虚拟机启动时出现GRUB错误的方法。通过创建新的虚拟机并在故障虚拟机中添加其磁盘,设置从新磁盘启动以进入系统,进而尝试修复原始虚拟机的文件系统。

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

问题描述:虚拟机启动的时候,提示grub error: unknown filesystem这个错误,至于原因,有可能因为之前将uboot烧写到sd卡,用了dd命令,有可能弄错了扇区,把主硬盘的文件系统信息给覆盖了,因为我在扇区0,1,2都写了数据,说多都是泪

注意:这篇文章提供一个解决思路,因为今天运气实在太差,导致到了最后还是没能拯救整个虚拟机,但是知道大概的方法

网上好多文章都是因为安装了双系统,然后调整分区啥的,导致ubuntu系统的启动引导文件丢了还是啥的,我用的是虚拟机,虚拟机就的虚拟磁盘就像是一个硬盘,当引导出了问题就没法弄了,因为不启动虚拟机压根没办法进去操作。

解决思路:已经出问题的虚拟机A先保留,不要去动他。另外新建一个可以正常启动的虚拟机B,然后再虚拟机A中添加虚拟机B的磁盘,这时候虚拟机A就相当于接了两块硬盘,将启动路径设置为硬盘B,进入系统,这时候再对A硬盘进行恢复

步骤:

* 1.新建一个虚拟机B,保存的位置随意,别把虚拟机A弄坏就好
* 2.在虚拟机A中添加虚拟机B的磁盘文件
    * a.虚拟机->设置,添加一个新的硬盘

添加一个新的硬盘

这里写图片描述

这里写图片描述
选择刚刚新建的虚拟机的目录,选择磁盘,添加。添加完成之后,会看到虚拟机有两个硬盘
这里写图片描述

设置虚拟机从新添加的磁盘启动
这里写图片描述

这里写图片描述
此时应该可以正常进入虚拟机

进入虚拟机之后,打开磁盘工具,查看硬盘
这里写图片描述
140G那个硬盘就是虚拟机A的硬盘,超级块已经损坏,导致无法识别这个文件系统,超级快就保存在扇区0 中,所以千万别忘扇区0里边写数据,记住这个损坏的硬盘是/dev/sda,别弄错了,不然要出大事
这里写图片描述

打开终端,查看A硬盘的信息

sudo mkfs.ext4 -n /dev/sda    //老铁们记住啊,这个命令别乱用,如果没有参数-n 就是格式化硬盘

查看超级块

超级块是有备份的,备份放在了多个地方,挑选一个超级块来恢复就行了

重要声明:查看到超级块之后,我没往下执行,至于为什么,因为我再网上找恢复办法的时候,执行sudo mkfs.ext4 -n /dev/sda 的时候,没有打-n参数,导致整个硬盘已经被格式化,后悔莫及,格式化之后的硬盘可以正常挂载使用了,但是里边的资料全没了!!!!

恢复超级块的代码为:

sudo mkfs.ext4 -b   11239424  /dev/sda    //11239424是查看到的超级块

有其他网友说这样就能恢复超级块的数据,但是我已经没法尝试了,因为磁盘已经被我不小心格式化了。我在我的磁盘格式化并且可以正常使用之后之后,我就索性试再往扇区1里边写数据,抹掉超级块,然后使用这个指令去恢复超级块,总是提示无效的块大小,没法恢复,还是得再次格式化才能正常使用。所以我也不知道问题到底出在什么地方,也有可能是我往抹除超级块的方法不对,我抹除超级块的方法是直接使用(dd if=u-boot.bin of=/dev/sda seek=1)网扇区里边写数据,有可能使用这种方法往文件系统写数据的时候,把文件系统破坏了,导致我并不能重现超级块损坏的现象,所以,这篇文章仅供参考

### GRUB Rescue Mode 下 Unknown Filesystem 错误的解决方案 当计算机进入 GRUB 救援模式并报告 `error: unknown filesystem` 时,通常是由于引导加载程序(GRUB)未能找到其配置文件或相关文件系统所致[^1]。这种情况常见于删除 Linux 分区后未修复 MBR 或 EFI 启动记录的情况。 #### 诊断问题 在 GRUB 救援模式下,首先需要识别哪些磁盘和分区可用。输入以下命令列出所有设备及其分区信息: ```bash ls ``` 输出类似于 `(hd0) (hd0,msdos1) (hd0,msdos2)` 的结构,代表硬盘及各逻辑/主分区。逐一检查每个分区是否存在有效的文件系统或引导数据: ```bash ls (hd0,msdosX)/ ``` 假设发现某个分区包含类似 `boot/grub` 的目录,则可能是目标系统的根分区[^3]。 --- #### 设置正确的前缀与路径 一旦定位到含有 GRUB 文件的分区,需指定该位置作为新的前缀变量值。例如,如果前述步骤表明 `(hd0,msdos2)` 存储着必需资源,则依次执行下列指令调整环境参数: ```bash set prefix=(hd0,msdos2)/boot/grub set root=(hd0,msdos2) insmod normal normal ``` 上述动作旨在恢复常规菜单选项呈现方式,并允许进一步操作继续正常启动流程[^2]。 --- #### 更新主引导记录(MBR) 倘若仅希望完全移除残留影响从而单纯依靠另一单独操作系统(比如Windows),那么可以直接覆盖原始MBR内容而不保留任何关于Linux部分的信息痕迹。借助Live CD/DVD或者USB介质内的工具实现这一目的: 对于 BIOS 系统: ```bash sudo dd if=/dev/zero of=/dev/sda count=512 bs=1 sudo grub-install --target=i386-pc /dev/sda ``` 针对 UEFI 平台则稍复杂些,因为涉及到 GPT 表格以及 ESP 特殊区域等因素考虑。一般推荐利用 Windows 自带修复功能完成整个过程更为稳妥可靠[^1]。 具体做法如下: 1. 插入 Win 安装光盘重启机器; 2. 进入“修复计算机”->“疑难解答”->“高级选项”->“命令提示符”; 3. 执行以下脚本重建 BCD 数据库: ```cmd bootrec.exe /fixmbr bootrec.exe /fixboot ``` --- ### 注意事项 在整个处理期间务必小心谨慎对待每一步骤以免造成不可逆损害丢失重要资料等情况发生。另外考虑到实际情况千差万别所以最好事先做好充分准备包括但不限于备份关键文档等等措施以防万一[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值