修复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修复文件系统结果截图
fsck修复文件系统结果截图

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

至此,网站又恢复了访问:https://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

用Arduino IDE USB 驱动 AtTiny 85 (原创)

网上看到有朋友说心血来潮买了个AtTiny 85,结果不会玩。其实我也是这种情况,有时间会玩玩树莓派,看到这么小巧的板子觉得以后肯定会用到,然后就买了。结果放了几个月后才要拿出来玩一下。属于对硬件嵌入式基本上一窍不通但又比较感兴趣的。

刚开始玩的时候是直接找了跟手机USB线,连上AtTiny 85,插上电脑(win7 x64系统),就听到发现硬件、断开硬件来回不断的这种声音。

OK,笔记本没有com口,想想应该没关系啊,我这是USB直连的,刚买回来就是这么戳了两下,然后没成功就放起来了。

先来两张AtTiny 85的靓照吧,旁边没有使用一角硬币对比,但是高度真的跟一角硬币直径差不多,如果你的项目对空间要求比较苛刻的话,Tiny 85应该能够很好的满足。

Arduino AtTiny 85  正面图这是正面照

Arduino AtTiny 85  背面图

背面照

得幸那天加了Arduino DIYer群,请教了一下大神,就把过程记录一下,感谢@dq。

开始记录点亮AtTiny 85的折腾:

1.首先下载DigisparkArduino-Win32,ok,我认为这是修改过的Arduino IDE。

2.下载完成后直接解压,得到如下目录。

DigisparkArduino-Win32目录列表

 

 

 

第一个是Digispar-Arduino的主程序目录。

第二个是usb模拟串口的驱动目录?我不是很清楚啊。这是度娘告诉我的关于libusb的两篇介绍:

http://www.cnblogs.com/image-eye/archive/2011/08/30/2159897.html

http://blog.sina.com.cn/s/blog_63447c1f01012rwb.html

第三个是一些程序实例目录。

ok,先装驱动,然后打开Digispark-Arduino,开始软件方面的工作,界面看起来是这样的:Digispark-Arduino-1.0.4主界面

3.点击Tools -> Board -> Digispark(Tiny Core) 选择Tiny Core为当前开发版核心。

4.然后选择File -> Example -> Digispark_Example -> Start,选择一个最简单的示例,来验证Arduino IDE驱动AtTiny。装载之后的程序代码如下:

5.直接点击上传按钮,等到出现如下图示后:

上传AtTiny 85提示插入设备

再插入板子,跟普通的Arduino板子是有一点区别的。

然后就会看到AtTiny 85的贴片LED一闪一闪的效果了。

最后得到一个结论是,要驱动AtTiny 85,Arduino IDE加一条USB线就够了,不需要其他的编程器、下载器这些外设了。

如果要烧bootloader,就需要AVRMKII。这个具体还没弄明白,因为我的AtTiny 85已经烧了bootloader。

 

搞定了这个之后,下面就要学习一下如何点亮LED点阵了

各种LED点阵