ubuntu系统启动流程

在这里插入图片描述

1. BIOS自检

1.1 什么是BIOS

BIOS是连接软件与硬件的一座“桥梁”,是计算机的开启时运行的第一个程序,主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
对X86架构设备而言,主板上一般会有一个独立的BIOS芯片(一般为一个Norflash芯片),内部固化程序,上电会直接从BIOS开始引导运行。
BIOS阶段大概处于PC机开机时候显示厂商标识并且提示让按F1/F2/F12/DEL进BIOS阶段,进入BIOS之后可以进行一系列的配置。

1.2 主要功能

加电自检(POST):
功能是检查计算机硬件是否良好,自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。
初始化:
创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当计算机启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动。
引导程序:
功能是引导Dos或其他操作系统 ,此时会在硬盘读取引导记录,然后把计算机的控制权转交给引导记录,由引导记录把操作系统装入电脑,在电脑启动成功后,BIOS的这部分任务就完成了。

2. 加载MBR到DDR

MBR是硬盘上的一个扇区,包含三部分内容(引导程序、分区表及分隔标识,MBR总计512字节;其中引导程序最多占446个字节)。
BIOS程序运行会将硬盘上MBR数据加载引导到DDR内存里面,由于MBR里面有引导程序以及分区信息,此时分区表也已经在内存里面了,同时对系统的控制权从bios过渡到了MBR中的引导程序。
对于ubuntu系统而言,一般采用GRUB(类似uboot的地位)作为引导程序(Boot Manager)。

3. 引导执行Grub

GRUB是一个系统引导程序,分为两个阶段。

3.1 引导启动Grub第一阶段

第一阶段一般是汇编编写的,代码段直接存放在MBR里面作为引导程序,主要实现的功能有:

    1. 基本的硬件设备初始化(屏蔽所有的中断、关闭处理器内部指令/数据cache 等)
    1. 为加载 Bootloader 的Stage2 准备空间。
    1. 如果是从某个固态存储媒质中,则拷贝 Bootloader 的stage2 到RAM 空间中。
    1. 设置好堆栈。
    1. 跳转到 stage2 的C 程序入口点。

3.2 引导执行Grub第二阶段

GRUB的第二阶段一般是C编写的,一般存放在磁盘分区里面,通常是/boot/grub/,它所完成的主要功能有:

    1. 初始化本阶段要使用到的硬件设备。
    1. 检测系统内存映射。
    1. 将kernel 映像和根文件系统映像从flash 上读到RAM 空间中。
    1. 为内核设置启动参数
    1. 调用内核。

4. 引导内核,启动init进程

X86架构ubuntu系统的内核一般存放在/boot目录下,系统引导加载内核完毕会加载并跳转到init即系统1号进程执行,操作控制权交接给init。
init进程会进行一系列的系统初始化,启动各个进程任务,我们最终的桌面以及应用程序都是从init直接或间接启动起来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值