1.什么是根文件系统
linux内核挂载的第一个文件系统,该根文件系统是挂载到根目录下的文件系统。rootfs,它是一个容器,也称之为一个“包”,里面包含:
[root@GEC6818 /]#ls
IOT etc lost+found pxy sys
bin home mnt root tmp
dev lib nfs run usr
driver linuxrc proc sbin var
-
- linux的shell命令
/bin,一般的shell命令
/sbin,超级管理员就是root用户才能够使用的命令,这些命令很多时候跟硬件相关
/usr/bin,应用程序与工具
/usr/sbin,shell命令或工具
- linux的shell命令
-
- /dev
该目录包含应用程序访问硬件的接口,只有字符设备和块设备有设备文件,网络设备是没有设备文件。
lcd设备,/dev/fb0
触摸屏设备,/dev/input/event0
在做驱动编程,该目录是我们的重点。
- /dev
-
3)/etc
包含系统的配置文件:用户名、密码、主机名、网络配置、系统 -
4)/proc
该目录虚拟文件系统目录,是系统内存的映射,实时反映linux系统的工作状态,可直接访问这个目录来获取系统信息。
数字,PID进程编号与状态信息
version,linux系统的版本
[root@GEC6818 /proc]#uname -r
3.4.39-gec
[root@GEC6818 /proc]#uname -a
Linux GEC6818 3.4.39-gec #9 SMP PREEMPT Sun Nov 19 10:01:10 CST 2017 armv7l GNU/Linux
[root@GEC6818 /proc]#cat version
Linux version 3.4.39-gec (zr@boLe) (gcc version 4.8 (GCC) ) #9 SMP PREEMPT Sun Nov 19 10:01:10 CST 2017
cpuinfo,了解CPU的信息
[root@GEC6818 /proc]#cat cpuinfo
Processor : ARMv7 Processor rev 3 (v7l) //当前CPU是ARMv7架构
processor : 0 //CPU 0
BogoMIPS : 1581.05 //每秒能够执行1581.04百万条指令
......
meminfo,这里描述linux内核所有内存状态信息
[root@GEC6818 /proc]#cat meminfo
-
5)库的路径
/lib
/usr/lib
/usr/local/lib -
6)/mnt
系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。 -
8)/sys
sysfs是一种基于ram文件系统(ramdisk 文件系统基于磁盘模拟技术,实际文件系统是ex2 ex3等)和proc一样。sysfs文件系统是一个类似于proc文件系统的特殊文件系统,
用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其实,就是在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等,例如以下触摸屏设备驱动详细信息。
[root@GEC6818 /sys/devices/virtual/rc/rc0/input1/event0]#cat uevent
MAJOR=13
MINOR=64
DEVNAME=input/event0
拓展:
/sys/devices
该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。一般来说,所有的物理设备都按其在总线上的拓扑结构来显示,但有两个例外即platform devices和system devices。
platform devices一般是挂在芯片内部的高速或者低速总线上的各种控制器和外设,它们能被CPU直接寻址;
system devices不是外设,而是芯片内部的核心结构,比如CPU,timer等,它们一般没有相关的驱动,但是会有一些体系结构相关的代码来配置它们。
/sys/devices是内核对系统中所有设备的分层次表达模型,也是/sys文件系统管理设备的最重要的目录结构。
/sys/dev
该目录下存放主次设备号文件,其中分成字符设备、块设备的主次设备号码(major:minor)组成的文件名,该文件是链接文件并且链接到其真实的设备(/sys/devices)。
/sys/class
该目录下包含所有注册在kernel里面的设备类型,这是按照设备功能分类的设备模型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下都是这种设备类型的各种具体设备的符号链接,这些链接指向/sys/devices/下的具体设备。 设备类型和设备并没有一一对应的关系,一个物理设备可能具备多种设备类型(如何触摸屏包含了输入子系统设备模型、i2c设备模型、platform模型等);一个设备类型只表达具有一种功能的设备,比如:系统所有输入设备都会出现在/sys/class/input之下,而不论它们是以何种总线连接到系统的。
/sys/block
该目录下的所有子目录代表着系统中当前被发现的所有块设备。
/sys/bus
该目录下的每个子目录都是kernel支持并且已经注册了的总线类型。
/sys/fs
按照设计,该目录使用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。
/sys/kernel
这个目录下存放的是内核中所有可调整的参数。
/sys/module
该目录下有系统中所有的模块信息,不论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件),都可能出现在/sys/module中。
-
7)/var
系统的工作日志或运行时需要改变数据文件的存放目录。 -
8)/usr
系统资源目录,Unix System Resource,即Unix系统资源的缩写。该目录是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库 -
9)/lost+found
这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下*.chk)就在这里
补充:开发自启动执行应用程序
linux内核启动完之后,会自动执行以下两个脚本文件:
/etc/init.d/rcS
/etc/profile