问题描述
只有fat32可以识别,其它格式无法正常挂载。
处理过程
ext4处理
# create /dev/sda create /dev/sda1 [ 340.311161] EXT4-fs (sda1): Unrecognized mount option "utf8=1" or missing value [ 340.323172]
> EXT4-fs (sda1): Unrecognized mount option "utf8=1" or missing value [
> 340.341263] F2FS-fs (sda1): Can't find valid F2FS filesystem in 1th superblock [ 340.352551] F2FS-fs (sda1): Can't find valid F2FS
> filesystem in 2th superblock
查看挂载脚本:
# cat etc/mdev.conf
sd[a-z]([0-9])? 0:0 666 * if [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; /etc/mdev/udisk_insert;else echo remove /dev/$MDEV > /dev/console; /etc/mdev/udisk_remove;fi
mmcblk1(p[0-9])? 0:0 666 * if [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; /etc/mdev/sdcard_insert;else echo remove /dev/$MDEV > /dev/console; /etc/mdev/sdcard_remove;fi
# ls etc/mdev
do_mount sdcard_insert udisk_insert
do_mount_strict sdcard_remove udisk_remove
# cat etc/mdev/udisk_insert
#!/bin/sh
if [ -d /sys/block/*/$MDEV ] || [ -d /sys/block/$MDEV -a ! -d /sys/block/$MDEV/$MDEV* ]
then
mkdir -p /mnt/usb/$MDEV
/etc/mdev/do_mount /dev/$MDEV /mnt/usb/$MDEV -o defaults,noatime,async,utf8=1,errors=continue
fi
# cat etc/mdev/do_mount
#!/bin/sh
mount -t vfat $@
if [ $? -ne 0 ]; then
mount.ntfs-3g $@
if [ $? -ne 0 ]; then
mount.exfat $@
if [ $? -ne 0 ]; then
mount $@
fi
fi
fi
可以看到udisk_insert中有“utf8=1”,应该是在ext4中不被支持。删除该选项,ext4回复正常。
exfat和ntfs处理
exFat
create /dev/sda
create /dev/sda1
[18623.906654] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[18623.914357] F2FS-fs (sda1): Can't find valid F2FS filesystem in 1th superblock
[18623.923430] F2FS-fs (sda1): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[18623.931140] F2FS-fs (sda1): Can't find valid F2FS filesystem in 2th superblock
NTFS报错
create /dev/sdb1
create /dev/sdb
[17643.773526] F2FS-fs (sdb1): Magic Mismatch, valid(0xf2f52010) - read(0xc0856600)
[17643.781892] F2FS-fs (sdb1): Can't find valid F2FS filesystem in 1th superblock
[17643.791243] F2FS-fs (sdb1): Magic Mismatch, valid(0xf2f52010) - read(0x0)
[17643.798948] F2FS-fs (sdb1): Can't find valid F2FS filesystem in 2th superblock
应该是文件系统不支持。
内核打开对应NTFS配置:
CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y
没有看到exFAT配置项,应该是fat里面已经打开。
buildroot下载工具包
etc\mdev\do_mount看到:
#!/bin/sh
mount -t vfat $@
if [ $? -ne 0 ]; then
mount.ntfs-3g $@
if [ $? -ne 0 ]; then
mount.exfat $@
if [ $? -ne 0 ]; then
mount $@
fi
fi
fi
其中mount.exfat和mount.ntfs-3g都没有。所以不能正常挂载。下载工具:
f2fs-tools-v1.11.0.tar.gz
fuse-exfat-1.3.0.tar
fuse-2.9.9.tar
exfat-utils-1.3.0.tar
ntfs-3g_ntfsprogs-2017.3.23
重新编译打包 。
exfat和ntfs挂载读写
/dev/sda1 on /mnt/usb/sda1 type fuseblk (rw,nosuid,nodev,noatime,user_id=0,group_id=0,allow_other,blksize=4096)
/dev/sdb1 on /mnt/usb/sdb1 type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
读写ntfs:
# touch /mnt/usb/sda1/123ntfs/ntfa_write
# ls /mnt/usb/sda1/123ntfs/
ntfa_write
读写exfat:
# touch /mnt/usb/sdb1/exfat.txt
# ls /mnt/usb/sdb1/
exfat.txt test.txt