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

相关推荐
一直会游泳的小猫2 小时前
homebrew
linux·mac·工具·包管理
Agent产品评测局2 小时前
制造业生产调度自动化落地,完整步骤与避坑指南:2026企业级智能体选型与实战全景
运维·人工智能·ai·chatgpt·自动化
寒秋花开曾相惜2 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
狂奔的sherry2 小时前
一次由 mount 引发的 Linux 文件系统“错觉”
linux·运维·服务器
志栋智能2 小时前
超自动化巡检:让合规与审计变得轻松简单
运维·网络·人工智能·自动化
小黑要努力2 小时前
智能音箱遇到的问题(一)
linux·运维·git
好度2 小时前
自动化教程-封装浏览器驱动
运维·自动化
ch3nyuyu3 小时前
静态库和动态库的制作
linux·运维·开发语言
程序员老邢3 小时前
【产品底稿 07】商助慧 Admin 运维模块落地:从 “能跑” 到 “能运维”,3 个页面搞定日常排障
java·运维·经验分享·spring boot·后端
一口Linux3 小时前
Linux C编程 | 从0实现telnet获取程序终端控制权
linux·运维·c语言