开机流程

简述

开机BIOS自建
MBR引导
grub引导菜单
加载内核kernel
启动第一个进程
centos5.x 6.x  init
centos7.x      systemd
麒麟           systemd
unbuntu        init
执行运行级别对应数字下的脚本
进入登录

详述

一、固件初始化

BIOS/UEFI
当你按下电源键后,首先行动的是主板上的​​固件​​,它可能是传统的 ​​BIOS​​,也可能是更现代的 ​​UEFI​​。
​​核心任务​​:进行上电自检,检测CPU、内存、硬盘等关键硬件是否正常工作。然后,它会根据预设的启动顺序(如硬盘、U盘、光盘)来寻找可引导的设备。
​​关键区别​​:
​​BIOS​​:会读取硬盘的第一个扇区(512字节),即​​主引导记录​​。如果该扇区的最后两个字节是魔数 0x55AA,BIOS便认为它是有效的MBR,随后将其加载到内存地址 0x7C00处执行。
​​UEFI​​:则直接从硬盘上一个特殊的​​EFI系统分区​​中读取并执行扩展名为(.efi)的引导程序,如grubx64.efi。

二、引导程序

GRUB2
控制权交给​​GRUB2​​后,它会显示一个​​引导菜单​​,让你可以选择要启动的操作系统或不同的内核版本 。
​​核心任务​​:GRUB2的主要职责是定位并加载你选择的​​Linux内核映像​​(通常是/boot/目录下的 vmlinuz-文件)以及一个名为 ​​initramfs​​ 的临时根文件系统到内存中。
​​initramfs 的作用​​:这个临时的文件系统包含了启动早期所必需的核心模块(例如用于访问真正根文件系统的硬盘控制器驱动、文件系统驱动等)。内核需要这些模块才能成功挂载真正的根文件系统。

三、内核初始化

内核被加载到内存后,会进行一系列复杂的初始化工作:
​​解压与架构初始化​​:如果是压缩的内核映像,会先解压。然后进行CPU架构相关的底层初始化,如设置内存分页。
​​核心初始化​​:调用 start_kernel函数,初始化系统调度器、内存管理、中断处理、设备驱动等所有核心子系统。
​​挂载根文件系统​​:内核会使用initramfs中的驱动和工具,挂载真正的根文件系统。之后,它会卸载initramfs并释放资源。

​​四、启动第一个用户进程​​

内核最后会尝试启动一个位于用户空间的初始化程序,现代Linux系统中通常是 ​​/sbin/init​​。至此,内核的启动任务完成,控制权完全交给用户空间。

五、用户空间初始化

init vs systemd
这是启动流程的最后一个阶段,也是不同Linux发行版和版本差异最大的地方,如CentOS5或6使用init,而CentOS7、麒麟、Ubuntu(新版本)使用 systemd。
​​对于 init(如 CentOS 5.x/6.x)​​:
系统会根据 ​​/etc/inittab​​ 文件中指定的​​默认运行级别​​,进入对应的目录(如 /etc/rc.d/rc3.d/),然后按顺序依次启动(S开头)或关闭(K开头)其中的服务脚本。
​​对于 systemd(如 CentOS 7.x、麒麟、新版本Ubuntu)​​:
systemd作为一号进程,会并行启动服务,大大加快启动速度。它通过读取.target​​文件(如 graphical.target代表图形界面模式)来启动一系列依赖的服务。
特性 ​System V init​systemd​
运行理念​ 顺序、串行启动并行启动,依赖关系管理
管理方式通过​​运行级别​定义系统状态通过target​概念组织服务
配置目录 /etc/rc.d/rc[0-6].d//usr/lib/systemd/system/
/etc/systemd/system/
主要命令service
chkconfig
systemctl

五、登录系统

当所有针对指定运行级别或target的服务启动完毕后,系统会启动​​getty​​或​​登录管理器​​,你就能看到熟悉的​​登录界面​​,输入用户名和密码后,就完成了整个启动过程。
孩儿立志出乡关,学不成名誓不还。埋骨何须桑梓地,人生无处不青山。

评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇