五、启动 init 进程

init 进程是系统启动的第一个进程。其他进程都是有此进程控制fork出来的,也就是说,init是其他进程的“祖先”,PID=1。当然,PID=0进程我们称为空闲进程是属于内核的。

init启动后所做的事情:

1、读取/etc/inittab来读取默认级别 假设:读取到的默认级别是 3

/etc/init/*.conf

  1. # 启动级别:runlevel)  
  2. # 0:关机  
  3. # 1:单用户模式  
  4. # 2:多用户模式,不支持 NFS 功能  
  5. # 3:完全多用户模式,支持文本接口  
  6. # 4:预留模式  
  7. # 5:完全多用户模式,支持图形模式  
  8. # 6:关机  
  9. # /etc/inittab文件格式如下,这是遵循了CentOS5的风格。  
  10. id:3:initdefault: 

2、执行初始化系统脚本 /etc/rc.d/rc.sysinit 来初始化脚本

这个大家有机会可以读读,脚本主要的作用如下:

  1. # 获取网络环境与主机类型。首先会读取网络环境设置文件"/etc/sysconfig/network",获取主机名称与默认网关等网络环境。  
  2. # 答应文本欢迎信息。  
  3. # 挂载/etc/fstab文件中定义的其它文件系统。  
  4. # 激活swap  
  5. # 检测根文件系统,并以读写方式重新挂载  
  6. # 决定是否启动SELinux和udev。  
  7. # 接口设备的检测与即插即用pnp)参数的测试。  
  8. # 用户自定义模块的加载。用户可以再"/etc/sysconfig/modules/*.modules"加入自定义的模块,此时会加载到系统中。  
  9. # 加载核心的相关设置。按"/etc/sysctl.conf"这个文件的设置值配置功能。  
  10. # 设置系统时间clock)。  
  11. # 设置终端的控制台的字形。  
  12. # 设置raid及LVM等硬盘功能。  
  13. # 以方式查看检验磁盘文件系统。  
  14. # 进行磁盘配额quota的转换。  
  15. # 重新以读取模式载入系统磁盘。  
  16. # 启动quota功能。  
  17. # 启动系统随机数设备产生随机数功能)。  
  18. # 清楚启动过程中的临时文件。  
  19. # 将启动信息加载到"/var/log/dmesg"文件中。 

3、然后执行 /etc/rc.d/rc 脚本

此脚本运行的时候此脚本的时候,会读取/etc/rc.d/rc3.d/下的所有脚本,来控制系统启动的时候启动或者关闭那些服务

wKiom1PSA-mDbCDSAAZ9kiqbBP4645.jpg

  1. # 这里面的脚本大致分为 2 类,以 S 开头的和以 K 开头的脚本。  
  2. # S 代表开机时启动的,K 表示开机时不启动。  
  3. # 每个文件的命名格式,例如:S01sysstat S 开机启动 01 启动次序 sysstat 启动脚本名  
  4. # 启动的定义是在每个脚本中定义的:例如  
  5. # # chkconfig: - 85 15  
  6. # 默认级别 启动次序 不启动次序 

这些脚本是否开机自启动,可由 chkconfig 命令来管理。

  1. # 常用选项:  
  2. # chkconfig --add SRV_SCRIPT 可以将自己写的一些脚本,让此命令统一管理。例如:chkconfig --add httpd  
  3. # chkconfig --del SRV_SCRIPT 将服务删除,意思就是服务不由chkconfig这种机制来管理  
  4. # chkconfig SRV_SCRIPT {on|off} 设置服务开机是否自启动,默认管理的级别是2345.  
  5. # --level 2345 等,指定默认级别,可以与其他选项一起使用 

4、执行/etc/rc.d/rc.local脚本,此脚本是启动过程中最后启动的一个脚本。

最后会执行 /bin/login 登录用户。至此系统启动过程完成。

博文链接:http://guoting.blog.51cto.com/8886857/1530109


相关内容