Linux系统基础——BIOS和Bootloader

news2024/11/20 18:36:51

BIOS和Bootloader

特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和所有图片来源于这个专栏。

1 了解背景

1.1 目的

操作系统不是在板子上电就直接运行的,上电到系统启动的中间过程要搞明白,比如了解linux系统启动之前cpu做了哪些准备,内核如何被加载到内存上运行等等。

1.2 结论

BIOS时期: 板子上电,先读取ROM中的固件代码,做出一个基本输入输出系统
BootLoader时期: BIOS从启动盘(一般是硬盘第一个扇区)开始加载引导代码,进一步初始化硬件(实模式切换到保护模式; 启动分页管理内存)
BootLoader将一系列工作做完了,最重要的一步就是加载系统内核kernel到内存运行了。控制权移交给内核之后,BootLoader时期结束,然后开始内核的部分了。

2 BIOS阶段

BIOS是固化在ROM上的一段程序,如果你自己安装过操作系统,刚启动的时候,按某个组合键,显示器会弹出一个蓝色的界面。能够调整启动顺序的系统,就是我说的 BIOS,然后我们就可以先执行它。

2.1 内存空间

系统工作在实模式,这时只有1M的内存地址空间。该模式下将内存地址 0xF00000xFFFFF 这 64K 映射给 ROM。剩下的内存空间分布
在这里插入图片描述

2.2 上电流程

主板上电,CPU先从ROM中加载BIOS程序,BIOS进行硬件相关的初始化工作(cpu将CS寄存器置为0xffff,ip寄存器置0x0000,所以第一条指令指向的地址是0xfff0(实模式下,cs<<4 + ip)。这里有一个jmp指令,跳转到rom中做初始化的代码)。主要有2件事情

  1. 检查硬件环境
  2. 是建立中断程序和中断向量表,同时把结果显示在显示器上

3 BootLoader阶段

光有BIOS还不够,还要从硬盘上搞到操作系统。引导操作系统这一阶段就是BootLoader

3.1 引导管理器grub2

Linux一般通过grub来做系统引导程序。系统上提供了grub2工具,grub2用户配置文件/etc/default/grub,系统会根据用户配置自动生成/boot/grub/grub.cfg。常用命令

# 重新生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg
 
# 将Grub 2安装到硬盘引导扇区
grub-install --root-directory=/ /dev/sda
3.2 引导流程

使用 grub2-install /dev/sda,可以将启动程序安装到/dev/sda。其中有boot.imgcore.img

在这里插入图片描述

<1> boot.img

在BIOS平台下,boot.img是grub启动的第一个img文件,它被写入到MBR中或分区的boot sector中,因为boot sector的大小是512字节,所以该img文件的大小也是512字节。

boot.img唯一的作用是读取属于core.img的第一个扇区并跳转到它身上,将控制权交给该扇区的img。由于体积大小的限制,boot.img无法理解文件系统的结构,因此grub2-install将会把core.img的位置硬编码到boot.img中,这样就一定能找到core.img的位置。

参考文章: https://www.cnblogs.com/f-ck-need-u/p/7094693.html#blog122

<2> core.img

core.img根据diskboot.img、kernel.img和一系列的模块被grub2-mkimage程序动态创建。core.img中嵌入了足够多的功能模块以保证grub能访问/boot/grub,并且可以加载相关的模块实现相关的功能,例如加载启动菜单、加载目标操作系统的信息等,由于grub2大量使用了动态功能模块,使得core.img体积变得足够小。

core.img中包含了多个img文件的内容,包括diskboot.img kernel.img等。

参考文章: https://www.cnblogs.com/f-ck-need-u/p/7094693.html#blog122

引导流程

先加载boot.img到内存中运行,boot.img 将控制权交给 diskboot.img 后,diskboot.img 的任务就是将 core.img 的其他部分加载进来,先是解压缩程序 lzma_decompress.img,再往下是 kernel.img,最后是各个模块 module 对应的映像。根据开机grub界面选项,进入启动系统内核的流程。

ps: 这里需要注意,这里的kernel.img它不是 Linux 的内核,而是 grub 的内核。

4 补充知识

4.1 从实模式切换到保护模式

在bootloader过程中,lzma_decompress.img 做了一个重要的决定,就是调用 real_to_prot,cpu从实模式切换到保护模式。切换到保护模式要干很多工作,大部分工作都与内存的访问方式有关。

  • 第一项是启用分段,就是在内存里面建立段描述符表,将寄存器里面的段寄存器变成段选择子,指向某个段描述符,这样就能实现不同进程的切换了。
  • 第二项是启动分页。能够管理的内存变大了
  • 打开第21根地址线 Gate A20,cpu从20位总线到32位总线访问内存
4.2 主引导扇区、分区引导扇区、分区表

一个硬盘实际上由一个个扇区组成,它起始的一部分扇区为主引导扇区,包括MBR(主引导纪录)和DPT(分区表)。

硬盘可以有多个分区,每个分区起始的一部分扇区,为分区引导扇区。分区引导扇区之后的部分,为文件系统的索引,不同的文件系统采用不同的索引,文件系统通过它定位文件在硬盘上的位置。

对硬盘的读写操作,通过文件系统来完成;引导扇区中的内容,我们不能够在文件系统中进行操作,而需要专用软件,比如引导管理器。

9 References

  • 主引导记录 - 百科
  • Grub2配置
  • grub2详解(翻译和整理官方手册)
  • An introduction to the Linux boot and startup processes
  • An introduction to GRUB2 configuration for your Linux machine

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12月24日:数据结构

Btree结构 ​​​​​​ BTree和BTree详解_菜鸟笔记的博客-CSDN博客_btree 简单的说一下什么是聚簇索引 , 和非聚簇索引有啥区别 聚簇索引&#xff1a;索引和数据存储放在了同一个文件中&#xff0c;找到了索引也就能找到数据 非聚簇索引&#xff1a;将数据存储和索引分开放置…

AAAI2023 | 户外超大规模场景数据如何生成?READ告诉你答案(浙大阿里巴巴)

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号ADAS巨卷干货&#xff0c;即可获取点击进入→自动驾驶之心【多传感器融合】技术交流群后台回复【READ】获取论文和代码&#xff01;&#xff01;&#xff01;摘要合成自由视角真实感图像是多媒体领域的一项重要任务。随着高…

最长上升子序列(详解二分优化)

最长上升子序列一、题目描述二、思路分析1、问题分析2、思路分析&#xff08;1&#xff09;状态转移方程状态表示状态转移&#xff08;2&#xff09;循环设计三、代码实现一、题目描述 二、思路分析 1、问题分析 其实这道题第一个思路就是深度优先搜索&#xff0c;类似于全排…

一维树状数组

引入 树状数组和线段树具有相似的功能&#xff0c;但他俩毕竟还有一些区别&#xff1a;树状数组能有的操作&#xff0c;线段树一定有&#xff1b;线段树有的操作&#xff0c;树状数组不一定有。但是树状数组的代码要比线段树短&#xff0c;思维更清晰&#xff0c;速度也更快&a…

设计模式-命令模式

将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff0c;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作 命令模式( Command Pattern) 是对命令的封装&#xff0c;每一个命令都是一个操作&#xff1a;请求的一方 发出请求要求执行…

DIDL1_基础优化算法

基础优化算法梯度下降选择学习率小批量随机梯度下降选择批量大小Batch_size总结梯度下降 挑选一个初始值w0w_0w0​重复迭代参数 t1&#xff0c;2&#xff0c;3 wtw_twt​等于上一个时刻wt−1w_t-1wt​−1减去一个&#xff08;学习率标量和损失函数关于wt−1w_t-1wt​−1处的梯…

【20天快速掌握Python】day12-文件操作

1.文件的打开与关闭 想一想&#xff1a; 如果想用word编写一份简历&#xff0c;应该有哪些流程呢&#xff1f; 打开word软件&#xff0c;新建一个word文件 写入个人简历信息 保存文件 关闭word软件 同样&#xff0c;在操作文件的整体过程与使用word编写一份简历的过程是很相…

B树(B-树) [数据结构与算法][Java]

B树 B树又称为多路平衡树查找树, 是一种组织和维护外存文件系统非常有效的数据结构 因为我们的二分搜索树构建的时候很可能会出现不平衡的情况, 所以我们提出了自平衡二分搜索树(AVL树)对我们的普通的二分搜索树进行了一个优化, 而自平衡二分搜索树中当元素很多的时候树的高度…

Axure绘制密码输入框

当我们在绘制登录页面时&#xff0c;如果登录方式包含账号密码登录&#xff0c;那么我们就会使用到密 码输入框&#xff0c;而常见的密码输入框&#xff0c;通常会使用到小眼睛控制密码的明文和密文显示。 大家知道axure中的输入框&#xff0c;当你设置成密码类型时&#xff…

结构体内存对齐问题

结构体重点&#x1f603; 1.结构体内存对齐问题&#xff0c;是在计算结构体的大小时&#xff0c;对结构体成员在内存中的位置进行研究的问题。 废话不多说&#xff0c;先看两个例子&#xff1a; 例题1&#xff1a; struct S1 {char c1;int age;char c2; };int main() {struc…

Spring Cloud Alibaba 2022.0.0.0 版本发布啦!

01新版本预览Aliware本次发布的 Spring Cloud Alibaba 2022.0.0.0-RC1 版本&#xff0c;是基于社区 2022.x 主干分支进行构建发布第一个 Release Candidate&#xff08;RC&#xff09;版本&#xff0c;考虑到本次版本升级属于重大版本变更&#xff0c;因此暂时先以 RC 版本形式…

如何不改一行代码,让Hippy启动速度提升50%?

导读&#xff5c;Hippy使用JS引擎进行异步渲染&#xff0c;在用户从点击到打开首屏可交互过程中会有一定的耗时&#xff0c;影响用户体验。如何优化这段耗时&#xff1f;腾讯客户端开发工程师李鹏&#xff0c;将介绍QQ浏览器通过切换JS引擎来优化耗时的探索过程和效果收益。在分…

雷神科技在北交所上市首日破发:上半年业绩下滑,路凯林为董事长

12月23日&#xff0c;青岛雷神科技股份有限公司&#xff08;下称“雷神科技”&#xff0c;BJ:872190&#xff09;在北京证券交易所&#xff08;即北交所&#xff09;上市。本次上市&#xff0c;雷神科技的发行价为25.00元/股&#xff0c;发行数量为1250万股&#xff0c;发行后总…

2023春季招聘面试集锦:MYSQL数据库高频面试题

mysql索引的数据结构&#xff0c;各自优劣 索引的数据结构和具体存储引擎的实现有关&#xff0c;在MySQL中使用较多的索引有Hash索引&#xff0c;B树索引等&#xff0c; InnoDB存储引擎的默认索引实现为&#xff1a;B树索引。对于哈希索引来说&#xff0c;底层的数据结构就是…

Dubbo(尚硅谷)学习笔记1

我们的dubbo需要一个注册中心也就是我们的zookeeper。 我们先把zookeeper搭建起来&#xff1a; 我这里是用的zookeeper3.3.4当然想用其它版本的也可以去官网去找。 我们运行这个文件&#xff1a; 第一次是会运行失败&#xff0c;所以我们还是找到这个文件 把下面的文件复制一…

小学生要学python开发游戏吗

小学生要学python开发游戏吗    小学生要学python开发游戏吗&#xff1f;为什么 而学, 到底需要如何做到, 又该如何学习. 就我个人来说, 小学生要学python开发游戏吗很有意义, 不能不说非常重大.    一般来讲, 我们都必须务必慎重的考虑考虑. 莎士比亚在不经意间这样说过&a…

qt plaintextedit使用_qt获取lineedit的内容

QLineEdit和QTextEdit都是文本框类&#xff0c;QLineEdit类是单行文本框控件&#xff0c;可以输入单行字符串。QTextEdit类是多行文本框控件&#xff0c;可以显示多行文本内容&#xff0c;当文本内容超出控件显示范围时&#xff0c;可以显示水平个垂直滚动条。QTextEdit不仅可以…

【工作流Activiti7】3、Activiti7 回退与会签

1. 回退&#xff08;驳回&#xff09; 回退的思路就是动态更改节点的流向。先遇水搭桥&#xff0c;最后再过河拆桥。 具体操作如下&#xff1a; 取得当前节点的信息取得当前节点的上一个节点的信息保存当前节点的流向新建流向&#xff0c;由当前节点指向上一个节点将当前节…

2022 年全球重大经济事件盘点( I )

2022 年&#xff0c;全球经济正面临百年未有之大变局&#xff0c;接踵而至的大事件造成今年行情剧烈波动&#xff0c;以往的投资逻辑不断遭遇修改。 正所谓阳光之下没有新鲜事。通过对于重大事件的复盘&#xff0c;分析了解过往历史脉络&#xff0c;投资者方能温故知新&#…

计算机视觉与图形学-神经渲染专题-

《Removing Objects From Neural Radiance Fields》链接&#xff1a;https://arxiv.org/pdf/2212.11966.pdf摘要神经辐射场 (NeRFs) 正逐步应用到场景表征的各个方向&#xff0c;来实现新颖视图的合成。NeRF 将越来越多内容与其他人共享。不过&#xff0c;在共享 NeRF 之前&…