小c学Linux(11)--开机系统启动流程

本文详细介绍了计算机从开机到操作系统启动的全过程,包括POST加电自检、BIOS启动、MBR加载、内核启动及系统初始化等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机开机后,是怎么一步一步的初始化,然后将系统启动起来,提供一个界面然我们能够操作应用程序,或者是操作shell跟内核进行交互呢?

POST(Power On Self Test)

post加电自检:

  1. 计算机任何操作都是由CPU执行指令完成的
  2. 而CPU是一堆硬件,想让它跑起来进行自检,得给他指令,这个指令在ROM
  3. CPU必须能够找到存放在ROM中的指令
  4. 谁给CPU一个指令:“去ROM中某某位置加载开机自检指令“呢?
  5. CPU生产商生产时就指定了这个去ROM的特定位置找开机自检的指令
  6. ROM生产商根据CPU默认设置的特定地址,默认在生产ROM时给此特定位置存储开机自检指令

所以,整个POST加电自检过程就是:计算机开机一通电,就自寻ROM特定位置加载开机自检指令,而后对电脑硬件设备进行自检。

BIOS(Basic Input Output System)

基本输入输出系统bios,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。如果磁盘分区1,2,3,4分别有1,2,3,4个操作系统,默认加载磁盘1,2,3,4的bootloader.如果1坏了,则必须调整为2,1,3,4让2为第一个boot sequence。

MBR(Main Boot Record)

主引导记录mbr,是位于磁盘最前边的一段引导(Loader)代码,磁盘的第0扇区。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。

  1. 当加电自检完成后,就要加载内核了,加载内核了再由内核完成整个操作系统的加载。
  2. 从哪儿找内核?从外部设备,比如硬盘。
  3. 硬盘是设备,貌似要驱动
  4. 但是驱动硬件设备是靠内核完成的呢,我们还没有加载内核,怎么驱动硬盘设备?
  5. 所以,硬盘不需要内核驱动,硬盘在硬件平台上就能够被找到,能够直接访问
  6. 直接读取硬盘的第0扇区上的主引导记录MBR
    • 446: bootloader 一段引导程序
    • 64:分区表
    • 2:5A
  7. 内核以文件的形式存储在某个分区上,bootloader必须能够正确加载它
  8. 内核以文件的形式存储在分区上,那该分区必须有文件系统,但是操作系统还没启动,bootloader怎么识别这个文件系统
  9. bootloader在系统装到磁盘上时就能够识别vmlinuz所在分区
  10. 通过BIOS里的boot sequence启动顺序可以正确加载我们想要的内核
  11. 任何程序都必须放在内存中执行,内核文件必须存储在基本磁盘分区,不能存储在raid或lvm上,因为bootloader只能识别基本磁盘分区
  12. 这时候,bootloader能够把内核加载到内存了,内核能够自解压,加载到内存之前进行压缩,加载之后进行解压。
  13. bootloader完成任务后,后面交由内核继续完成操作系统的初始化

/sbin/init

操作系统初始化的操作进程,/etc/inittab 和 /etc/init/*.conf是其配置文件

  1. 要执行/sbin/init,内核必须要识别/根分区,找到/sbin目录
  2. 这时候内核要依靠initrd这个文件系统来完成。它是什么东西?它把硬盘模拟成了磁盘,包含了/根、/bin、/sbin等分区,是在安装操作系统时指定和内核vmlinuz一起存储在基本分区上的。
  3. 内核通过initrd能够将/根分区正确挂载到硬盘上
  4. 最后通过执行/sbin/init配置系统初始化环境

最后总结整个操作系统的启动过程就是:POST->BIOS->MBR->kernel->/sbin/init


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值