Linux 系统开机启动流程

可能没有完全理解,后期整理完Linux的内容,应该理解会深入一些,试着用更简洁的方式和图形来记录,以及一些概念的完善

2023-12-14

一、开机流程

BIOS + MBR/GPT

  1. 加载 BIOS 的硬件信息与进行自检,并依据设定取得第一个可开机(可引导)的装置
  2. 读取并执行第一个开机装置内 MBR(Master Boot Record) 的 boot Loader (亦即是 grub2, spfdisk 等程序)
  3. 依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序
  4. 在硬件驱动成功后,Kernel 会主动呼叫 systemd 程序,并以 default.target 流程开机

注意:

如果开机使用类似 grub 的开机管理程序,要额外分区出一个『 BIOS boot 』的分区,才能放置其他开机过程所需的程序代码,Centos 中通常占用2MB 左右,如下sad1分区,与系统的/boot分区不同

bash 复制代码
# lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                     8:0    0  100G  0 disk 
|-sda1                  8:1    0    1M  0 part 
|-sda2                  8:2    0  512M  0 part /boot
`-sda3                  8:3    0 99.5G  0 part 

UEFI + GPT

1、BIOS 无法识别GPT ,能识别兼容分区时才能读取到GPT磁盘分区

2、BIOS 通过汇编语言开发,UEFI 通过C语言开发能实现更多可能

3、UEFI 开机会比BIOS 快,只需要加载驱动程序即可控制操作

4、硬件资源的管理使用轮询 (polling) 的方式来管理,比BIOS 的CPU中断要慢一些

5、UEFI 并不能提供完整的快取功能,因此执行效率也没有办法提升

6、加载所有的 UEFI 驱动程序之后, 系统会开启一个类似操作系统的 shell 环境

7、UEFI 加入了一个所谓的安全启动 (secure boot) 机制,不通过验证就无法启动

8、虽然 UEFI 可以直接取得 GPT 的分区表,不过最好依旧拥有 BIOS boot 的分区支持

9、为了与 windows 兼容,并且提供其他第三方厂商所使用的 UEFI 应用程序储存的空间必须要格式化一个 vfat 的文件系统, 大约提供 512MB 到 1G 左右的容量

二、服务启动流程

RHEL7 启动流程简介:

  1. Kernel呼叫systemd服务
  2. systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统
  3. systemd 启动 multi-user.target 下的本机与服务器服务
  4. systemd 执行 multi-user.target 下的 /etc/rc.d/rc.local 文件
  5. systemd 执行 multi-user.target 下的 getty.target 及登入服务
  6. systemd 执行 graphical (图形模式)需要的服务
bash 复制代码
# 启动流程查看 (此方式适用于查看其它服务启动流程):
systemctl list-dependencies graphical.target
# 查看系统启动日志
more /var/log/boot.log
# 查看服务列表以及状态 failed的需要注意,可能会影响系统启动
systemctl

三、一些概念

Boot loader(开机管理程序):

描述:

1、操作系统安装在 MBR 上面的一套软件

2、由于MBR 仅提供446bytes ,开机管理程序是非常小而美的

3、开机管理程序除了可以安装在 MBR 之外,还可以安装在每个分区的启动扇区(boot sector)

作用:

1、提供选单:用户可以选择不同的开机项目,这也是多重引导的重要功能

2、载入核心文件:直接指向可开机的程序区段来开始操作系统

3、转交其他 loader:将开机管理功能转交给其他 loader 负责

总结:

1、每个分区都可以拥有自己的启动扇区(boot sector)

2、实际可开机的核心文件是放置到各分区内的

3、loader 只会认识自己的系统槽内的可开机核心文件,以及其他 loader 而已

4、loader 可直接指向或者是间接将管理权转交给另一个管理程序

其他

1、Linux 在安装的时候,你可以选择将开机管理程序安装在 MBR 或各别分区的启动扇区,Linux 的loader 可以手动设定

2、Windows 在安装的时候,安装程序会主动的覆盖掉 MBR 以及自己所在分区的启动扇区,且不能手动选择

3、所以一般多系统,先安装Windows 再安装Linux ,避免Windows覆盖MBR

相关推荐
AlfredZhao1 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐2 天前
Linux内存扩容指南
linux
zylyehuo2 天前
Linux 彻底且安全地删除文件
linux
用户805533698033 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297913 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
乘云数字DATABUFF3 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Web3探索者5 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo5 天前
Linux系统中网线与USB网络共享冲突
linux
荣--5 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森5 天前
动手实战学 Docker — 从零到集群编排完全指南
运维