您的位置:首页 > 运维架构 > Linux

CentOS系统启动流程

2016-03-29 14:17 671 查看
一、CentOS系统启动流程图解(本文主要以CentOS 6.7和7.1为例讲解)POST-->BootSequence(BIOS)-->Bootloader(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init()说明:上图是Linux系统启动时的详细流程,其中黑色部分为主流程分支,蓝色部分为详细流程分支,绿色部分是注释部分 二、启动详解1、POST:加电自检POST(PowerOnSelfTest)首先对每一个设备进行检查。完成后会寻找存有引导记录的设备,找到后读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺利启动。BOOT Sequence: 按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用的设备,一般电脑是按"F2"或"Del"键等等进入BIOS,在里面我们可以调整硬盘的启动顺序。2、MBR引导MBR(Master Boot Record) MBR记录一般是在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoder,后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。 3.GRUP引导阶段这时候就可以看到我们的Centos系统了,但是一般都不需要操作,会自动启动系统。其实我们也可以自己手动启动系统的 3.1 手动在grub命令行接口启动系统:grub> root (hd#,#) grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE grub> initrd /initramfs-VERSION-RELEASE.imggrub> boot3.2 grub的命令行接口:e: 编辑模式,用于编辑菜单; c: 命令模式,交互式接口; help: 获取帮助列表 help KEYWORD: 详细帮助信息 find (hd#,#)/PATH/TO/SOMEFILE: root (hd#,#) 设定grup的根设备 kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数; 例如:init=/path/to/init, selinux=0initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件ramdisk; boot: 引导启动选定的内核;3.3 配置文件:/boot/grub/grub.conf 配置项: default=#: 设定默认启动的菜单项;落单项(title)编号从0开始; timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径; hiddenmenu:隐藏菜单; password [--md5] STRING: 菜单编辑认证; title TITLE:定义菜单项“标题”, 可出现多次;用来引导多个内核或者操作系统 root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”; kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核 initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件; password [--md5] STRING: 启动选定的内核或操作系统时进行认证 4、kernel阶段自身初始化 :探测可识别到得所有硬件设备;加载硬件驱动程序;(有可能会借助于randisk加载驱动)以只读方式挂载根文件系统;运行用户空间的第一个应用程序:/sbin/init5、[b]启动 init 进程[/b]init程序的类型: CentOS 5:SysV init 配置文件:/etc/inittabCentOS 6:Upstart 配置文件:/etc/inittab /etc/init/*.confCentOS 7:Systemd 配置文件:/usr/lib/systemd/system/,/etc/systemd/systeminit 进程是系统启动的第一个进程。其他进程都是有此进程控制fork出来的,也就是说,init是其他进程的“祖先”,PID=1。当然,PID=0进程我们称为空闲进程是属于内核的。init启动后所做的事情:1、读取/etc/inittab来读取默认级别 假设:读取到的默认级别是 3 2、执行初始化系统脚本 /etc/rc.d/rc.sysinit 来初始化脚本这个大家有机会可以读读,脚本主要的作用如下:
3、然后执行 /etc/rc.d/rc 脚本此脚本运行的时候此脚本的时候,会读取/etc/rc.d/rc3.d/下的所有脚本,来控制系统启动的时候启动或者关闭那些服务这些脚本是否开机自启动,可由 chkconfig 命令来管理。4、执行/etc/rc.d/rc.local脚本,此脚本是启动过程中最后启动的一个脚本。最后会执行 /bin/login 登录用户。至此系统启动过程完成。
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  系统 CentOS 启动流程