Linux 内核移植exfat驱动

简介:

        Linux系统默认可以自动识别到fat32格式的盘,但fat32支持的文件不能大于4G,所以只能将移动硬盘和U盘格式化为NTFSexFAT这两种格式的,对于U盘最好格式化为exFAT

        Linux5.4以上的内核原生支持exfat格式,不需要你单独安装就可以挂载exfat格式U盘。低版本的内核需要手动安装exfat

exfat驱动源码有几种:

  • exfat-fuse(用户态)

        exfat-fuse是基于fuse的exfat,用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。

源码下载地址:https://github.com/relan/exfat

  • exfat-nofuse(内核驱动层) 

        exfat-nofuse是从Android的Linux kernel3.0中移植而来,Android的Linux kernel 3.0上的exFAT驱动是第一个Linux“non-FUSE”kerneldriver,支持对exFAT文件系统进行正常在读取和写入操作,并且是由东家微软开发。exfat-nofuse在Linuxkernel3.8和3.9中通过测试。

源码下载地址:https://github.com/dorimanx/exfat-nofuse

  • exfat-linux(内核驱动层)

        exfat-linux基于三星公司开源的sdFAT驱动,其性能比exfat-nofuse高一点点,exfat-linux支持基本上所有主线内核,从3.4到4.19,以及ubuntu上使用的各种内核版本(3.4, 3.10, 3.18, 4.1, 4.4, 4.9, 4.14, 4.19 and 4.15, 5.0, 5.2, and 5.3-rc),在(x86(i386), x86_64(amd64), arm32(AArch32) and arm64(AArch64))都已经测试过。

源码下载地址:https://github.com/arter97/exfat-linux

本文讲解怎么在 Linux 内核添加exfat-linux驱动。

一、移植 exfat-linux

1、下载驱动源码

得到如下文件:

2、移植驱动

基于Linux内核4.14.180版本实现

2.1 将exfat驱动解压到内核fs/目录下

$ unzip exfat-linux-master.zip -d exfat-linux

$ mv exfat-linux linux/fs/exfat

2.2 将exfat驱动添加到linux

先看一下exfat/Kconfig

1)将exfat驱动添加进 linux/fs/Makefile

$ vi linux/fs/Makefile

添加 "obj-$(CONFIG_EXFAT_FS)      += exfat/"

配置成"obj-$(CONFIG_EXFAT_FS)"还需将exfat添加到linux配置菜单。也可以直接"obj-y"配置进内核,那么可跳过步骤2)、3)。

2)将exfat添加到linux配置菜单

$ vi linux/fs/Kconfig

添加 "source "fs/exfat/Kconfig""

3)Linux内核配置exfat

$ make menuconfig

多了 File systems ---> [M]exFat filesystem support 选项,配置成M编译成模块,保存即可。

此时,exfat驱动已经配置OK,编译Linux内核。

2.3 编译结果

配置成M内核打印如下:

二、测试结果

1、加载驱动

$ insmod exfat.ko

2、查看系统支持的文件系统 

$ cat /proc/filesystems

查看系统支持的文件系统,有exfat说明移植成功

$ cat /proc/filesystems

nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   tmpfs
nodev   devtmpfs
nodev   configfs
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   pipefs
nodev   rpc_pipefs
nodev   devpts
        ext3
        ext2
        ext4
        vfat
        msdos
        exfat                   #添加成功
nodev   nfs
nodev   nfs4
        ntfs
nodev   jffs2
nodev   autofs
        fuseblk
nodev   fuse
nodev   fusectl
nodev   ubifs

内核打印也可以看到exFAT版本号

  • 31
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值