虚拟机 grub error: unknown filesystem错误解决办法
程序员文章站
2022-05-09 21:09:56
...
问题描述:虚拟机启动的时候,提示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)网扇区里边写数据,有可能使用这种方法往文件系统写数据的时候,把文件系统破坏了,导致我并不能重现超级块损坏的现象,所以,这篇文章仅供参考
上一篇: SQL必知必会(三)-进阶篇