Linux arm开发板 Input/output error 错误问题

使用微嵌屏幕开发板中,由于长时间的open和write等操作对flash的分区造成的一些问题,出现对应分区目录下ls,rm等系统命令不能执行且有错误问题。可能是硬件损坏,或者是文件系统损坏。通过下面命令进行查看(dmesg | grep err)

[root@WQ4418 ~]#dmesg | grep err
[    0.064000] persistent_ram: uncorrectable error in header
[  285.992000] hrtimer: interrupt took 610200 ns
[ 1922.194000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 1922.609000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 1922.979000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 1923.387000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 1945.052000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 1945.553000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 1946.002000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 1946.467000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 2184.102000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2184.111000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2184.119000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2184.128000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2184.136000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 2184.145000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 2184.153000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 2184.162000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 2185.969000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2185.978000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2185.986000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2185.995000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2186.003000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 2186.012000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 2186.020000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 2186.029000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 2189.643000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2189.651000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2189.660000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2189.668000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2194.030000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2194.039000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 2849.861000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 2849.870000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3349.019000] EXT3-fs (mmcblk0p3): error: couldn't mount because of unsupported optional features (40)
[ 3349.033000] EXT2-fs (mmcblk0p3): error: couldn't mount because of unsupported optional features (40)
[ 3435.915000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 23
[ 3435.923000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 23
[ 3435.932000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 27
[ 3435.940000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 27
[ 3435.949000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3435.957000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3435.966000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3435.975000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3435.983000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 3435.992000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 3436.001000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 3436.009000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 3437.088000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 23
[ 3437.096000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 23
[ 3437.105000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 27
[ 3437.113000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 27
[ 3437.122000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3437.130000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3437.139000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3437.147000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3437.156000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 3437.164000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 3437.173000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 3437.181000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 3439.094000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3439.103000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3439.111000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3439.120000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3446.244000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 23
[ 3446.253000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 27
[ 3446.262000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3446.270000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3446.279000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35
[ 3446.287000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 55
[ 3522.121000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 23
[ 3522.130000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 27
[ 3522.139000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 31
[ 3522.148000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 34
[ 3522.157000] EXT2-fs (mmcblk0p7): error: ext2_lookup: deleted inode referenced: 35

需要用fsck工具来修复,arm板的文件系统中自带的fsck工具不能修复,需要重新编译这个工具来使用在Linux下执行下面命令

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

#mkdir /opt/e2fsprogs
#git clone https://github.com/tytso/e2fsprogs.git
#cd e2fsprogs
#./configure --host=arm-cortexa9-linux-gnueabihf --prefix=/opt/e2fsprogs
#make
#make install

下载源码之后需要配置编译安装,微嵌用的编译工具链是arm-cortexa9-linux-gnueabihf-gcc,将工具安装在/opt/e2fsprogs下。

在/opt/e2fsprogs/sbin中生成fsck、fsck.ext2、fsck.ext3、fsck.ext4等工具,将这几个工具拷贝到开发板的sbin目录下,执行下面fsck命令时,并全程按‘y’即可

#umount /dev/mmcblk0p7
#fsck -t ext4 /dev/mmcblk0p7
#mount /dev/mmcblk0p7 /mnt/userdata2

完成上面操作之后,分区可正常操作。亲测可用

附文:

输出包含两种类型: 一种是程序的运行结果(标准输出), 一种是状态和错误信息(标准错误).
标准输出(standard output)和 标准错误(standard error), 默认是连接至屏幕;
标准输入(standard input) 默认是连接至键盘;
可以使用IO重定向(redirection), 改变输入, 输出的发送位置;

1. 标准输出
标准输出重定向, 使用重定向操作符(">"), 把程序输出至文件, 默认是从文件头部重写写入;
可以使用"> test.txt",清空文本信息;
使用">>", 将文件添加至文本尾部;

2. 标准错误
标准错误重定向, 使用"2>", 进行输出, 由于文件流包含三种, 即"输入, 输出, 错误", 对应"0, 1, 2";
即">", 即等于"1>", 标准输出;
处理不想要的错误输出, 使用"2> /dev/null", 隐藏一个命令的错误信息.

同时显示输出和错误, 标准错误是后于标准输出产生, 即要先使用">", 再使用"2>&1", 命令:"xxxx > xxxx 2>&1";
也可以使用"&>", 直接输出标准输出和错误, 命令:"xxxx &> xxxx", 较新版bash提供.

3. 标准输入:
cat命令(ConcATenate), 本意是链接文件, cat xxxx[1] xxxx ... > xxxx[end];
1. 如果只使用第一个参数, 即把信息输出至屏幕, 可以输出短的文件, 不会换行;
2. 如果只使用cat, 则从键盘获取信息, 输出至屏幕;
3. 如果只使用最后一个参数, 即cat > xxxx, 即从键盘输入, 存储入文件;
4. 如果都使用, 则是连接文件, 把文件顺次连接, 并存入结尾文件;
5. 可以使用"<", 即"cat < xxxx", 则是重定向, 把输入的源, 变为文件, 和直接输入文件意义相同.
 

你可能感兴趣的:(Linux)