修复fs解决树莓派系统损坏无法启动,错误信息:unable to mount root fs on unkown block

树莓派(这个网站)最近的一次瘫痪发生在上周三晚上(大概九点以后),直到昨天晚上周一(大概九点以后)才恢复访问。持续时间已经可以用天算了,中间没有及时的去修复解决,记录一下整个过程。

其中各种罗里吧嗦,不感兴趣的可以直接锚点过去,开始修复

当时是在修一个LED头灯(折腾),树莓派的GPIO连接到了面包板上,来来回回试验头灯的LED板接线。结果树莓派连续闪了几次红灯之后(连续短路,可能有电路回流),ssh失去连接,当时网络灯还亮着,几次ssh之后都连接不上,于是我拔掉了树莓派的电源又重新插上,结果派就只亮电源灯了(This is a terrible mistake)。

心想这下坏了,板子烧了,当时就是这种想法。但又记得树莓派好像有类似过载保护的芯片(自恢复保险丝),这种情况是不是会避免掉呢,于是各种百度,了解到的一个事实是:”树莓派的自恢复保险丝可能没有想象中的那么可靠(主要是针对国产板子说的吧),即使能恢复,也可能需要48小时甚至72小时,有时等多久也恢复不“。看到这个貌似稍微舒坦了一点,感觉好像还有希望。但是手头既没有显示器电视等输出设备,也没有USB转TTL线,怀着无比纠结的心情,睡觉了。

第二天下班回来继续百度,如果是保险丝坏了,是不是可以自己换个呢,于是各种1688,电子件采购论坛,由于不清楚规格,焊接等的条件,这个也就没有继续下去。自恢复保险丝恢复了没?怀着忐忑的心情给树莓派接上电源,结果还是电源灯亮。第三天下班回来又试了一次,还是这样。

中间的碎片时间也会思考,树莓派是不是真完了,但是也没看着冒火花闻着烧焦味儿啊,真是硬件出问题了?会不会是软件,首先得确认这个。于是周六回家的时候,带上树莓派、HDMI线、无线键鼠回家了。回家之后连上电视,开机不到一秒钟,出现的画面:

树莓派开机文件系统出错截图

而且键盘还没有反应,应该是还没启动到加载驱动的位置吧。

心想这下爽了,板子没问题,不过是系统坏了。最次的情况是重新烧系统。

但是辛辛苦苦攒下来的东西就没了,这个我是非常难以接受的,虽然访问量不大,也不盈利,怎么说也是近一年时间积攒的经验全都没了,接受不了。

于是想到求助,拍了张照片存了下来(iPhone的像素怎如此渣,好在能依稀辨别错误信息:unable to mount root fs on unkown-block,不能在未知块上挂载root文件系统)。

昨天上班上班第一件事(为什么不是前天晚上,驱了一路车有点累了,早上都没赶上班车)就是发帖求助,树莓派吧segmentfaultgeek-workshop都发布了,只希望有更多的大神看到小白的求助。

然后晚上收到大神们的回复,先感谢一下。

开始修复

其实基本流程我是清楚的(只不过没有实践经验),系统坏了,要么是引导坏了,要么是文件损坏。需要将SD卡挂载到linux系统,如果能识别,就把文件拷贝出来,该重做系统就重做系统(其中又少不了一番折腾)。

于是(好在有个debian)SD卡插上debian,debian自动挂载了两个文件系统,boot和7.9G文件系统,boot打开之后里面有两个img文件,使用ext2fs读不出来(现在还是没弄明白它是干什么的),还是感谢@fyplus(来自geek-workshop)大神。而7.9G文件系统则挂载失败,提示错误:

wrong fs type, bad option, bad superblock on /dev/sda1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog – try
dmesg | tail or so

自动挂载失败,手动挂载也失败。等等,bad superblock on /dev/sda1,什么是superblock
百度了之后有点明白了,于是又度娘“superblock 修复”,找到了一些文章,提及到的是使用fsck修复superblock。

例如这篇文章,而我的sd卡是ext4格式,所以我使用的命令是:

fsck -t ext4 /dev/sdb2

fsck修复文件系统结果截图

提示修复完成,但仍有错误,一看debian已经把有错误的7.9G文件系统挂载上了,打开一看正是linux的系统文件夹:dev var etc mnt usr var srv(我自己建立的,我太爱你们了),我次奥这是不是好了呢,插上sd卡,接通电源,闪了几下,插上网线,ssh pi@192.168.1.104 回车密码,YES!!!

至此,网站又恢复了访问:http://lison.cc
真是好事多磨,一拨又三折呀。

感谢百度贴吧:**@qijionly @xiaohuozi88888 geek-workshop: **@fyplus @软件-蹄飞
segmentfault: @沙渺 @RobinTang @Simple4Wan

挂载sd卡参考:
http://blog.csdn.net/leo115/article/details/7697886

其他参考内容:
Repair a broken SD card “superblock” on a #RaspberryPi
linux文件系统问题:wrong fs type, bad option, bad superblock
SuperBlock损坏修复

顺带解决一个问题:Google Fonts拖慢WordPress访问速度。

这个问题也是困扰了我好久,但我粗暴的把它归结为我的硬件与网络条件问题,因为使用的是电信家庭网、加上渣路由,还有树莓派的处理速度。之前知道有这个问题,不知道当时忙了还是怎么样,没放在心上,直到今天三番五次的打不开文章编辑页面,于是firebug了一下,发现原来我的wp也在连接Google fonts,于是照着这篇文章,给办了。
http://devework.com/google-fonts-in-wordpress.html