除了FHS所定义的目录之外,每一家Linux厂商都有额外自行建立的目录,供自行开发的应用程序使用,所以真正的目录结构还是要以用户实际使用的Linux版本为依据,只是大部分目录不会脱离FHS所定义的标准。本书大多以Fedora 7为例,这并不代表任何特殊含义,只是希望通过一个操作系统的版本(因为笔者比较常使用的操作系统是Fedora7)去阐述每一个目录的意义与所要提供的功能,毕竟各Linux版本的目录是大同小异的。
当然,笔者也并非万能,只能尽其所能地让读者对每一个目录有所了解,至于每一个目录涉及的深度,有可能会因为每一个目录的功能多少、文件数目、对系统的意义大小或笔者本身能力而有所差异。1.2根目录的建立 大家一般都会知道根目录的产生方式,就是系统使用mount指令,将系统所在的分区挂载,到目录中,这样便完成了所谓的根目录。但你是否想过,虽然看起来合理却有点诡异,因为根目录既然是Linux的“根”,那没有根,哪来的mount指令?系统怎么可以使用呢?这正是要在这一节解释的部分。
讲到如何产生根目录,必须先知道根目录产生之前的一些基本系统运行动作(如图1.3所示),在开机管理程序启动操作系统,在加载kernel之后(也就是当用户在开机画面选择某系统选项按【Enter】后),kernel会自行在内存中建立一块叫做rootfs的区域供本身使用,而里面的功能都是kernel本身所提供的,这也就是编译kernel时所赋予的能力,不过大部分kernel的能力都是在安装完操作系统后就已经定义好了的,除非是自行重新将kernel编译过。
而这一段kernel执行的过程,并不是产生根目录的阶段。也就是说,在kernel启动阶段,并没有使用到根目录,而根目录产生出来的时间点,是在kernel加载完成后,下一个initrd(Initial ramdisk)加载模块期间。
这其实是因为在尚未加载initrd之前,如果操作系统是在网络或SCSI接口上,必须要等到相关模块加载后才可以使用(除非是手动将该模块嵌入到kernel中),在这种情况下,如果kernel不支持该存储设备或功能(像SAN),如何能辨认及使用正确的根目录?所以。必须等到initrd加载正确的模块,并且正确地辨认出存储设备的硬件之后,才能将系统分割区准确地挂载到根目录上,产生出一般使用的根目录。
从这一段启动的信息(如图1-4所示)可看出。基本上经历了以下3个步骤,根目录被产生出来,不过不同厂商所推出的Linux,有可能会有不一样的动作,但概念是差不多的,图1-4所圈选的部分,是用户可以通过启动信息所看到的建立基本目录的三大步骤。
展开