Linux Init

1.读取MBR,启动Boot Manager

  • Windows使用NTLDR
  • Linux使用GRUB

2.加载系统内核,启动init进程

  • init进程是Linux的根进程,所有的系统进程都是它的子进程
  • init进程读取/etc/inittab,进入运行级别,执行脚本
  • 先执行/etc/rcS.d/下脚本
  • 若运行级别为3,再执行/etc/rc3.d/

3.启动Xwindow服务器xorg

4.启动登录管理器,等待登录

  • Ubuntu默认用GDM

5.运行级别

  • 0 关机
  • 1 单用户维护模式
  • 2~5 多用户模式
  • 6 重启

6.更改运行级别

  • 默认在/etc/inittab文件中
  • 但Ubuntu中并没有这个文件,它默认就是从级别2启动,位于/etc/init/rc-sysinit.comf
  • 在Ubuntu我们可以手动创建/etc/inittab来控制

7.更改启动服务

  • /etc有rc0.d~rc6.d文件夹针对不同运行级别
  • 打开有许多S**和K**的启动脚本链接
  • 如:S20kerneloops、S70dns-clean
  • 以S开头的将被init启动
  • S后数字越小,越早执行
  • 在新版的Ubuntu,init进程首先执行/etc/init/目录下的rc-sysinit.conf,这个文件指明了本次启动的默认运行级别
  • 接下来目录/etc/init下的其他脚本的执行都会根据不同的运行级别做出不同的动作