经过老师的讲解以及查阅资料后,现对Linux系统启动做以浅析,仅是个人理解。

  主要的步骤有以下几步:

第一步:Power On。用户按下电源开关的那一瞬间,叫Power On阶段 。在这个阶段,BIOS检查电脑上一些硬件的状态及存储在CMOS中的设置。CMOS是南桥里面的一个特殊区块,用来让BIOS存储用户设置(进BIOS中看到的选项)。北桥,南桥是主板上的芯片组,AMD的cpu不使用此种架构,北桥控制CPU和内存,南桥负责PCI,USB,VGA等外围设备。

第二步:BIOS加电自检。Power On阶段一开始,会进入BIOS的激活流程,BIOS是进本输入/输出系统的缩写,是在电脑没有访问磁盘前决定机器基本功能的软件,包含了控制键盘,显示屏,驱动器的代码。自检的作用是负责检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)是否正常。例如,最常见的是内存松动的情况,BIOS自检阶段会报错,系统就无法启动起来。

BIOS根据我们设置的启动顺序来启动系统,比如(软盘、硬盘、光盘等),以硬盘为例,BIOS读取硬盘第一个扇区,读取并执行MBR中的程序。

BIOS作用主要是:1>自检和初始化,检测主板硬件并通知开始执行。2>设置中断。3>加载操作系统,由BIOS转交给引导扇区,再有引导扇区跳到各分区激活相应操作系统。

第三步:读取MBR。MBR(Master Boot Record,主引导记录),在硬盘的第一个扇区,上一阶段BIOS将MBR加载到内存中执行。MBR共512Byte,分成三个部分BootLoader,Partition table和Magic Number。BootLoader是MBR用来存储开机管理程序的地方(grub,lilo等)。BootLoader执行加载扇区和志向kernel的功能。Magic Number永远填入"55AA",让BootLoader中的开机管理程序确认这个地方就是MBR。Centos6.6中BootLoader是Grub。

加载BootLoader。 当BIOS找到硬盘上的MBR后,控制权就交由BootLoader。GRUB是一个强悍的开机管理程序,支持多重开机管理。/boot/gurb目录可看到几个系统文件,主要是stage1,stage1_5,stage2这三种类型。stage1负责BIOS交给BootLoader时,载入开机管理程序,linux中是GRUB。stage1.5识别不同类型的文件系统,比如加载e2fs_stage1_5以后,就可以识别ext2格式。当stage1.5加载后,就赋予GRUB访问文件系统目录的权力,也就是说在开始找不到stage2,可以从文件系统中找到stage2的位置。stage2是GRUB最核心程序,操作系统的加载,新增参数,修改选项都由stage2负责。因此stage2不会太小,不可能放进MBR,只能放到文件系统中。而stage1.5提供识别不同文件系统的能力,真是巧妙的设计。当stage2执行时,会从现有文件系统中加载设置文件,/boot/grub/grub.conf配置文件。

第四步:内核启动

根据/boot/grub/grub.conf配置文件中,根据内核路径,将内核解压至内存,至此,内核获得系统控制权,BootLoader退出。内核接管以后,会执行以下几个过程:

1>设备探测

2>驱动初始化

3>以只读方式挂载根文件系统(为了安全起见)

4>装在第一个进程init(PID:1)

第五部:初始化系统。 执行/sbin/init 最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设定、语言、文件系统格式及其他服务的启动。所有动作都依据/etc/inittab来规划。

执行系统初始化脚本/etc/rc.d/rc.sysinit)对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统算是基本运行起来了,后面需要进行运行级别的确定及相应服务的启动。

执行/etc/rc.d/rc脚本。该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc*.d下的文件。

执行用户自定义引导程序/etc/rc.d/rc.local。其实当执行/etc/rc.d/rc3.d/S99local时,它就是在执行/etc/rc.d/rc.local。

第六步:登录。完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录。tty1,tty2,tty3...这表示在运行等级1,2,3,4的时候,都会执行"/sbin/mingetty"

Linux系统启动过程浅析的更多相关文章

  1. Linux系统启动过程介绍

    Linux系统启动过程介绍 学习操作系统有必要了解一下系统的启动过程,这样在面对各种系统故障的时候能快速定位解决问题,下面以Centos来分析linux系统的启动过程. 1.BIOS自检:当开机的时候 ...

  2. linux系统启动过程的列表

    linux系统启动过程的列表 载入BIOS的硬件信息并进行自检.然后根据设置取得第一个可启动的设备: 读取并运行第一个启动设备内MBR(master boot record,主引导分区)的boot l ...

  3. 一起学Linux02之Linux系统启动过程

    这个Linux系统启动过程啊,说实话,我认为,刚学习的时候看几遍,了解一下就好.现在的主要任务是用.熟练了之后再来深究这个不急. 下面我就简单地说说吧. Linux系统的启动主要分为下列步骤: 1 内 ...

  4. Linux 系统启动过程,Linux 系统目录结构

    一.Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立 ...

  5. 二、Linux 系统启动过程

    Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 ...

  6. linux学习-Linux系统启动过程

    linux系统启动过程 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行init. 系统初始化. 建立终端 . 用户登录系统. 内核引导 电源开机后,首 ...

  7. 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用

    1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...

  8. Linux系统启动过程

    1. 从BIOS到KERNEL BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动 BIOS自检 当电脑开机的时候,电脑会 ...

  9. linux内核剖析(零)linux系统启动过程详解-开机加电后发生了什么

    本文参考了如下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详解linux系统的启动过程及系统初 ...

随机推荐

  1. HDU 6205 card card card ( 思维 )

    题意 : 给定两个序列 a 和 b ,保证 a 数列的和 == b数列的和,从头到尾考虑 (a[i] - b[i]) 的前缀和,直到前缀和为负数则无法进行下去,所得的便是a[1~i]的和,现在有一个操 ...

  2. 【bzoj1146】[CTSC2008]网络管理Network

    题目描述: M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...

  3. Laya layout算法

    /** * <p>重置对象的 <code>X</code> 轴(水平方向)布局.</p> * @private */ public function r ...

  4. ubantu apache2.4.6 apache https配置

    [root@VM_58_118_centos dbback]# a2enmod ssl [root@VM_58_118_centos dbback]# service apache2 restart ...

  5. PHP导出excel文件名中文IE乱码解决

    <?php $ua = strtolower($_SERVER['HTTP_USER_AGENT']); if(preg_match('/msie/', $ua) || preg_match(' ...

  6. #1123-JSP隐含对象

    JSP 隐含对象 JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐含对象也被称为预定义变量. JSP所支持的九大隐含对象: 对象,描述 reque ...

  7. 「LibreOJ β Round #2」计算几何瞎暴力

    https://loj.ac/problem/517 题解 首先我们如果没有排序这个骚操作的话,可以直接记一下各个数位的前缀和,然后异或标记给全局打,查询的时候先把区间信息提取出来然后整体异或就好了. ...

  8. instanceof用来判断啥?

    java中的instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例.

  9. 力扣60——第k个排列

    原题 给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: 1. "123" 2. &qu ...

  10. RAC容灾演练

    RAC容灾演练:在节点一进行验证:步骤 操作命令关闭步骤 检测RAC集群资源状态 crsctl status resource -t 关闭监听 srvctl stop listener -n < ...