博文参考:
http://www.178linux.com/44483 http://os.51cto.com/art/201407/446819.htm http://ch666.blog.51cto.com/10870222/1757134 http://www.mamicode.com/info-detail-1165638.html
系统启动流程
综述:POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> rootfs–> switchroot–> /sbin/init–>(/etc/inittab,/etc/init/*.conf) –> 设定默认运行级别–> 系统初始化脚本rc.sysinit–> 关闭或启动对应级别的服务–> 启动终端
加电自检POST
Blos启动引导阶段
自检通过;按照次序查找引导设备Blos,按F2或Del键进入Blos,可以调整硬盘的启动顺序。Blos在找到硬盘上的MBR,读取其中的Bootloader
GRUB引导阶段
stage1:即写入mbr中存储的bootloader程序。它的任务就是将stage1_5(此时并不能算是磁盘分区/boot/grub/下的stage1_5,因为stage1无法识别文件系统)载入内存执行。
stage1_5:位于mbr之后的扇区,通过提供基本文件系统驱动让stage1中的bootloader程序能识别磁盘分区/boot/grub/上的stage2文件并载入内存执行。
配置 /boot分区
stage2:这个程序主要给用户提供一个比较友好的启动菜单,而后去加载位于同一个磁盘分区/boot/的内核文件( vmlinuz-2.6.32-573.el6.x86_64)
2 grub的编辑命令 b:boot,启动 e:edit,编辑选中的项 o:在选中行的下一行新加一行 O:在选中行的上一行添加一行 d:删除选中行 ESC:可以退出编辑界面进入主界面
加载内核阶段
启动进程/sbin/init
详解脚本 /etc/rc.d/rc.sysinit
sysinit脚本执行完成,系统还需要启动各种服务,这样主机才可以提供相关的网络和主机功能,因此要根据相应的运行级别,运行相应的系统服务。
系统服务
详解目录/etc/rc.d/rc3.d
执行/etc/rc.d/rc脚本。该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rcN.d下的文件。 以rc3.d为例: /etc/rc.d/rc3.d目录,该目录下的内容全部都是以 S 或 K 开头的链接文件,都链接到"/etc/rc.d/init.d"目录下的各种shell脚本。S表示的是启动时需要start的服务内容,K表示关机时需要关闭的服务内容,后面的数字代表优先次序。
等待用户登录
完成了系统服务的启动后,linux会启动终端或X-Window来等待用户登录,会执行"/sbin/mingetty",而且执行了6个,所以linux会有6个纯文本终端(tty1,tty2…),mingetty就是启动终端的命令。至此,系统就启动完毕了!
系统服务管理
根据上面说明,我们可以知道,系统在启动后会根据想要的运行级别,运行相应的服务脚本,而这些系统服务的管理,可以用chkconfig来进行管理使用,这些服务脚本放置于/etc/rc.d/init.d中
chkconfig:跟新和确认系统服务信息 语法:chkconfig [–list] [–type type][name]:查看所有的服务列表详细信息 chkconfig –add name :添加服务到系统服务 chkconfig –del name:删除系统服务 chkconfig –override name chkconfig [–level levels] [–type type] name <on|off|reset|resetpriorities> chkconfig [–level levels] [–type type] name
手动配置系统启动服务
1、系统服务脚本特点:基本都可以提供start|stop|restart|status这几个状态值的接收
2、服务脚本存放位置
由上面的介绍可知,所有的系统服务脚本都放在/etc/rc.d/init.d文件夹中
3、服务脚本的编写格式
其中,有三行格式是必须要写上的#!/bin/bash,#/chkconfig,#description
chkconfig: runlevels SS KK【SS:表示开始运行的次序,KK:表示关闭程序的次序,-表示都不启动】
因此可以手动编写系统服务:
(1)把服务脚本放置/etc/init.d目录下 (2)使用chkconfig –add 添加到系统服务 (3)重启系统让服务生效
系统服务的运行
service httpd start 启动服务
service httpd status 服务运行状态
service httpd stop 停止服务
service httpd restart 重启服务