centos6 之前的系统启动:

	linux启动流程:
1)加电自检
2)读取MBR,引导加载程序grub,完成grub的三个阶段。
3)加载系统内核kernel,执行系统初始化信息。
4)启动用户空间第一个执行程序/sbin/init,并调用init的配置文件,完成初始化。
5)启动核心的外挂模块,来启动各种所需服务。
6)启动6个虚拟终端,执行/bin/login 程序,等待用户登录。
7)登录之后开始以Shell控制主机。
CMOS通电-->BIOS启动-->读取MBR-->加载程序grub-->加载内核kernel-->执行程序/sbin/init-->/bin/login

1。加载BIOS 的硬件信息,获取第一个启动设备

	加电自检:Power-On-Self-Test(POST)
检测硬件设备是否正常运行。自检功能是由一个软件程序来实现的,叫做BIOS,(basic input output system),即基本输入输出系统,它被装载在一个硬件芯片CMOS上,CMOS是个硬件设备。加电过程就是给CMOS通电,然后启动其上的BIOS程序,BIOS程序会根据CMOS上的配置信息来读取其他硬件设备信息并进行检查是否存在且能正常运行,之后就进行硬件设备的初始化。 加电自检:给CMOS通电,其上的BIOS启动,并根据CMOS的配置信息来检查其他硬件设备是否正常,之后进行设备初始化。

2。读取第一个启动设备MBR 的引导加载程序(grub)的启动信息

	读取MBR,引导加载程序grub,完成grub的三个阶段。
硬件设备初始化后,BIOS会列出一些可以启动的装置顺序,然后开始读取第一个可以启动的设备中的操作系统文件。
怎样来读取这第一个启动设备上的操作系统文件呢?需要用到启动管理程序:Boot Loader。它是个程序,依赖与硬盘,这个硬盘就是第一个可以启动的硬盘。Boot Loader是在该硬盘上第一个扇区上MBR(master boot record,主引导记录)当中。每个硬盘分区都有块启动分区,这个启动分区就是用来为操作系统安装Boot Loader。
Boot Loader的主要功能:一个就是去识别、加载操作系统中的核心文件,并提交到内存中运行,进而启动对应的操作系统。另一个主要功能是提供菜单信息(这些菜单信息可为使用者提供不同的启动项目来加载操作系统),并将启动管理功能转交给其他的加载程序。
Boot loader功能的发挥是需要grub的是三个阶段来完成的。 BIOS列出启动顺序,读取加载并启动第一个可以启动硬盘上的第一个启动扇区上的MBR上的Boot Loader,发挥Boot loader的功能,而功能的发挥是通过引导加载程序grub来实现,也就是共要完成grub的三个阶段stage1-1.5-2。

3。加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备


加载系统内核kernel,执行系统初始化信息。
在Boot Loader完成grub的是三个阶段后,就开始读取操作系统内核文件,接下来就会将内核文件解压缩后装载到内存当中,然后根据内核提供的功能开始检测与加载各个设备。
此时的设备检查和之前bios自检不同,此时内核程序已完全接管了BIOS的工作,之后的操作都是由内核来完成的。此时内核程序还没有加载到磁盘便没法读取系统上的内核文件,而加载磁盘时就需要磁盘驱动程序,磁盘驱动程序还在硬盘上,但硬盘上的驱动程序还没被读取到。这就形成了死循环。
所以这里用了个虚拟文件系统来解决这个问题。虚拟文件系统(Initial RAM DISK)同样放置在/boot目录下,并且是一个以initrd(5)或initamfs(6)开头的文件。这个以initrd开头的文件能通过Boot Loader程序将其加载到内存中,然后这个文件会被解压缩并在内存中模拟一个根文件系统,这个根文件系统能提供一个可以运行的程序,通过该程序可以加载在启动过程中所需的核心模块(RAID, LVM, SCSI 等文件系统和磁盘驱动程序),加载完后会协助内核重启呼叫/sbin/init来执行后面的正常启动。 总的来说就是:Boot Loader 可以加载kernel(以vmlinuz开头的文件)和initrd(以initrd开头的文件),然后在内存中让initrd(5)或initamfs(6)解压缩成虚拟的根目录,然后内核kernel可以在这个虚拟的根目录上加载合适的驱动程序,来检查和加载硬盘等各个设备,再之后释放虚拟的根文件系统,且会协助内核重启呼叫/sbin/init来执行后面的正常启动,并以只读的方式挂载到磁盘上真实的根文件系统,之后就是正常的启动过程了。

4。核心执行init 程序,并获取默认的运行信息

	启动用户空间第一个执行程序/sbin/init,并调用init的配置文件
在内核、硬件及驱动信息加载完毕后,内核会呼叫用户控件的第一个执行程序/sbin/init,init程序主要功能是准备软件运行环境,包括系统的主机名称、网路配置、文件系统格式等其他服务的启动管理。这些所有的操作都是通过init的配置文件来定义的。 init的配置文件:
centos5:由于centos5采用的是SysV init方式,其特点是启动用户空间的服务程序,通常通过脚本进行,有依赖关系的服务将被串行启动;这导致了centos5的系统启动过程非常慢,其配额制文件为:/etc/initab
centos6:采用的是Upstart的方式,其特点是守护进程间的通信依赖于D-Bus进行,因此,可基本实现类似并行启动,配置文件:/etc/inittab,/etc/init/*.conf
centos7:采用Systemd方式,其特点是服务只有在第一次被访问到时才会真正启动起来;因此centos7系统启动过程非常快,配置文件:/usr/lib/systemd/* 启用用户空间的第一个执行程序/sbin/init,这个程序根据init的配置文件来开始init初始化。初始化第一步是:根据/etc/inittab(centos5);或者/etc/inittab、/ect/init/*.conf(centos6)配置文件进行系统环境初始化。

5。初始化第一步结束后,开始初始化第二步。初始化第二步,init会根据/etc/rc.d/rc.sysinit中定义的内容进行系统初始化。

6。启动核心的外挂模块,init 执行/etc/rc.d/目录下的各个批处理文件(scripts),最后执行/etc/rc.d/rc.local。

	在/etc/rc.d/rc.sysinit初始化完成系统后,此时系统就已经顺利开始工作了。只不过此时还有启动一些所需要的各项服务,这样主机才能提供我们需要的功能,如网路服务,dhcp服务等。这里是通过inittab中提到的l3:3:wait:/etc/rc.d/rc 3配置进行的。实际上为/etc/rc.d/rc3.d下所有链接文件来决定如何启动或关闭服务。其中,以S开头的都被传递start参数来启动;以K开头的都被传递stop参数来停止。
/etc/rc.d/rc3.d/下的所有链接文件,都是链接到/etc/init.d/目录下的所有脚本,即为/etc/init.d/SERVICE_SCRIPTS。这些脚本遵循LSB服务脚本定义规范,都接受至少4个最基本的参数:{start|stop|status|restart}。
/etc/init.d/目录下的脚本在指定级别为启动还是停止的控制方法:
1。脚本开头:
# chkconfig: S_LEVELS S_PRIO K_PRIO (s_levels s_prio k_prio)
# description: #!/bin/bash
#LLLL 表示初始在哪个级别下启动,- 表示都不启动
# chkconfig: LLLL nn nn
服务脚本中,必须有#chkconfig 35 97 07,其中35表示开机支持在那个模式上启动 ,97 07分别是服务列表名的前缀,分别表示启动或关闭状态 2。脚本开头的第二方法:
### BEGIN INIT INFO
# Provides: $network
# Should-Start: iptables ip6tables
# Short-Dercription: Bring up/down networking
# Description: Bring up/down networking
### END INIT INFO 这些脚本可以直接被调用:
/etc/init.d/SERVICE_SCRIPTS {start|stop|status|restart}
也可以使用service 命令调用:
service SERVICE_SCRIPTS {start|stop|status|restart}
上面的服务也可以开机时(或切换为指定级别时)被自动启动或停止:
方法:
/etc/rc.d/rc脚本,以及每个级别对应的级别目录下的“符号链接”来进行(/etc/rc.d/rcN.d)如下内容:
S##SERVICE_SCRIPTS
K##SERVICE_SCRIPTS
##:两位数字,表示优先级;比如想启动一个web服务,那首先得有网络服务,因为web服务依赖于网络服务,因此网络服务就会被优先启动,web服务就后于网络服务启动,同样,在停止是要先停止web服务,最后才能停止网络服务。
注意:
有个特殊的链接在所有的/etc/rc.d/rcN.d/目录下,这个链接就是S99local指向/etc/rc.local脚本,这个是最后执行的。
这个脚本的功能是:那些不方便定义为服务脚本的,想设定为开机自动运行的,可以直接把命令写到此脚本中以实现开启运行。

7。执行/bin/login 程序,等待用户登录

	根据/etc/inittab中指定的id:3:initdefault:来启动终端,并且会启动6个虚拟终端且处于等候状态,虚拟终端启动后会在此虚拟终端上附加个用户登录程序/bin/login,来等待用户登录。
在完成系统所有相关服务启动后,接下来linux就会启动终端或者是X window来向用户提供登录界面,例如启动虚拟终端
一般启动6个虚拟终端:
tty1:2345:respawn:/sbin/mingetty tty1
tty2:2345:respawn:/sbin/mingetty tty2
tty3:2345:respawn:/sbin/mingetty tty3
tty4:2345:respawn:/sbin/mingetty tty4
tty5:2345:respawn:/sbin/mingetty tty5
tty6:2345:respawn:/sbin/mingetty tty6 每个虚拟终端启动后,会立即通过此终端附加一个应用程序——login
如果默认级别为5,还会启动一个图形虚拟终端,会附加X应用程序 注意:
1。centos6的init程序为upstart,其配置文件为/etc/init/*.conf ;此些配置遵循upstrat语法格式进行编程;
2。centos6 的服务控制事实上大多数并没有使用upstart脚本来控制,而使用的是SysV风格的脚本;

8。登录之后开始以Shell控制主机

centos6之前版本的启动流程的更多相关文章

  1. linux系统的启动流程梳理

    1. 不同版本的linux系统的启动流程 1.1 centos6.x系统的启动流程 其详细启动步骤如下: 1)开机,BIOS自检,检查各个硬件是否正常 2)读取硬盘MBR信息,引导系统启动 3)加载g ...

  2. Linux 启动流程及相关知识

    基础知识 linux系统的组成 内核(kerner) 根文件系统(rootfs) 内核提供操作系统的功能,根文件系统包含常用的一些工具,这些工具.这些工具的运行离不开glibc库文件. 程序:二进制程 ...

  3. Activiti 5.18启动流程到完成所有任务之间的数据库变化(转)

    来写一下Activiti 5.18版本从启动流程到整个流程结束之间数据库表的变化 先给出流程图,很简单的流程,就是两个UserTask: 代码如下: DeploymentBuilder builder ...

  4. CentOS7启动流程

    同样我也找了一张CentOS7的启动流程图. 第一步.硬件启动阶段 这一步和CentOS6差不多,详细请看CentOS6启动流程(含详细流程图) 第二步.GRUB2引导阶段 从这一步开始,CentOS ...

  5. Ubuntu启动流程

    网上很多Linux的启动流程图,也有Ubuntu早期版本的启动流程介绍,却少有近期版本的启动流程介绍(16.04).这里作出总结归纳. Linux系统采用的是RedHat启动方式,启动流程如下: Ub ...

  6. Linux操作系统-CentOS6启动流程和服务管理

    Linux操作系统-CentOS6启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux组成 1>.Linux: kernel+rootfs ker ...

  7. CentOS6 启动流程图文解剖

    我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linux操作系统了.那么在按下电源到输入账号和密码之前,操作系统都做了些什么?下面就来讲述在这段时间发生的动 ...

  8. CentOS6启动流程

    CentOS6启动流程 1.加载BIOS的硬件信息,获取第一个启动设备 在通电之后,CentOS6会进行加电自检(Power On Self Test),这个过程主要是由BIOS完成的.在自检完毕,会 ...

  9. CentOS6启动流程(含详细流程图)

    参考:Linux启动流程和grub详解(作者:好笔记运维) 为什么把这位的参考放在前面,主要是这位大佬的流程图太详细了.虽说不一定要了解这么详细,但还是很佩服啊.不多说,上图(在新标签中打开图片) 下 ...

随机推荐

  1. 集训第四周(高效算法设计)G题 (贪心)

    G - 贪心 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Desc ...

  2. 我们参与投资36Kr股权众筹项目“易途8”的决策过程

     背景   中文接机.中文送机.中文包车. 当地玩乐   最大的竞争对手:皇包车,15年9月A轮   其它对手:唐人接等,订单量无法和 皇包车.易途8比.    看好理由 1.旅游行业和境外自由行,是 ...

  3. BNUOJ 5997 Fibonacci again and again

    Fibonacci again and again Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HD ...

  4. [luoguP1098] 字符串的展开(模拟)

    传送门 一个模拟. 代码 #include <cstdio> #include <cstring> #include <iostream> #define iswo ...

  5. c/c++ 位域的概念

    位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数 ...

  6. 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!

    n<=50000,m<=50000的图,给s和t,问有多少点对$(a,b)$满足 嗯. 不会. 首先最短路DAG造出来,然后两个条件转述一下:条件一,$N_a$表示从s到t经过a的路径,$ ...

  7. Operating system management of address-translation-related data structures and hardware lookasides

    An approach is provided in a hypervised computer system where a page table request is at an operatin ...

  8. POJ 3268_Silver Cow Party

    题意: n个地方,标号1~n,每个地方都有一头牛,现在要他们都去往标号为x的地方,再从x返回,每条道路都是单向的,求所有牛走的来回的最短路中的最大值. 分析: 注意在求每头牛走到x时,挨个算肯定超时, ...

  9. [bzoj3513][MUTC2013]idiots_FFT

    idiots bzoj-3513 MUTC-2013 题目大意:给定$n$根木棍,问随机选择三根能构成三角形的概率. 注释:$1\le n\le 3\cdot 10^5$,$1\le a_i\le 1 ...

  10. cogs——2084. Asm.Def的基本算法

    2084. Asm.Def的基本算法 ★☆   输入文件:asm_algo.in   输出文件:asm_algo.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “有句 ...