在我们初学嵌入式Linux时,首先学习的就是Linux的最小根文件系统;下面我将为初学者们详细的阐述一下Linux的最小根文件系统。
根目录在Linux中即为“/”,要进入根目录,命令“cd /”即可进入根目录,并利用“ls -l”查看当前目录的详细信息,如下图所示是我当前使用的Ubuntu16.04的根目录一级列表(在此请各位忽略不重要的一些文件和目录,在之后再深入学习)
将最小根文件系统整理之后的目录结构如下图所示。
Linux文件系统所起的名字也很有意思,一目了然就知道该目录的作用(以下的目录英文全称是本人理解,并非官方信息)。
1. /bin
包含基本命令,如ls、cp、mkdir、cat等,这个目录中的文件都是可执行的。——binary
2. /sbin
包含系统命令,如modprobe、hwclock、ifconfig等,大多是涉及系统管理的命令,这个目录中的文件都是可执行的。——system binary
3. /dev
设备文件存储目录,应用程序通过对这些文件的读、写或是控制即可以对实际的设备进行访问或控制其动作。——devices
4. /etc
系统配置文件目录,一些服务器的配置文件也在这里。如用户的账号和密码、系统环境变量等,busybox的启动脚本也存放在这里。——etcetera
5. /lib
系统库文件目录,如我使用的EXYNOS4412烧写的文件系统中lib包含了librt-2.11.so、libgcc_s.so、libpthread-2.11.so等。——library
6. /mnt
该目录一般是用于存放挂载存储设备的挂载目录,如有chrom等目录,可参考/etc/fstab的定义。有需要时,也可以让系统启动时自动挂载文件系统的挂载点放在该目录的操作都是允许的。——mount
7. /opt
opt是“可选”的意思,有些软件包会被安装在这里,例如我所移植的嵌入式Qt就存放在该目录。——option
8. /proc
操作系统运行时,进程及内核信息(如CPU、硬盘分区、内存信息等)存放在这里。/proc目录为伪文件系统proc的挂载目录,proc并不是真正的文件系统,它存在于内存中。——process
9. /tmp
在用户运行程序时,可能会产生临时文件,/tmp就用来存放这些临时文件。——temporary
10. /usr
该目录是系统用于存放程序的目录,例如用户命令、用户库文件等。如我使用的riscv架构上的Linux文件系统中usr包含了bin、lib、sbin、share四个子目录。其中/usr/bin目录下包含了ipcs、env等命令,/usr/lib目录下包含了libncurses.so.5.9、libpci.so.3.5.1等,/usr/sbin目录下包含了dropbear、flashcp、i2cdetect等,/usr/share包含了一些其它文件。——user
11. /var
var表示的是变化的意思,该目录中的内容经常会变动,如/var/log下存放是的系统日志。——variety
12. /sys
Linux2.6内核所支持的sysfs文件系统被映射在此目录。sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理linux设备提供一种统一模型的接口。Linux设备驱动模型中的总线、驱动和设备都可以在sysfs文件系统中找到对应的节点。当内核检测到在系统中出现了新设备后,内核会在sysfs文件系统中为该新设备生成一项新的记录。