今天将DHT11温湿度传感器连接到树莓派上读取温度和湿度信息,硬件连接好之后发现树莓派无法SSH远程登陆,查看电源灯亮着,网线也插好了,接着将树莓派连接到显示器上,再次启动发现出现故障,无法启动系统,提示以下信息:
CPU0:stopping
CPU1:stopping
– end Kernel panic – not syncing : VFS: Unable to mount root fa on unknow-block(179,2)
初步分析:
刚开始比较慌,因为树莓派比较脆弱,其GPIO口输入电压不能超过3.3V,否则会烧坏树莓派,我怀疑做实验的时候接错了线。想到自己写了一个上传树莓派CPU和GPU温度信息的脚本,所以查看信息,发现最新的温度信息在昨天中午,这时基本就可以排除今天做实验损坏树莓派的可能,损坏原因可能为系统文件错误,可以重新制作系统镜像或者恢复备份文件。
恢复系统:
由于我的树莓派原来有备份,备份教程在:制作树苺派SD卡备份镜像——树苺派系统备份与还原指南 ,所以我找到了原来的备份文件,使用win32diskimage还原备份系统,重新上电,结果树莓派仍然不能启动,错误信息仍然为- end Kernel panic – not syncing : VFS: Unable to mount root fa on unknow-block(179,2) ,恢复失败。
修复成功:
系统还原后仍然不能启动,这时我比较郁闷了,然后上网查找解决办法,说可以修复系统,假设SD卡分区为sdb2,则恢复命令为:
sudo fsck.ext4 -v /dev/sdb2
我将SD卡查到ubuntu主机上,结果可以正常读取到树莓派的SD卡分区,也不用修复了,再次将树莓派上电,绿灯闪烁,屏幕上也出现了系统正常初始化的信息,无法启动的树莓派修复成功!
2018.09.29日更新:
如何查看SD卡的分区,使用这个命令即可:
lixinxing@li:sudo fdisk -l
Disk /dev/sdc:14.6 GiB,15707668480 字节,30679040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1a2fe076
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sdc1 8192 96663 88472 43.2M c W95 FAT32 (LBA)
/dev/sdc2 98304 30679039 30580736 14.6G 83 Linux
这样就可以看到SD卡的分区为/dev/sdc2。