嵌入式开发中格式化usb设备为ext3/4文件格式及文件系统掉电修复

来源:互联网 发布:ubuntu 14.04 32位iso 编辑:程序博客网 时间:2024/06/07 17:50

问题一:开发板中格式化文件系统为ext3/4

1. 首先移植e2fsprogs1.41.4源码,new一个文件夹build或者release,在该目录下进行交叉编译。

2.在misc目录下会生成可执行文件blkid, fsck, mke2fs,tune2fs等,编译image时将需要用到的可执行文件cp到开发板根文件系统的/sbin或者usr/sbin等目录下。

完成上面两步之后,启动板子,在shell控制台输入mke2fs会有使用说明,

mke2fs  /dev/sda1 会将usb设备格式化为ext2文件系统格式;

mke2fs -j /dev/sda1 会将usb设备格式化为ext3文件系统格式,或者mke2fs -T ext4 -j /dev/sda1 格式化为ext4文件系统,带日志功能,但是会出现以下失败打印信息:


ext2fs_check_if_mount: No such file or directory while determining whether /dev/ide/host0/bus0/target0/lun0/part1 is mounted.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4889248 inodes, 9767512 blocks
488375 blocks (5.00%) reserved for the super user
First data block=0
299 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624
Writing inode tables: done
Creating journal (32768 blocks): mkfs.ext3: No such file or directory
        while trying to create journal

3.上述格式化为ext3失败的解决方法:

一般是在根文件系统/etc目录下加入空文件mtab和mke2fs.conf(该文件内容可直接拷贝fedora系统)就可以解决上述问题。


附:在e2fsprogs中只能看到mke2fs命令,而通常在fedora或ubuntu中看到的是mkfs.ext3, mkfs.ext4, mkfs.vfat之类的命令,其实很多是通过ln命令做了一个对mke2fs或其他工具的链接。


问题二:linux下文件系统掉电损坏修复

1.linux开发板中对文件系统(fat格式)进行写入操作时,开发板突然掉电导致文件系统损坏,且自动变为read-only,网上有很多的针对各类文件系统的修复工具,拿到windows上进行修复比较容易,但是如果只能在linux系统上进行修复,在fedora上试过很常见的两种工具,dosfsck(dosfstools)和testdisk,效果都不理想,大批损坏的文件依然存在,无法访问,也不能删除。

2.将文件系统格式化为ntfs,在linux下也不能修复,大批损坏文件访问时都会出现乱码。

3.将文件系统格式化为ext3/4格式,不需要手动修复,重新mount时就会根据日志功能自动修复,而且效果比较好,基本所有的文件都能正常访问或删除,个别文件无法访问(可能该文件确实无法修复)。

4.通过命令mount -t ext3 -o data=journal /dev/sda1 /mnt/media/sda1/来实现第3步,必须加上 -o data=journal 设置日志模式为提供完整数据和元数据日志记录方式。



原创粉丝点击