linux启动过程

为了找工作我也是拼了,只会linux常用操作怎么行,好想看看内核源码,还是先搞清楚linux是怎么工作的吧

看了鸟哥的私房菜,做了些笔记:

系统启动的过程:

  1. 加载bios的硬件信息与自我测试,依据设置取得第一个可启动设备
  2. 读取并执行第一个启动设备内的MBRboot loadergrub)
  3. 依据boot loader的设置加载kernelkernel会开始检测硬件与加载驱动程序
    1. 从加载内核开始:

      linux将内核解压缩到内存中,利用内核的功能,开始检测硬件,此时,内核开始接管bios工作

      内核文件为/boot/vmlinuz

  4. 在硬件驱动成功后,kernel会主动调用init进程,而init会驱动run-level信息
    1. 内核加载完成后,开始执行第一个linux程序,/sbin/init,所以这个进程的pid 1

      /sbin/init的任务是准备软件的执行环境,包括主机名、网络设置等。ubuntu里,这些操作在/etc/rcS.d中

  5. 准备软件执行的操作环境,/etc/init/rc-sysinit.conf指定了default level,我这里是2,所以下面启动的是/etc/rc2.d中的script
  6. init执行run-level的各个服务的启动(script的方式)在/etc/rcX.d中的文件
  7. Init 执行/etc/rc.d/rc.local文件,这里是你想要执行的启动时系统命令
  1. init执行终端机模拟程序mingetty来启动login进程,等待用户登录

不同的level启动时,执行的是不同的/etc/rcX.d里的文件,S开头的代表是启动,K开头的代表是关闭,K,S后面的数字代表的是启动顺序,数字越大的执行的越靠后

在切换不同的run level时,会先比较下两个level的文件夹中S K文件的不同,启动、关闭对应进程。

 

 

 

 

 

posted on 2015-06-27 18:10  zxahu  阅读(132)  评论(0编辑  收藏  举报

导航