Linux内核编程:文件系统

Linux内核的哲学是:一切皆文件。无论是普通的磁盘文件、还是鼠标、键盘、显示器、SD卡,网卡,都可以使用文件模型进行封装,通过标准的系统调用:open、close、read、write来访问。

本期课程录制背景
在嵌入式项目开发中,很多人可以很快解决工程上的问题:通过busybox制作根文件系统、格式化和挂载一个磁盘、设置root/init等启动参数去挂载不同的根文件系统,通过read/write去读写文件,但对于底层文件系统的细节可能就不是很清楚了,比如:

  • busybox到底是个什么东西?
  • 根文件系统和普通文件系统的区别?
  • 为什么需要挂载根文件系统?
  • U盘在使用前为什么要先格式化?
  • 格式化到底做了什么操作?
  • 数据在磁盘上是如何存储的?
  • 文件系统是如何读取数据的?
  • 文件系统的挂载是怎么回事?
  • 设备文件是不是也算文件?
  • ramdisk是什么?initrd呢?
  • 什么是rootfs?initramfs?
  • 根目录:/ 到底是个什么鬼?
  • 根文件系统和根目录之间有什么关系?
  • VFS是什么?有什么作用?
  • Linux内核为什么需要VFS?

文件系统分层太多,代码复杂,一些在项目和工程中留下的细节问题,需要花很多精力去探索,才能柳暗花明,找到想要的答案。为了讲清楚以上这些细节,又不得不花大量的时间,深入内核源码层寻找答案,为了更方便学习,作者特意、画了很多流程图,结合内核源码解读,更加直观,更加方便学员理解和吸收。
1636245032507

课程详细目录

本期课程的详细课程目录:

  • 00 本期课程主要内容
  • 01 什么是文件系统?:设备端
  • 02 磁盘的格式化与挂载
  • 03 什么是文件系统?:主机端
  • 04 文件系统核心数据结构:super_block
  • 05 文件系统核心数据结构:inode
  • 06 文件系统核心数据结构:dentry
  • 07 文件系统核心数据结构:file
  • 08 虚拟文件系统:VFS
  • 09 文件系统的注册过程分析
  • 10 文件系统的挂载(上)
  • 11 文件系统的挂载(下)
  • 12 文件的打开过程分析(上)
  • 13 文件的打开过程分析(下)
  • 14 文件创建过程分析
  • 15 文件读写过程:地址空间与页缓存
  • 16 文件读写过程:read内核流程分析
  • 17 什么是设备文件?
  • 18 设备文件的创建过程分析
  • 19 设备文件打开过程分析
  • 20 设备文件读写过程分析
  • 21 什么是根文件系统?
  • 22 根文件系统挂载(上):rootfs
  • 23 根文件系统挂载(中):root=分析
  • 24 根文件系统挂载(下):根目录切换
  • 25 使用initrd为根文件系统(上)
  • 26 使用initrd为根文件系统(中):CPIO
  • 27 使用initrd为根文件系统(下):ramdisk
  • 28 使用initramfs作为根文件系统
  • 29 initramfs挂载过程分析
  • 30 基于内存的文件系统:tmpfs
  • 31 文件系统的自动挂载
  • 32 文件系统的性能指标

课程总计32课时,4.5GB,1080P超高清录制,高清无码,观看体验更好。

课程特色

全网首家尝试从文件系统的设备端(磁盘)和主机端(文件系统驱动)结合起来讲解,让学员快速树立文件系统的整体框架:文件和目录到底在磁盘上是如何存储的,通过格式化挂载实验、亲手扒数据dump分析,让你一清二楚,一目了然:
1636245008062

主机的VFS和文件系统是如何与磁盘进行交互的,深入内核源码,探寻知识盲点和以前忽略的细节:
1636244980183

学完本期课程的预期收获

学完本期课程,你讲获得以下预期收获:

  • 彻底搞清楚磁盘的格式化、挂载是怎么回事
  • 学会制作嵌入式Linux的根文件系统
  • 学会配置使用ramdisk、initramfs作为根文件系统
  • 通过内核源码细节,真正理解VFS层的作用和意义
  • 熟悉磁盘文件的创建、打开、读写内核流程
  • 熟悉设备文件的创建、打开、读写内核流程
  • 从磁盘到主机,树立完整的文件系统框架

Linux内核编程》已经发布了6期,后面课程会陆续更新:

更加详细的课程介绍和大纲说明,可参考淘宝店:Linux内核编程:嵌入式驱动开发实战

一线原厂驱动开发经验,专门为嵌入式精心打造的嵌入式进阶视频教程,详情请点击:王利涛老师个人店