现像:
mount -t ext4 /dev/mmcblk0p17 /var/backups
执行时报错EXT4-fs (mmcblk0p17): Couldn't mount because of unsupported optional features (2000);
要如何解决?
首先明确一个问题,文件系统特性仅与软件有关,与是否更换硬件芯片无法!!!!
mke2fs:制作文件系统的工作
dumpe2fs:打印文件系统的工具
tune2fs: 增加或删除文件系统特性(Filesystem Feature)
以上工具均来源于e2fsprog
如下图所示,可以看到,新的图片中在Filesystem Feature一栏增加了metadata_csum_seed,64bit,metadata_csum,large_file。
metadata_csum_seed: 提供对文件系统元数据的校验和保护,增强数据完整性。
64bit: 支持超过 16TB 的文件系统和文件大小,允许文件系统在 64 位寻址空间中使用。
metadata_csum: 对文件系统元数据启用校验和,以检测和防止损坏。
large_file: 支持创建大于 2GB 的文件。
dumpe2fs -h /dev/mmcblk0p17
旧:
新:
首先拿到一个EMMC磁盘,首先是对磁盘进行分区;其次对分区进行格式化并制作文件系统格式,最后将这个分区挂载到linux某个路径下就能访问磁盘空间了。
因此关于文件系统不一样时,仅可能和制作文件系统有关,即mke2fs。
因为通过正常版本与异常版本之间的md5sum可以确定旧图的系统来源于旧的mke2fs。因此只要降级或者清除文件系统不必要的特性或者异常特性即可
解决方案1:
删除metadata_csum_seed特性:tune2fs -O ^feature_name /dev/mmcblk0p17;将feature_name修改为metadata_csum_seed即可。^表示删除,不带这个符号即是增加,如下所示
删除完之后,再mount就会成功
解决方案2:
降级e2fsprog,将e2fsprog降级到之前版本
最后推荐一个命令strings xxx可以打印出改程序所有log语句
/usr/sbin # strings mke2fs | grep features
base_features
default_features
Filesystem features not supported with revision 0 filesystems
Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.
/sys/fs/ext4/features/lazy_itable_init
The resize_inode and meta_bg features are not compatible.
base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr
features = has_journal
features = has_journal,extent,huge_file,flex_bg,metadata_csum,metadata_csum_seed,64bit,dir_nlink,extra_isize,orphan_file