linux系统简介

目前市场占有率最高的商业版Linux:RedHat
被普遍使用的Liunx发行版本:Centos | Ubuntu| Debian |Fedora |Gento

Linux的目录结构

Linux系统中只有一个树状结构,根目录“/”位于所有目录和文件的顶端,是唯一的根结点。

  • /:根目录,只包含目录,不包含具体文件;
  • /etc:主要包含系统管理文件和配置文件;
  • /bin:存放可执行的文件,如常用命令ls、mkdir、rm等的二进制文件都存放在该目录中;
  • /home:普通用户的工作目录,每个用户都有一个/home目录;
  • /usr:包含所有的用户程序(/usr/bin)、库文件(/usr/lib)、文档(/usr/share/doc)等,是占用空间最大的目录。
  • /dev:存放设备文件,包括块设备文件(如磁盘对应文件)、字符设备文件(如键盘对应文件)等;
  • /root:超级用户,即管理员的工作目录;
  • /lib:主要存放动态链接共享库文件,类似于Windows中的.dll文件,该目录中的文件一般以.a、.dll、.so结尾(后缀不代表文件类型),也会存放与内核模块相关的文件;
  • /boot:存放操作系统启动时需要用到的文件,如内核文件、引导程序文件等;
  • /mnt:存储挂载存储设备的挂载目录;
  • /proc:存放系统内存的映射,可直接通过访问该目录来获取系统信息;
  • /opt:存放附加的应用程序软件包;
  • /tmp:存放临时文件,重启系统后该目录的文件不会被保存。每个用户都能创建该目录,但不能删除其它用户的/tmp目录;
  • /swap:存放虚拟内存交换时所用文件。

Linux系统的启动流程

从计算机的角度分析,接通电源后,需经过如下步骤,操作系统才会启动:

  1. BIOS加电自检;
  2. MBR系统引导;
  3. 加载内核。

BIOS加电自检

BIOS与加电自检存在包含关系:BIOS全称Basic Input/Output System,即基本输入输出系统,是一个永久刻录在ROM中的软件;加电自检原意为Power On Self Test(POST),是BIOS的一个主要部分。
计算机在接通电源后BIOS通过POST来加载硬件信息,进行内存、CPU、主板等的检测,若硬件设备正常运作,BIOS会寻找硬盘第一个扇区中存储的数据,使用MBR中的数据激活引导加载程序。

MBR系统引导

MBR全称Master Boot Recode,是一种磁盘分区格式,也是以此种格式的磁盘中0盘片0扇区中存储的一段记录——主引导记录。磁盘中扇区的大小为512字节,主引导记录MBR占据第一个扇区的前446字节,剩余的空间依次存储一个64字节的磁盘分区表,和一个用于标识MBR是否有效的2字节的魔数。
主引导记录MBR中包含一个实现引导加载功能的程序——Boot Loader。由于BIOS只能访问很少量的数据,所以MBR中的引导加载程序其实只是一段初始程序的加载程序(Initial Program Loader,简称IPL),这段程序唯一的功能就是定位并加载Boot Loader的主体程序。
因为以上原因,引导加载分为两个阶段:
第一阶段,BIOS引导IPL(此时系统启动的控制权由BIOS转移到MBR),获取Boot Loader主体程序在磁盘中的位置;
第二阶段,Boot Loader主体程序与操作系统对应的内核,定位到内核文件所在位置,并将其加载到计算机内存中(此时系统启动的控制权由MBR转到到内核)。

加载内核

内核是操作系统的核心,Linux操作系统的内核即Linux。
内核以一种自解压的压缩格式存储,它与一个初始化的内存映像和存储设备映像表一起存储在/boot目录中。
在选定的内核被加载到内存中并开始执行之前需先从压缩格式中解压,一旦内核自解压完成,systemd进程(早期版本中为init进程)便被启动。
systemd进程的启动标识着引导过程的结束,也标识启动过程的开始。在系统启动之初,由于系统中没有除systemd之外的程序执行,系统初始化工作尚未完成,因此计算机不能执行任何和用户相关的功能性工作。
系统初始化需要做的事情非常多,如挂载文件系统、启动后台服务等等,这些初始化工作都由systemd进程完成。对用户而言,系统初始化完成后,系统才算正式启动。