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

linux系统启动流程

2016-08-05 14:54 417 查看
一.硬件引导启动
1.通电之后,设备初始化硬件,显卡,内存,硬盘,时间等
2.接下来,设备会搜索启动介质,USB,光驱,硬盘等
3.系统会装在硬盘上,而接下来设备便会搜索硬盘的第一个分区的第一个扇区,即MBR,共512字节,
MBR分为三部分
(1).Bootloader,占446字节,即所谓的GRUB
(2).DPT,占64字节,即分区表
(3).Magic Number,占2字节,即校检位

二.GRUB(多操作系统启动程序)引导启动

当电脑启动了磁盘上的MBR之后,并将控制权交给MBR中的程序(stage1),stage1执行,判断自己是否
GRUB,如果是且配置了stage1_5,则加载stage1_5,stage1_5用于识别文件类型(像windows的NTFS,
Linux的ext4格式等),这相当于一个桥梁,接着,stage2(存在于磁盘里)被加载并执行,由stage2
借助stage1_5驱动文件系统,并查找grub.conf,显示启动菜单供用户选择,然后根据用户的选择或默
认配置加载操作系统内核,并将控制权交给操作系统内核,由内核完成操作系统的启动。

三.Sysvinit引导启动(内核引导启动)

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来
进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”
,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启

四.init进程执行rc.sysinit(系统初始化)

在 设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做
的工作非常多,包括设定PATH、 设定网络配置(/etc/sysconfig/network)、启动swap分区、设定
/proc等等。而这些内容可以由/etc/rc.d中的rc.sysinit文件查看到。
线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运
行的系统环境。它主要进行的操作有:
(1) 执行函数do_basic_setup(),它会对外部设备进行全面地初始化。
(2) 构建系统的虚拟文件系统目录树,挂接系统中作为根目录的设备(其具体的文 件系统已经在上一步
骤中注册)。
(3) 打开设备/dev/console,并通过函数sys_dup()打开的连接复制两次,使得文件号0,1 ,2 全部指向
控制台。这三个文件连接就是通常所说的“标准输入”stdin,“标准输出”stdout和“标准出错信息”
stderr这三个标准I/O通道。
(4) 准备好以上一切之后,系统开始进入用户层的初始化阶段。内核通过系统调用execve()加载执T子相
应的用户层初始化程序,依次尝试加载程 序"/sbin/initl"," /etc/init"," /bin/init',和
“/bin/sh。只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到
init()函数段中。至 此,init()函数结束,Linux内核的引导 部分也到此结束。

五.启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

六.执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,具体由/etc/rc.d/rc?.d来完成
相应的初始化工作和启动相应的服务。

七.执行etc/rc.d/rc.local

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东
西放到这里。

八.执行bin/login程序,进入登陆状态

此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系
统了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息