Linux ls: xxx .: Input/output error 错误问题 及 fsck源码下载

       在最近项目开发中,由于经常需要访问flash中的某个分区的问题,在长时间的open以及close后,出现了对应操作目录下ls、ll等系统命令不能执行且错误问题,一开始以为是该分区flash硬件损坏了,导致文件节点丢失、文件错误而不能访问。

对于: xxx .: Input/output error 可能是硬件损坏,也可能是文件系统损坏,我们可以通过一下命令进行查看

# dmesg |grep err 

后来在网上问题检索时发现可以通过fsck工具进行分区修复,于是对Input/output error 文件夹分区进行修复,发现arm板上的文件系统没有fsck.ext4工具。

fsck -t ext4 /dev/mmcblk0p18 
fsck (busybox 1.26.2, 2018-03-06 20:26:03 CST)
fsck: fsck.ext4: No such file or directory

在找fsck.ext4工具源码时,费了一段时间,所以想写本blog对此进行记录,方便后来者在遇到Input/output error 问题时能快速的找到该工具并进行修复。下面将给出该工具的源码下载链接以及编译指导说明。

fsck源码github链接:https://github.com/tytso/e2fsprogs

下载源码后按照如下步骤进行:

第一步:创建build目录
# mkdir build
# cd build

第二步:配置编译选项
1、在配置编译选项时,可通过如下命令获取帮助
# ../configure --help
2、如果是需要交叉工具编译则指定交叉工具链 及 安装目录
# ../configure --host=arm cc=arm-linux-gcc --prefix=/usr/local/_install

第三步:编译
# make     /*在build目录下执行make,则生成的中间文件等都会在build目录下*/

第四步:安装
# sudo make install  /*执行该命令后,其会将工具安装在我们指定的/usr/local/_install的目录下*/

其安装后的目录结构如下:

在sbin/目录下有各种工具,包括fsck、fsck.ext3、fsck.ext4等等,将这些工具拷贝到开发板并将其路径export 一下即可使用。

以下是修复一个分区的示例:

第一步:首先需要将所需要修复的分区解挂
# umount /dev/mmcmmcblk0p18

第二步:使用fsck命令对该分区进行修复(-t 为指定需要修复的文件系统类型,fsck会自动调用fsck.ext4对分区进行修复)
# fsck -t ext4 /dev/mmcblk0p18

以上是本次blog想记录的内容,包括问题出现分析以及使用fsck工具尝试对文件系统损坏的分区进行修复记录,但是在问题查找的过程中,有大佬强调对于fsck工具的使用需要慎重,下面是其中的一篇blog,可以查阅了解一下。

关于fsck使用注意事项:http://blog.sina.com.cn/s/blog_406a91a00102xaq8.html

猜你喜欢

转载自blog.csdn.net/Chasing_Chasing/article/details/82215531
今日推荐