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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/295322.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM FVP平台的terminal窗口大小如何设置

当启动ARM FVP平台时,terminal窗口太小怎么办?看起来非常累眼睛,本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求: 通过上图可知,UART默认使用的是xterm。因此,我们需要修改xterm的默认字体设…

dm8 开启归档模式

dm8 开启归档模式 1 命令行 [dmdbatest1 dm8]$ disql sysdba/Dameng123localhost:5237服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 3.198(ms) disql V8 SQL> select name,status$,arch_mode from v$database;行号 NAME STATUS$ ARCH_MODE ----------…

flink on yarn

前言 Apache Flink,作为大数据处理领域的璀璨明星,以其独特的流处理和批处理一体化模型,成为众多企业和开发者的首选。它不仅能够在处理无界数据流时展现出卓越的实时性能,还能在有界数据批处理上达到高效稳定的效果。本文将简要…

磁盘如何分配数据数据

📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 磁盘如何分配数据 数据切割: 按照固定长度进行切割---》编码翻译(常用) 计算机要求按照8bit(字节)进…

MATLAB近红外光谱分析技术应用

郁磊副教授,主要从事MATLAB编程、机器学习与数据挖掘、数据可视化和软件开发、生理系统建模与仿真、生物医学信号处理,具有丰富的实战应用经验,主编《MATLAB智能算法30个案例分析》、《MATLAB神经网络43个案例分析》相关著作。已发表多篇高水…

36.基于SpringBoot + Vue实现的前后端分离-高校汉服租赁网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的高校汉服租赁网站系统设计与实现管理…

mysql语句学习

SQL Select语句完整的执行顺序: 1、from子句组装来自不同数据源的数据; (先join在on) 2、where子句基于指定的条件对记录行进行筛选; 3、group by子句将数据划分为多个分组; 4、使用聚集函数进行计算&a…

开源AGV调度系统OpenTCS中的任务分派器(dispatcher)详解

OpenTCS中的任务分派器dispatcher详解 1. 引言2. 任务分派器(dispatcher)2.1 默认的停车位置选择2.2 可选停车位置属性2.3 默认的充电位置选择2.4 即时运输订单分配 3. 默认任务分派器的配置项4. 参考资料与源码 1. 引言 openTCS是一项著名的开源运输控制系统,我在…

第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…

SpringBoot+ECharts+Html 字符云/词云案例详解

1. 技术点 SpringBoot、MyBatis、thymeleaf、MySQL、ECharts 等 2. 准备条件 在mysql中创建数据库echartsdb,数据库中创建表t_comment表,表中设置两个字段word与count,添加表中的数据。如:附件中的 echartsdb.sql 3. SpringBoot…

el-table实现表格内部横向拖拽效果

2024.4.2今天我学习了如何对el-table表格组件实现内部横向拖拽的效果,效果: 代码如下: 一、创建utils/底下文件 const crosswise_drag_table function (Vue){// 全局添加table左右拖动效果的指令Vue.directive(tableMove, {bind: function…

智慧开发平台免!费!申请试用

原创 F学社 F学社 2024-04-01 17:13 江苏 扫描二维码即可申请试用 01 智慧开发平台简介 F1 WIFI智慧教育平台是可支持线上线下联动的基于FPGA的口袋式数字系统学习平台。其采用了AMD、Altera、安路、高云等国外国内主流公司的FPGA进行数字系统方向的教学实验设计&#xff0c…

Pyecharts绘制条形图

前言 条形图是一种把连续数据画成数据条的表现形式,通过比较不同组的条形长度,从而对比不同组的数据量大小。描绘条形图的要素有3个:组数、组宽度、祖限。绘制条形图时,不同组之间是由空隙的。条形用来比较两个或两个以上的价值&a…

Golang并发模型-Pipeline模型、Fan-in Fan-out模型

这段时间由于项目的需要,本人正在研究关于如何优雅的进行go的并发,以下是结合资料和视频的结果,文末会给出参考资料 Go语言的并发模型主要通过goroutine和channel实现,通过这个我们可以更有效地使用IO和CPU 这里我们围绕生成一个…

增强Java技能:使用OkHttp下载www.dianping.com信息

在这篇技术文章中,我们将探讨如何使用Java和OkHttp库来下载并解析www.dianping.com上的商家信息。我们的目标是获取商家名称、价格、评分和评论,并将这些数据存储到CSV文件中。此外,我们将使用爬虫代理来绕过任何潜在的IP限制,并实…

Set a Light 3D Studio:探索光影艺术的全新维度mac/win中文版

Set a Light 3D Studio 是一款领先的三维建模和渲染软件,它将设计师、艺术家和摄影师的创意想法转化为生动逼真的三维场景。这款软件以其强大的功能和直观的界面,成为行业内众多专业人士的首 选工具。 set.a.light 3D STUDIO中文版软件获取 在Set a Lig…

备战蓝桥杯---贪心刷题1

话不多说&#xff0c;直接看题&#xff1a; 本质是一个数学题&#xff1a; 我们令xi<0表示反方向传递&#xff0c;易得我们就是求每一个xi的绝对值之和min,我们令平均值为a爸。 易得约束条件&#xff1a; x1-x2a1-a,x2-x3a2-a..... 解得x1x1-0,x2x1-((n-1)*a-a2-...an)。…

火鸟门户系统—旅游度假模块

旅游度假 简介 旅游度假功能为用户提供一站式旅游度假服务&#xff0c;车站、酒店民宿、门票、跟团游、货运、签证等多个方面&#xff0c;满足用户多样化的旅游需求。 功能 订单&#xff1a;提供订单预订服务&#xff0c;用户可以根据自身需求选择合适的旅行产品。酒店民宿…

人工智能+的广泛应用,已渗透到生活的方方面面

引言 随着科技的不断进步和人工智能技术的快速发展&#xff0c;我们正处于一个人工智能时代。人工智能不仅仅是一种技术&#xff0c;更是一种革命性的变革力量&#xff0c;它正在以前所未有的方式改变着我们的生活和工作方式。 人工智能&#xff08;AI&#xff09;指的是人工…

C++算法补充---STL

这里写目录标题 CSTL容器字符串函数(string容器函数)字符串转字符 算法交换函数拿到容器或者数组的第一个最大&#xff08;小&#xff09;值元素的下标或者值排序函数求字符数组的有效长度atoi函数&#xff08;将字符串类型的数字转为真正的int型数字&#xff09;string转字符 …