操作系统的启动过程——Windows、嵌入式系统、Linux

简介: 操作系统的启动过程——Windows、嵌入式系统、Linux

☞ 通用计算机启动过程

1️⃣一个基础固件:BIOS

一个基础固件:BIOS→基本IO系统,它提供以下功能:

  • 上电后自检功能 Power-On Self-Test,即POST:上电后,识别硬件配置并对其进行自检,保证正常运行和初始化;
  • 基本IO驱动与事件处理功能:初始化并驱动硬件,如显示器、串口、键盘等接口,使能基本的中断;
  • 启动参数设置功能:过程中允许通过热键启动设置界面,进而对CMOS RAM中的启动参数进行配置。CMOS RAM等效于BBSRAM,存放启动配置数据,电池掉电后数据丢失;
  • 系统自动装载功能:在系统自检成功后,根据启动顺序,将相应启动设备主引导记录MBR(一般位于0磁道的0扇区,大小为512字节)的引导程序装入内存并从入口地址运行;

2️⃣WIndows操作系统启动过程

① 系统上电或复位,X86处理器复位——代码段寄存器CS为0xFFFF,指令指针寄存器IP为)0x0000,CS:IP地址存放下一条跳转指令,跳转至ROM中BIOS入口地址0xFFFFFFF0(复位向量地址),并启动BIOS。

② BIOS上电自检,若出现错误则初始化基本硬件,允许用户进行参数配置。

③ BIOS将第1个启动设备的第1个扇区加载到系统RAM的0x7C000地址,启动MBR中的引导程序,进入引导的第一个阶段。

④ 调用 Windows MBR Loader 或 LILO GRUB WinGrub等引导程序,进入引导的第二个阶段。

⑤ 引导程序调用 OS Boot Loader 把用户选择的操作系统内核加载到内存,并跳转到操作系统入口地址开始执行。

此时,计算机的控制权交给了操作系统,基本启动过程完成。

☞ 嵌入式系统启动过程

MCS-51 MCU 上电复位后,PC寄存器的初值为0x0000。0000H,0001H,0002H这三个单元存放了一条无条件跳转指令,当从该地址执行时将直接跳转到主程序的入口地址。

arm处理器复位后将从0x00000000地址处开始执行指令。

1️⃣处理器片内集成启动固件——嵌入式系统启动

① 上电程序引导

片内集成独立 Boot ROM (Brom),代码 Rom Boot Loader (RBL) 支持从 NAND Flash、SPI、UART 等外部接口启动。

  • 加电后,处理器将从该ROM的复位向量地址开始执行,RBL通过判断处理器特定引脚的电平来进入正常启动模式或开发模式;
  • RBL获取下一步要执行的代码,并将其复制到SRAM或SDRAM中引导执行;

② 嵌入式操作系统装载

嵌入式操作系统的引导也需要特定的机制和软件支持,即 Boot Loader。

  • 复位后,将 Boot Loader 代码从Flash 拷贝到SDRAM的特定区间并引导执行;
  • Boot Loader 程序执行一系列基本的硬件初始化工作;
  • 将自身拷贝到SDRAM中,RAM中的 Boot Loader 继续执行,为操作系统的运行做好环境准备,并将外部存储器中的操作系统内核映像及根文件系统映像拷贝到内存中的代码,数据空间,设置内核启动参数;
  • 跳转至内核入口地址开始执行。

2️⃣裸机

直接部署在嵌入式硬件上的软件称为裸机代码,或裸机(应用)软件。一般来说都是些无限循环结构,比如空调、冰箱等嵌入式系统。通过板级支持包BSP,向下屏蔽硬件的细节,向上提供统一的服务和接口。没有操作系统,通过中断来实现多任务运行。

☞ Linux系统启动过程

计算机接通电源上电后,需要经过BIOS加电自检、MBR系统引导、加载内核三步之后,操作系统才会启动。

1️⃣BIOS加电自检

  • BIOS全称 Basic Input/Output System,即基本输入输出系统,它是一个被永久刻录在ROM中的软件,加电自检是指 Power On Self Test,POST,属于BIOS的主要组成部分。
  • 计算机在接通电源后,BIOS通过POST来加载硬件信息,进行内存、CPU、主板等检测,如果硬件设备正常工作,BIOS会寻找硬盘第一个扇区中存储的数据,并使用MBR中的数据激活引导加载程序。

2️⃣MBR系统引导

  • MBR全程 Master Boot Recode,是一种磁盘分区格式,也是以此种格式的磁盘中0盘片0扇区中存储的一段记录——主引导记录。磁盘中扇区的大小为512byte,主引导记录MBR占据第一个扇区的前446字节,剩余的空间依次存储一个64字节的磁盘分区表,和一个用于标识MBR是否有效的2字节的模数。
  • 主引导记录MBR中包含一个实现引导加载功能的程序——Boot Loader。由于BIOS只能访问很少量的数据,所以MBR中的引导加载程序其实只是一段初始程序的加载程序 Initial Program Loader,IPL,这段程序唯一的功能就是定位并加载 Boot Loader 的主体程序。
  • 加载引导分为两个阶段
  • 第一阶段,BIOS引导IPL获取 Boot Loader 主题程序在磁盘中的位置,此时系统启动的控制权由BIOS转移到MBR;
  • 第二阶段,Boot Loader 主题程序与操作系统对应的内核,定位到内核文件所在的位置,并将其加载到计算机内存中,此时系统启动的控制权由MBR转移到内核。

3️⃣加载内核

  • 内核是操作系统的核心,Linux操作系统的内核就是Linux。内核以一种自解压的压缩格式压缩,它与一个初始化的内存映像和存储设备映像表一起存储在 /boot 目录下。
  • 在选定的内核被加载到内存中并开始执行前需要先从压缩格式中解压,一旦内核自解压完成,systemd进程(也就是早期版本中的init进程)便被启动。
  • systemd进程的启动标识着引导过程的结束,也标识着启动过程的开始。在系统启动之初,由于系统中没有除systemd之外的程序执行,系统初始化工作尚未完成,因此计算机不能执行任何和用户相关的功能性工作。
  • 系统初始化需要进行挂载文件系统、启动后台服务等等一系列工作,这些初始化工作全部由systemd进程完成。对于用户来说,系统初始化完成后,系统才算正式启动。

4️⃣附:init进程启动级别

系统启动流程:

BIOS → MBR → boot loader → kernel → init

BIOS → MBR → GRUB → kernel → init

  • BIOS:找到启动介质 - 移动硬盘、磁盘、U盘等,找到启动介质后读取其中的第一个扇区;
  • MBR:第一个扇区(512字节)称为主引导记录。主引导记录分为3部分,前446byte是引导信息,后64byte是磁盘分区信息,最后2byte是标志位。MBR的作用是找到 boot loader 。
  • GRUP:是一种 boot loader ,用于加载kernel核心信息。
  • kernel:内核。
  • init:内核的第一个程序,分为7个启动级别。

查看启动级别配置文件

cat /etc/inittab  #查看启动级别相关的配置文件

inti命令可以切换系统的启动级别

inti 0/1/2/3/4/5/6
  • 0表示关机(不能设置为开机默认启动级别)
  • 1表示单用户
  • 2表示多用户(无网络的3级别)
  • 3多用户(命令行模式,字符终端)
  • 4用于开发
  • 5图形界面,默认启动方式
  • 6reboot(不能设置为开机默认启动级别)
runlevel   #查看系统的启动级别


相关实践学习
CentOS 8迁移Anolis OS 8
Anolis OS 8在做出差异性开发同时,在生态上和依赖管理上保持跟CentOS 8.x兼容,本文为您介绍如何通过AOMS迁移工具实现CentOS 8.x到Anolis OS 8的迁移。
目录
打赏
0
0
0
0
13
分享
相关文章
|
12天前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
52 23
Linux系统之whereis命令的基本使用
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
56 10
|
2月前
|
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
246 78
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
121 23
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
137 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
149 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
77 7
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
76 6
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
106 15
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等