fat文件系统简介

简介: fat文件系统

Fat文件系统是sd卡常用的一种文件系统类型,在电脑上,我们可以把sd卡格式化成exfat类型或者ntfs类型。在linux系统里,我们可以用mkfs.vfat /dev/mmcblk0把sd卡格式化成fat文件系统类型,容量大于512M的默认会格式化成fat32,就是32位,除了fat32,还有fat12,fat16。 Fat文件系统是以簇为基本单元管理的,什么是簇? 簇其实就是一连串的扇区,我们知道sd卡在格式化完后,通常一个sector为512字节,所以我们以常见情况假设一个sector为512字节,用winhex读sd卡的信息,可以看到,格式化完的fat32默认一个簇是8K,一个sector是512字节,也就是一个簇是16个sector,所以簇的本质其实就是一串扇区。Fat文件系统限制了最大簇为32K。

e8f180ec8e1e78baf7729e714439f9c.png

7e5ecf4baa5dd5e1bcdcef3a907b5f0.png

Fat(file allocation table)

Fat文件系统有2个隐藏文件,就是fat1和fat2,这两个文件内容是一样的,fat2是fat1的备份。 如何阅读fat表? Fat表里4个字节为一个fat项,fat项的内容为下一个簇的簇号,所以fat表其实就是一个簇链。其中,fat表的第0项和第1项是固定值,根目录为第2项。关于fat表的值的含义:

2ce55680664211af2270735a588a1a0.png

528829c700f8e0f8c798cb4e0fd8601.png

Fdt

理解fdt对我们来说十分重要。从下面表格可以看到fdt表的内容,一个fat占32字节,其中包括簇号和文件名。在代码里对应的结构体是msdos_dir_entry

struct msdos_dir_entry {
 __u8 name[MSDOS_NAME];/* name and extension */
 __u8 attr;  /* attribute bits */
 __u8    lcase;  /* Case for base and extension */
 __u8 ctime_cs; /* Creation time, centiseconds (0-199) */
 __le16 ctime;  /* Creation time */
 __le16 cdate;  /* Creation date */
 __le16 adate;  /* Last access date */
 __le16 starthi; /* High 16 bits of cluster in FAT32 */
 __le16 time,date,start;/* time, date and first cluster */
 __le32 size;  /* file size (in bytes) */
};

簇号十分重要,我们需要通过簇号找到对应的扇区。除此之外,fdt还跟inode,dentry这些信息要关联起来。 介绍完fat文件系统两大基石:fat和fdt,下篇介绍fat文件系统查找,删除文件。

号主:一枚机械专业本科生,经历了转行,从外包逆袭到芯片原厂的Linux驱动开发工程师,深入操作系统的世界,贯彻终身学习、终身成长的理念。平时喜欢折腾,寒冬之下,抱团取暖,期待你来一起探讨技术、搞自媒体副业,程序员接单和投资理财。【对了,不定期送闲置开发板、书籍、键盘等等】。

如果你想了解我的转行经验,欢迎找我交流~gongzhong号【哆哆jarvis】

一起不断探索自我、走出迷茫、找到热爱,希望和你成为朋友,一起成长~

相关文章
|
3月前
|
机器学习/深度学习 安全 数据安全/隐私保护
# Pyc怎么转Py?PyLingual 部署教程
PyLingual是一款基于深度学习的Python字节码(.pyc)反编译工具,专攻损坏、加密或混淆的现代pyc文件(支持3.6–3.13),弥补uncompyle6对新版本支持不足的短板。部署需Python 3.12+、Poetry及pyenv多版本环境,适合开发者救代码、安全人员分析恶意样本。(239字)
680 2
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
524 0
|
3月前
|
JSON 安全 API
咸鱼平台商品详情API接口技术详解
咸鱼(Xianyu)是阿里巴巴旗下二手交易平台,提供商品详情API,支持通过商品ID获取标题、价格、描述、图片等信息。本文详解RESTful调用方法、参数说明、JSON响应格式、Python代码示例及错误处理与安全规范,助力开发者高效集成。(239字)
|
物联网 数据格式 异构计算
3种大模型微调技术对比:全参、LoRA、RAG,你的项目该怎么选?
本文深入浅出地解析了大语言模型适应专业场景的三种核心技术:**全参数微调 (Full Fine-Tuning)**、**LoRA微调 (Low-Rank Adaptation)** 和 **检索增强生成 (RAG)**。 文章通过生动的比喻,将通用大模型比作“通才毕业生”,而三种技术则是为其“开小灶”的不同路径: - **全参数微调**:成本高昂的“回炉重造”,效果深入但资源消耗巨大。 - **LoRA微调**:高性价比的“技能插件”,以极低成本实现专业能力定制。 - **RAG**:即插即用的“外挂知识库”,无需训练模型,通过检索外部知识实时生成答案。
|
5月前
|
数据采集 存储 监控
显存不够?16G显卡驾驭13B模型的计算与优化全指南
显存不够也能玩转大模型!本文详解如何用16G显卡成功微调13B参数模型,从显存精准计算、INT8量化、LoRA低秩适配到激活检查点优化,手把手教你规避OOM风险。结合实战代码与监控技巧,显存占用压至14.5GB内,效果显著优于7B模型。低成本实现高效大模型微调,个人开发者和小团队必备指南!
|
存储 数据处理
GDPR
【10月更文挑战第7天】GDPR
941 7
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
643 3
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
783 6
|
安全 Java Linux
(七)Java网络编程-IO模型篇之从BIO、NIO、AIO到内核select、epoll剖析!
IO(Input/Output)方面的基本知识,相信大家都不陌生,毕竟这也是在学习编程基础时就已经接触过的内容,但最初的IO教学大多数是停留在最基本的BIO,而并未对于NIO、AIO、多路复用等的高级内容进行详细讲述,但这些却是大部分高性能技术的底层核心,因此本文则准备围绕着IO知识进行展开。
782 1
|
JavaScript 前端开发 PHP
推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎。(排名不分先后顺序) 1. Mustache 基于javascript 实现的模板引擎,类似于 Microsoft’s jQuery template plugin,但更简单易用! 2.
3408 0