【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第十四章 Linux 目录结构讲解
iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等
第十四章 Linux 目录结构讲解
本章内容对应视频讲解链接(在线观看):https://www.bilibili.com/video/BV1M7411m7wT?p=16
因为 linux 文件系统对文件的管理主要包括两个方面,第一个方面是文件的本身,第二个就是目录管理。
我们从目录管理入手,会更直观的理解 linux 的目录结构。
14.1 linux目录结构
Linux 整个文件系统是以“ / ”目录开始,根目录是最顶层,前面讲根目录和家目录概念的时候已经提到了。它下边包括众多的目录,这些目录又称为子目录,子目录下边又包含更多的目录,它形成了一个像树一样的结构,大家可以把它想像成一个倒挂的树,就是从树根开始往下,它的枝叶是一支一支的,就好比我们的树根。
Linux 整个文件系统是以“/”目录开始,在 linux 中是没有 C盘 D盘 E盘 这个概念的。我们打开 ubuntu 看下类似于树的形状的一个结构。
我们打开文件管理,从最顶层开始,点击 computer ,这就是我们 ubuntu 的最顶层,左上角有一个 “/” ,“/” 就是根目录,在这个目录下,我们可以进到下边任意一个子目录,比如说作者点击 home 这个文件夹,然后再点击 topeet 这个文件夹,下边有很多的子文件夹,这些子文件夹就好比大树的枝干,一层一层的往下延伸。
这个结构是虚拟出来的,没有任何的限制,他只是一个虚拟的概念。所以说从理论上来讲,linux目录结构可以是随意安排的,就是说我想往哪延伸就往哪延伸,没有任何的限制,但是如果我们所有的人都这样做,不同的人想法不同,那么我们很容易就出现混乱了。
14.2 linux文件层次标准
为了解决不同的开发人员之间不统一的问题,研究出层次标准,也就是文件层次标准,简称 FHS ,全称 filesystem hierarch standard
FHS 定义了两层规范:第一层是 / 目录下面文件夹要存放什么文件,比如说 /etc 下面就应该放配置文件, bin 或sbin 下边就应该放可执行文件。第二层规范是针对 linux 下 /usr 和 /var 这两个目录的子目录来定义的。比如 /usr/share 下面就应该放共享数据文件,
FHS 仅仅给出了最上层顶目录以及子层 /usr 和 share 要存放的数据,我们在其他的子目录层,我们就可以随意的来配置了,
14.3 linux 根目录下
FHS对linux根文件系统的基本目录都做了一些比较详细的规定,比如说哪些文件夹要放置哪些文件。
作者现在进到了ubuntu的根目录下,各个文件的规定如下:
bin: 系统启动时需要的可执行命令,大部分普通用户只有可执行权限没有读写权限,只有root用户有读写权限,
boot: 用来存放BootLoader相关文件,千万不要乱动,否则无法进入系统。
cdrom: 光盘目录
dev : 设备驱动文件夹
etc : 系统配置文件夹,这个文件夹的权限很高,只有root用户才可以修改这个文件夹
home: 家目录,普通用户都有一个以自己名字命名的文件夹存放在这个目录里面,
lib: 各种程序所需要的库文件和系统可以正常运行的支持文件都存放在这个文件夹里面
lib64: 64位支持库
media: 用来存放媒体信息的文件
mnt: 可以把设备挂载在这个文件夹下,比如U盘,
opt: 可以用来存放第三方文件
proc: 用来存放系统信息和进程信息
root: root 用户的家目录
run: 保存了系统从最开始到现在的系统信息
sbin: 存放系统管理员的可执行命令,里面也是二进制文件
snap: snap 应用程序框架的程序文件
srv: 用来存放系统存储服务相关数据
sys: 系统的设备和文件层次信息
temp: 存放临时文件
usr: 存放和用户有关的文件
var: 存放一直在变化的文件
这个就是在 FHS 规范的建议下, linux 根目录下各个文件的规定。尽管 FHS 这个不是强制的标准,但是作为一个开发人员,我们还是要遵守这个标准的,比如说后面我自己定义了一个命令,就要把这个命令放到 bin 文件下,不然别人接手你的项目就容易出现混乱。