干货满满~Linux系统启动(内含名词解析)

    科技2025-04-18  6

    Linux系统启动过程

    一、启动过程二、名词解释

    一、启动过程

    1、加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置 2、读取并执行第一个开机装置内MBR的bootLoader 3、依据 bootloader的设定加载 Kernel 4、Kernel开始侦测硬件与加载驱动程序 (初始化Kernel) 5、把Kernel挂载到根文件系统上 6、启动完成

    二、名词解释

    BIOS 全称"Basic Input Output System",中文名称是"基本输入输出系统"。它是一组固化到计算机内主板上一个ROM芯片上的程序,包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等。

    MBR 全称“MasterBoot Record” ,中文名称是“主引导分区”,是启动设备的第一个扇区,安装bootLoader的地方。

    bootLoader 中文名称为“引导装载程序”,它是系统加电后运行的第一段软件代码,在操作系统内核运行之前运行的一段裸机程序,负责初始化硬件设备,准备好软件环境,最后调用操作系统内核。

    bootLoader严重地依赖于硬件而实现的,所以不同的架构有着不同的bootLoader,常见的bootLoader有uboot,LILO,grub等

    Kernel侦测硬件 当我们借由bootLoader的管理而开始读取内核文件后,接下来Linux就会将内核解压到主存储器当中,并且利用内核的功能,开始测试与驱动各个周边装置,包括储存装置、CPU、网络卡、声卡等等。 此时 Linux 核心会以自己的功能重新侦测一次硬件,而不一定会使用 BIOS 侦测到的硬件信息喔!

    挂载根文件系统 由于核心模块(驱动程序)需要放置到磁盘根目录内, 因此在开机的过程中内核必须要挂载根目录,这样才能够读取核心模块提供加载驱动程序的功能。

    启动过程流程图

    问:

    为什么开机不能直接执行kernel,把kernel放在启动设备的第一个扇区(即MBR所在的地方),把所有事情都交给kernel做呢?

    其实它的思想类似于一个板级支持包:kernel执行的时候需要具备一个基本的硬件运行条件,而这个环境的初始化(最底层的一些硬件初始化、硬件信息设定)需要bootloader来完成,也许这样kernel的设计才能保持一定的一致性。

    Processed: 0.012, SQL: 8