linux开机引导

开机引导过程

第一阶段:硬件引导启动

打开电源

BIOS

  • POST初始化硬件:cpu,内存,显卡,io设备等
  • 确定启动设备:硬盘,光盘,网络,U盘。

当以硬盘为启动项时,读取第一个扇区(MBR,512字节)到内存。

MBR

MBR的512字节分为三个部分:

  • 引导加载程序(Boot Loader)446字节:引导加载程序负责引导操作系统,它通常会读取分区表,找到活动(active)分区,并加载该分区的引导扇区,从而启动操作系统。其中包含了GRUB程序的一部分。
  • 分区表(Partition Table)64字节:分区表描述了硬盘上的分区布局,包括分区的起始位置、大小和分区类型等信息。每个主分区或扩展分区都有一个16字节的分区表项来描述。
  • 结束标志 2字节:MBR的最后两个字节用于存储结束标志 0x55AA,以标识MBR的结尾。

总结:运行放在MBR扇区里的启动 GRUB引导程序。

第二阶段:GRUB2启动引导(gran utified bootloader)

grud是grand utified bootioader的简称,本质就是一个迷你的操作系统,它负责加载真正的操作系统,linux将bootloader的程序码执行与设置值载入分成两个阶段(stage)来执行:
Stage1:执行bootloader主程序:第一阶段为执行bootloader的主程序,这个主程序必须要被安装在开机区,亦即是mbr或者是bootsector。但是,因为mbr实在太小了,所以,mbr或bootsector通常仅安装boot loader 的最小主程序,并没有安装loader 的相关配置文件;
Stage2:主程序载入配置文件:第二阶段为通过bootloader载入所有配置文件与相关的环境参数文件(包括文件系统定义与主要配置文件grub.cfg),一般来说,配置文件都在/boot下面。

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。

第三阶段:内核引导

/boot/vmlinuz:

这是Linux内核的压缩形式。内核是操作系统的核心部分,负责管理系统的资源和提供各种系统服务。vmlinuz文件包含了Linux内核的可执行代码,它是系统启动时加载到内存中的部分,负责启动并运行Linux操作系统。
在启动过程中,Boot Loader(如GRUB)会加载vmlinuz文件到内存,并将控制权交给它,以启动Linux操作系统。

/boot/initramfs:

initramfs(Initial RAM File System)是一个临时的根文件系统,它被加载到内存中,并在系统引导过程中用来提供必要的设备驱动程序和工具,以便在正式的根文件系统(如/)被挂载之前完成系统初始化过程。
initramfs通常包含了用于加载真正的根文件系统所需的设备驱动程序、文件系统模块、工具和其他必要的文件。它的主要目的是在引导过程中提供必要的支持,以便正确地挂载并启动真正的根文件系统。
一旦真正的根文件系统被成功挂载,initramfs就会被卸载并释放内存。

内核初始化

总结:把内核和镜像文件系统加载到内存中 可以使用

第四阶段:系统初始化

/uer/lib/systemd/system

systemd 进程开始执行各种单元文件中指定的任务,包括加载并启动其他系统服务、挂载文件系统、设置系统时间等。

第五阶段:启动终端

一旦系统初始化完成,通常会显示登录界面,等待用户登录。用户登录后,系统会启动用户环境并提供相应的服务。

 

posted @ 2024-04-12 17:38  hx_ky36  阅读(21)  评论(0编辑  收藏  举报