背景:

由于exfat是常用的文件系统格式,而Linux由于版权的问题,没有在官方中添加有关的驱动。

但是 微软也同意开源了,所以比较新的 Linux 会支持这一块。

为了支持exfat的驱动,我们需要手动添加第三方的驱动支持。

这里演示2种添加exfat格式的驱动,而不将驱动编译进内核。

准备:

下载exfat驱动:

git clone https://github.com/arter97/exfat-linux.git

略:准备Linux内核源码,配置内核编译用的gcc

注:由于实际编译的时候,提示了函数重定义这个错误。所以需要注释掉冲突的代码

备份:为了方便演示,复制两份linux内核源码。

linux3.18_module_in : 驱动放进内核源码中进行编译

linux3.18_module_out : 驱动作为独立编译的组件。

放入linux内核源码中编译:

实际上,这一步只要在最后将驱动配置成 y 就可以编译到内核中。

根据:README.md中 “Merging the drivers to existing Linux kernel source” 这一章的内容

1)拷贝驱动源码到内核对应的位置中

cp exfat-linux ~/linux3.18_module_in/fs/exfat

2)修改exfat同级目录中的Kconfig,与Makefile

Kconfig:在 "source/fs/fat/Kconfig"之后添加此行

source "fs/exfat/Kconfig"

Makefile:在 "obj-$(CONFIG_FAT_FS) += fat/"之后添加此行

obj-$(CONFIG_EXFAT_FS) += exfat/

3)配置并编译内核

配置:

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- menuconfig

根据实际情况,按Y(配置进内核)或者M(配置成模块),笔者这里编译成模块

编译:(根据内核配置的选项)

make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- modules

#make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- uImage 编译内核

略:拷贝驱动到开发板中

4)加载烧录,测试。

一切正常。

独立编译:

根据《Linux 内核 编译模块》中参考的Makefile,参考驱动源码中的Makefile做修改

由于exfat驱动的编译不单单是一个文件,所以需要添加依赖关系。

obj-m += exfat.o

# exfat makefile 中原有的依赖关系

exfat-objs := super.o core.o core_exfat.o blkdev.o fatent.o cache.o \

nls.o misc.o extent.o xattr.o

KERNELDIR:=/home/schips/linux3.18_module_out

CROSS_COMPILE:=/opt/hisi-linux/x86-arm/arm-hisiv500-linux/bin/arm-hisiv500-linux-uclibcgnueabi-

PWD:=$(shell pwd)

default:

$(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules

clean:

rm -rf *.o *.order .*.cmd *.ko *.mod.c *.symvers *.tmp_versions

编译:make

同样地,生成了一份exfat.ko,正常使用即可。

注:笔者发现根据不同方式生成的ko文件大小和内容上都有小的差异。

diff exfat.ko*

Binary file exfat.ko_in and file exfat.ko_out differ

ls -al exfat.ko*

114K Dec 24 11:41 exfat.ko_in

115K Dec 24 11:41 exfat.ko_out

全文完。

exfat linux 驱动_(实例)Linux 内核添加exfat驱动相关推荐

  1. 没有ch341驱动_NVIDIA Jetson TX2内核添加串口驱动

    NVIDIA Jetson TX2内核添加串口驱动 2018年02月04日 17:26:39 BumBleBee009 阅读数:2419 转载博客:http://blog.csdn.net/gzj20 ...

  2. ac3165 linux驱动_为什么Linux系统没有类似Windows上的还原精灵和影子系统?

    很多从Windows转Linux的用户,面临的最大一个问题,就是Linux上没有还原精灵这种软件.众所周知,作为一个操作系统要想普及,绝不可能只针对懂IT的少部分年轻人,而是需要让不同年龄段,不同职业 ...

  3. 外网访问arm嵌入式linux系统_嵌入式Linux系统移植的四大步骤

    最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命 ...

  4. linux培训_达内linux培训:7招教运维释放Linux操作系统的空间

    达内linux培训介绍一些简单的方法和技巧来帮助大家清理开源GNU/Linux操作系统 Ubuntu 和Linux Mint 系统并获得更多可用空间. 随着使用时间的推移,随着各种应用程序被添加和删除 ...

  5. linux内存寻址实例,Linux内存寻址

    我会尽力以最简洁清晰的思路来写这篇文章. 所谓内存寻址也就是从写在指令里的地址,转化为实际物理地址的过程.因为操作系统要兼顾许多东西,所以也就变得复杂. 逻辑地址 → 线性地址 → 物理地址 逻辑地址 ...

  6. python可以在linux运行_在linux运行python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! linux下编译安装python3与python2共存linux下默认系统自带p ...

  7. linux 软链接_面试 | Linux 下软链接和硬链接的区别

    在 Linux 系统中,一切都是文件,然而为了区分不同类型的事物,我们有了: 普通文件 目录文件 链接文件 设备文件 在之前的文章<阿里面试题 | Nginx 所使用的 epoll 模型是什么? ...

  8. linux多线程_免费Linux下载工具,你还不知道?

    今天小编要跟大家分享的文章是关于Linux运维人员应该知道的免费Linux下载工具.Windows用户在想要使用下载管理器时可以享受很多选择.如Download Accelerator Plus和Re ...

  9. steam linux游戏_在Linux上使用Steam改善游戏性能的6条提示

    steam linux游戏 Steam for Linux is finally out. Whether you're an old Linux user who's never cared muc ...

最新文章

  1. Arcgis10.3在添加XY数据时出现问题
  2. ThreadLocal不仅要应付面试,更要真的理解,真的会用
  3. mtk android 设置默认铃声,[转载]MTK修改铃声资源
  4. NHibernate初学者指南(15):使用LINQ to NHibernate提供程序查询数据
  5. c#解决TCP“粘包”问题
  6. 论文A Tutorial on Graph-Based SLAM 学习笔记
  7. Java web技术及应用答案_超星《Java Web应用开发技术》答案
  8. neovim安装dein.vim
  9. Apache自带的ab压力测试工具
  10. matlab常用滤波处理(图片)小波、高斯、均值、中值
  11. Latex学习之插入编号-实心圆点列表,横杆,数字
  12. 手机网络邻居访问电脑_手机怎么访问局域网电脑共享文件
  13. c/c++ string转int int转string string拼接
  14. 2019测试工程师面试题
  15. EC20使用之 quectel-CM的启动
  16. Hibernate Criteria对象详解(条件查询)
  17. 手把手教你用delphi 10.2.3 在windows上编译Centos 7下的命令行程序,适合中小学生
  18. 论文解读:STANet | A Spatial-Temporal Attention-Based Method and a New Dataset for Remote Sensing Image
  19. 【转】使用Eclipse和BlackBerry JDE开发黑莓应用程序
  20. Spring Cloud中Hystrix实现断路器原理

热门文章

  1. C语言简单题-找最大的字符串
  2. java Date days_Java中的LocalDate plusDays()方法
  3. Java黑皮书课后题第1章:1.1(显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun
  4. C语言学习之编程输入x,输出对应的y.
  5. PythonWeb开发教程(一),开发之前需要准备什么
  6. USACO shuttle
  7. iscroll5 上拉,下拉 加载数据
  8. 【mysql的编程专题⑥】视图
  9. 《计算机组成与体系结构:性能设计》读后小记 4、cache存储器
  10. Tomcat连接池配置