一、Linux文件系统

Linux以树状结构管理所有目录、文件,其他分区挂接在某个目录上,这个目录被称为挂接点或安装点,然后就可以通过这个目录来访问这个分区上的文件了。比如根文件系统被挂接在根目录“/”上后,在根目录下就有根文件系统的各个目录、文件:/bin、 /sbin 、 /mnt等;再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区的各个目录、文件。

在一个分区上存储文件时,需要遵循一定的格式,这种格式称为文件系统类型,比如fat16、fat32、ntfs、ext2、ext3、jffs2、yaffs等。除了这些拥有实实在在的存储分区的文件系统类型外,Linux还有几种虚拟的文件系统类型,比如proc、sysfs等,它们的文件并不存储在事件的设备上,而是在访问它们时由内核临时生成。

二、Linux根文件系统目录结构

Linux文件系统_根文件系统

三、etc目录下的文件

Linux文件系统_文件系统_02

四、init进程

inti进程是由内核启动的第一个(也是唯一的一个)用户进程,它根据配置文件决定启动哪些程序,比如执行某些脚本、启动shell、运行用户指定的程序等。init进程是后续所有进程的发起者,比如init进程启动/bin/sh程序后,才能够在控制台上输入各种命令。

如果存在/etc/inittab文件,init程序会解析它,然后按照它的指示创建各种子进程;否则使用默认的配置创建子进程

1、/etc/inittab文件中每个条目用来定义一个子进程,并确定它的启动方法,格式如下:

<id>:<runlevels>:<action>:<process>

<id>: 表示这个子进程要使用的控制台,如果省略,则使用与init进程一样的控制台。
<runlevels>: 对于Busybox init程序,这个字段没有意义,可以省略。
<action>:表示init进程如何控制这个子进程。
<process>:要执行的程序,它可以是可执行程序,也可以是脚本。如果<process>字段前有
“-”字符,这个程序被称为“交互的”。

Linux文件系统_子进程_03

2、在/etc/inittab文件的控制下,init进程的行为总结如下:


  1. 在系统启动前期,init进程首先启动为sysinit、wait、once的3类子进程。
  2. 在系统正常运行期间,init进程首先启动为respawn、askfirst的两类子进程,并监视它们,发现某个子进程退出时重新启动它。
  3. 在系统退出时,执行为shutdown、restart、ctrlaltdel的3类子进程(之一或全部)。

3、如果根文件系统中没有/etc/inittab文件,Busybox init程序将使用如下默认的inittab条目:

::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init

4、/etc/inittab实例:

# /etc/inittab
#这是init进程启动的第一个子进程,它是一个脚本,可以在里面指定用户想执行的操作
#比如挂接其他文件系统、配置网络等
::sysinit:/etc/init.d/rcS

#启动shell,以/dev/ttySAC0作为控制台
ttySAC0::askfirst:-/bin/sh

#按下Ctrl+Alt+Del之后执行的程序,不过在串口控制台中无法输入Ctrl+Alt+Del组合键
::ctrlaltdel:/sbin/reboot

#重启、关机前执行的程序
::shutdown:/bin/umount -a -r