树莓派Zero W启动报错Kernel panic-not syncing: VFS: unable to mount root fs on unknown- block(179,2)

树莓派Zero W一次不小心触碰松了电源USB口,导致意外断电,重启后无法正常启动。接上屏幕后发现,报错

Kernel panic-not syncing: VFS: unable to mount root fs on unknown- block(179,2)

这个错误信息似曾相识,就是我在第一次上手树莓派时,启动后报的错。后来我是格式化SD卡解决的,具体可以参考这篇文章。但问题是,那是我第一次上手树莓派,里面什么程序都还没安装,格式化也就算了。现在SD卡里已经安装了很多程序,如果让我重新格式化SD卡,我肯定不干。那么有没有其它的解决办法呢?

网上的绝大部分帖子都是针对NOOBS系统,即傻瓜系统来进行展开的,而我当时并没有烧录NOOBS系统,只是纯粹地烧了一个Raspbian Lite。好在让我找到了一篇帖子,描述的情况和我的差不多。他的解决办法分为三步,

  1. 找一台Linux系统的电脑,将SD卡插进读卡器,插到Linux的主机上
  2. 查看自己SD卡的装载目录
  3. 执行fsck命令来进行磁盘修复

因为我的主机是Mac系统,不兼容EXT3、EXT4格式的盘符,我又不想安装一个Linux虚拟机。好在我之前还有一台安装了OpenSUSE的笔记本电脑,在家吃灰了很久,可以拿来一用。

打开电脑,进入Linux系统,在终端中输入命令

1
fdisk -l

查看SD卡的分区。一般情况下,引导盘都是位于/dev/sdb1,而树莓派系统位于/dev/sdb2,这是我个人的情况,不代表所有。执行命令

1
df -hT

看看系统是否自动装载了/dev/sdb2,如果装载了把它卸载了,卸载命令

1
umount /dev/sdb2

接下来就是修复磁盘了,上面的df -hT命令可以查看磁盘格式,我的树莓派磁盘/dev/sdb2格式是EXT4,执行fsck.ext4命令修复

1
2
3
4
fsck.ext4 -y /dev/sdb2 	//修复ext4格式的磁盘
fsck -y /dev/sdb2 //修复ext格式的磁盘
fsck.ext2 -y /dev/sdb2 //修复ext2格式的磁盘
fsck.ext3 -y /dev/sdb2 //修复ext3格式的磁盘

将修复好的SD卡重新插上树莓派,连上电源,接上显示器发现系统虽然启动了,但是很多之前引起启动错误的inode都被删除了,最后进入系统后,pi用户的目录/home/pi被删除了,也就是我之前存放了很多个脚本都没了。

虽然解决了报错问题,不至于完全格式化SD卡,但是就启动后的结果而言,我感觉和格式化也没差了,我写了好多个脚本都没了。看样子以后要经常备份重要的脚本,以防那天树莓派再次断电,又复现这个问题。

avatar

chilihotpot

You Are The JavaScript In My HTML