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分区不同

# 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 (图形模式)需要的服务
# 启动流程查看 (此方式适用于查看其它服务启动流程):
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

相关推荐

  1. Linux 系统开机启动流程

    2023-12-18 05:58:05       32 阅读
  2. GNU/Linux - 系统启动流程及rcS脚本介绍

    2023-12-18 05:58:05       11 阅读
  3. 05 Linux 内核启动流程

    2023-12-18 05:58:05       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-18 05:58:05       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-18 05:58:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-18 05:58:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-18 05:58:05       18 阅读

热门阅读

  1. 常用登录加密之Shiro与Spring Security的使用对比

    2023-12-18 05:58:05       28 阅读
  2. 大数据之旅-问题反思

    2023-12-18 05:58:05       44 阅读
  3. 复杂指针的声明

    2023-12-18 05:58:05       35 阅读
  4. 安装Docker

    2023-12-18 05:58:05       46 阅读
  5. 测试:Selenium相关问题

    2023-12-18 05:58:05       33 阅读
  6. 【深入pytorch】transforms.functional 梯度流动问题

    2023-12-18 05:58:05       43 阅读
  7. CAD VBA 导出cass扩展数据到excel

    2023-12-18 05:58:05       43 阅读