HI35xx内核增加exFAT支持


原文链接: HI35xx内核增加exFAT支持

HI35xx内核增加exFAT支持

fat32在linux上已经支持得很好了,此处就不再详述。

exfat的支持可以下载 https://github.com/hechaoyuyu/exfat 里面的源码,这部分源码可以嵌入到内核中,具体参考里面的README。

ntfs在linux内核选项打开后,可以挂载mount -t ntfs /dev/sda1 /mnt/usb,但是是只读的(linux系统认为对ntfs类型系统写入是不安全的)。如果需要支持读写,需要在网上找ntfs-3g相关的开源代码http://www.linuxfromscratch.org/blfs/view/svn/postlfs/ntfs-3g.html,编译出ntfs-3g工具和库文件libntfs.so文件,strip之后的大小在400K左右。

解压缩安装:

tar zxf ntfs-3g_ntfsprogs-2017.3.23.tgz

编译和安装ntfs-3g源代码。

cd ntfs-3g_ntfsprogs-2017.3.23

./configure CC=arm-hisiv100nptl-linux-gcc -host=arm-linux  --prefix=/home/bsjsp/ntfs-3g_ntfsprogs-2017.3.23/usr --exec-prefix=/home/bsjsp/ntfs-3g_ntfsprogs-2017.3.23/usr

make

make install

copy到arm系统上,进行挂载:

mkdir /mnt/ntfs

#./ntfs-3g  /dev/sda1 /mnt/ntfs/
此时挂载上的ntfs就是读写的了

文件系统常用shell命令:

查询当前支持的filesystem:cat /proc/filesystems

查询当前设备是什么类型文件系统:fdisk -l

fdisk -l

————————————————
版权声明:本文为CSDN博主「skyhxl」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/skyhxl/article/details/79002695

大于64GB的TF卡都是使用的exFAT文件格式,但是海思SDK里面提供的内核源码并不支持exFAT格式。因此要想内核识别64GB以上的TF卡,要么将64GB以上的TF卡格式化为FAT32格式,要么移植exFAT到内核中去。

1 源码下载

链接:
https://github.com/dorimanx/exfat-nofuse

2 编译

2.1 复制文件

将下载好的源码复制到内核 fs/exfat目录即可

2.2 修改fs/Kconfig

添加exFAT的Kconfig,如下:

if BLOCK
menu "DOS/FAT/NT Filesystems"

source "fs/fat/Kconfig"
source "fs/exfat/Kconfig"
source "fs/ntfs/Kconfig"

endmenu
endif # BLOCK

2.3 修改fs/Makefile

添加exFat,如下:

obj-$(CONFIG_FAT_FS)		+= fat/
obj-$(CONFIG_EXFAT_FS)      += exfat/
obj-$(CONFIG_BFS_FS)		+= bfs/
obj-$(CONFIG_ISO9660_FS)	+= isofs/

2.4 配置menuconfig

打开menuconfig,然后打开exfat相关配置即可

File systems --->
	DOS/FAT/NT Filesystems --->
		<*>exFAT fs support (NEW)
		[*]   enable discard support (NEW)
		[*]   enable delayed sync (NEW)   
		[ ]   enable kernel debug features via ioctl (NEW)
		 [ ]   print debug messages (NEW) 
		(437)Default codepage for exFAT (NEW) 
		(utf8) Default iocharset for exFAT (NEW)

2.5 编译

编译内核并将内核烧录到设备中

3 验证

开机启动后,插入TF卡,并使用如下命令挂载TF卡:

mount /dev/mmcblk0p1 /mnt              //不指定挂载类型,系统自动识别
或
mount -t exfat /dev/mmcblk0p1 /mnt/sd    //指定挂载类型

其中,/dev/mmcblk0p1为TF在系统中的设备文件

打印信息如下:

[EXFAT] trying to mount...
[EXFAT] mounted successfully
`