CentOS6系统启动流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS6系统启动流程相关的知识,希望对你有一定的参考价值。
CentOS 6 启动流程 | root密码重置 | 添加系统服务
一、CentOS 6 启动流程:
1)POST加电自检
Power-On-Self-Test,主板在接通电源后,系统首先由Bios程序来对对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。
自检中如发现有错误,将按两种情况处理:对于严重故障则停机,对于非严重故障则给出提示或声音报警信号,等待用户处理。
主板上 ROM:保存了BIOS程序 RAM:保存各项参数设定
BIOS按设定次序查找引导设备,第一个有引导程序的设备为本次启动设备
2)读取 MBR
读取第一个启动设备MBR中的bootloader(前446字节),CentOS 6为grub程序,bootloader空间有限仅保存了grub第一阶段stage1。
3)引导加载程序 GRUB
stage1:存在于MBR前446字节中,加载stage1_5,stage2,initramfs*.img
stage1_5:在MBR之后62个扇区中,保存了必要的文件系统驱动程序等,让stage1能识别stage2所在分区上的文件系统;
stage2:提供菜单交互接口,让用户以选项方式加载内核、改变参数、修改选项,获取grub.conf以及menu.lst等文件的内容,可提供认证保护机制。
4)加载内核
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(可能借助于ramdisk加载驱动)
内核无法识别硬盘上各驱动程序所在的设备,借助已识别的boot分区中的initramfs-VERSION-RELEASE.img文件(一个压缩的小型根目录,包含启动阶段必须的驱动模块,可执行文件和启动脚本),
将其挂载为临时根目录,执行启动脚本,加载真实文件系统以挂载真正的根目录并切换根目录。
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init
5)启动 init
内核加载完毕,运行init程序,系统启动的控制权移交给init进程
init进程是所有进程的父进程,它会读取配置文件/etc/inittab,进行以下工作:
1.执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,进行运行级别的确定及相应服务的启动;
2.确定启动后进入的运行级别,共7个,默认3,5;
3.执行/etc/rc.d/rc,定义服务启动的顺序是先K后S,具体的每个运行级别的服务状态是放在/etc/rc.d/rc#.d(#=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。
4.有关key sequence的设置
5.有关UPS的脚本定义
6.启动虚拟终端/sbin/mingetty
7.在运行级别5上运行X
系统初始化:
POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs-->/sbin/init
在rc.loacl中添加自定义开机运行脚本:
正常级别下,最后启动的一个服务S99local没有链接至/etc/init.d下的某脚本,而是链接至了/etc/rc.d/rc.local (/etc/rc.local)脚本;因此,不便或不需写为服务脚本的程序期望能开机自动运行时,可直接放置于此脚本文件中。
二、root密码重置
1.进入单用户模式
开机时键入 e ,进入grub菜单页面,键入 a,在kernel行尾添加1,s,S,sigle任意一个,即单用户模式,回车启动系统
2.直接用passwd更改密码
进入命令行后直接键入passwd即可更改密码
三、添加系统服务
CentOS 6中系统服务脚本都放在/etc/init.d目录下,当用户使用service命令对某个服务进行操作时,实际上是调用了该目录下的脚本,所以我们也可以添加自己的服务脚本。
1.编写服务脚本
前三行基本格式:vi testsrv
#!bin/bash
#chkconfig: 35 91 09
#description:testsrv..
脚本第一行为shellbang
第二行chkconfig后跟3个数,第1个数为需启动的级别,35表运行级别为3或5时启动;第2个数为启动优先级,数字越大优先级越低,越在后面启动;第3个数为关闭优先级,数字越小优先级越高,越先关闭;
一般后两个数之和为100,被依赖性不高的服务可以后启动,后启动的先关闭;后两位若为一位数(0-9),应写成08格式
第三行为描述信息,可根据需要修改。
服务脚本应能识别基本的参数 [ start|stop|restart|status ]
将写好的脚本放在/etc/init.d目录下
2.添加为系统服务
chkconfig --add /etc/init.d/testsrv
该命令将脚本添加为系统服务,让chkconfig可以管理它,并在每个运行等级启动服务(/etc/rc.d/rc#.d)目录下创建对应符号链接K/S入口,K开头表关闭,S开头表启动
3.服务操作
chkconfig --level 35 testsrv on 修改服务的默认启动等级
service testsrv restart 重启服务
本文出自 “平平无奇” 博客,请务必保留此出处http://zzjasper.blog.51cto.com/9781564/1850571
以上是关于CentOS6系统启动流程的主要内容,如果未能解决你的问题,请参考以下文章