文件系统

一、Linux 文件系统视角

应用层   open / read / write / close / lseek / stat ...
       ↓ VFS (Virtual File System)
       ↓
具体文件系统:ext4 / vfat / proc / sysfs / tmpfs / nfs ...
       ↓
通用块设备层 / 网络层
       ↓
驱动 + 硬件

二、关键概念

1. 一切皆文件

2. 文件描述符(fd)

3. Inode

4. 链接

三、重要目录

/             根
/bin          基础命令
/sbin         系统管理命令
/etc          配置
/home         用户家目录
/root         root 家目录
/lib, /lib64  库
/usr          用户程序
/usr/local    本地安装
/opt          可选应用
/var          变化的数据(日志、缓存)
/tmp          临时
/dev          设备
/proc         进程 / 内核信息
/sys          内核对象(设备树运行时)
/mnt, /media  挂载点
/boot         启动文件

四、挂载

mount /dev/mmcblk0p1 /mnt
mount -t vfat /dev/sda1 /mnt/usb
mount -t nfs 192.168.1.10:/share /mnt/nfs
mount -t tmpfs tmpfs /tmp -o size=64M
mount -o remount,ro /            # 重新挂载为只读
umount /mnt

查看:cat /proc/mountsmountfindmnt

五、嵌入式常用文件系统

FS 特点 场景
ext4 Linux 主力 通用
vfat FAT32,Windows 兼容 U盘、SD卡
tmpfs 内存 /tmp, /run
procfs 进程信息 /proc
sysfs 内核对象 /sys
devtmpfs 设备节点 /dev
squashfs 压缩只读 rootfs
jffs2 / ubifs 闪存专用 NAND
nfs 网络 开发调试
cramfs 压缩只读(旧)
overlayfs 联合挂载 Docker / OTA

六、文件权限

-rwxr-xr--  1 user group 4096 Jul 20 12:00 file
↑ │ │ │ │   │           │
│ │ │ │ │   │           └─ 大小
│ │ │ │ │   └─ 所有者
│ └─┴─┴─┴─ 所有者/组/其他 rwx
└─ 类型(- 普通,d 目录,l 链接,c/b 设备,p 管道,s socket)

特殊位:
- setuid (4):执行时继承文件所有者权限
- setgid (2):同上,组
- sticky (1):目录中只能删自己的文件(如 /tmp)

七、procfs 与 sysfs

1. /proc 重点

/proc/cpuinfo          CPU 信息
/proc/meminfo          内存
/proc/loadavg          负载
/proc/uptime           运行时间
/proc/<pid>/           进程信息
  cmdline              命令行
  status               进程状态
  fd/                  打开的文件描述符
  maps                 内存映射
  stat                 调度信息
  io                   IO 统计
/proc/interrupts       中断统计
/proc/devices          已注册字符/块设备
/proc/filesystems      支持的文件系统
/proc/partitions       磁盘分区
/proc/version          内核版本

2. /sys 重点

/sys/class/net/        网络接口
/sys/class/gpio/       GPIO(已废弃,新 API 在 /dev/gpiochipX)
/sys/block/            块设备
/sys/bus/              总线
/sys/devices/          设备
/sys/kernel/           内核参数