Linux体系—1.启动流程

基本概念

Linux内核功能

- 进程管理
- 网络管理
- IO设备管理
- selinux
- 文件系统
- 驱动管理

内核设计流派

- 单内核 内核和功能集成了                          linux  
- 微内核 内核核心+外部功能模块(.ko-kernel object)  windows

- linux广发采用了未内核的设计思想,即在内核设计插槽,插入功能模块

Linux核心和模块

- 核心 /boot/vmlinuz-version
- 模块 /lib/modules/version/kernel/

 

启动过程

- 第一步:POST(power on and self test 加电自检)
| CMOS芯片--BIOS程序
| BIOS(basic input and output system)
| - 让系统进行自检
| - 设置系统启动项(boot sequence),指定从哪个设备启动系统
|   会从指定的设备上找MBR,主要是需要Bootloader

- 第二步:根据bootloader来加载磁盘上的内核文件(vmlinuz)
| vmlinuz:内核
| initrd:临时文件系统
| - centos5:initrd,模拟成一块磁盘
| - centos6:initramfs,模拟是一个文件系统
| 通过initrd可以让内核获取基本的启动程序,然后内核就开始重新挂载根文件系统到真正磁盘,挂载过程是只读方式。

# kernel使用磁盘、文件系统、硬件等都需要其相应的驱动
# 方式1:在编译内核的时候,将所有可能用到的驱动都编译进去(不可能完成的任务)
# 方式2:基于一个临时的小系统,在这个小系统中包含了所需要基本的驱动程序(initrd)

- 第三步:在文件系统中找到并启动第一个程序(init)
| centos5:init程序;/etc/init.d/的sysV脚本,在启动时这些脚本会依次启动,启动过程慢,串行。
| centos6:upstart;/etc/init.d/的sysV脚本,用近似于并行启动
| centos7:systemd;/usr/lib/systemd/system。不是真的并行都启动了,理解为唤醒
| # systemd本身就是解释器,凌驾于系统之上。
| init功能:完成系统初始化(1.将跟重新挂载为读写。2.将设置为自启动程序启动起来。。。)

# post→bios→boot sequence→mbr(bootloader)→/boot/grub/grub.conf→vmlinuz,initrd→识别和挂载跟文件系统(只读)→init→/etc/init/*.conf,/etc/rc.sysinit,/etc/rc.d/rcn.d/S* K*)


补充

- /etc/inittab 启动脚本
- /etc/rc.d/rc.sysinit 重要脚本

 

bootloader

1、MBR

- BOOTLOADER:前446字节

- DPT:64字节

- MAGIC NUMBER:2字节

2、开机引导程序

- bootloader就是开机引导程序

- LILO(linux loader)

- GRUB(grand unified bootloader)
| centos6 grub0.x=>称为grub1
| centos7 grub1.x=>称为grub2

3、GRUB

- 第一部分:stage1 位于MBR中的bootloader
| 功能:实现从磁盘上找到stage2中的配置文件

- 第二部分:stage1.5 位于MBR之后的扇区中,作用帮助bootloader来识别磁盘
| 功能:作用帮助bootloader来识别磁盘文件系统

- 第三部分:state2 位于磁盘文件系统上/boot/grub/grub.conf
| 功能1:提供一个菜单,让用户选择要使用的内核
| 功能2:指引找到磁盘上的vmlinuz和initrd文件
| 功能3:提供一种保护机制

- 关于保护机制
| 编辑菜单认证机制
| 当启动某个内核的时候做认证

4、grub识别磁盘的方式

- hd#,# 前面表示的磁盘编号,后面表示的分区编号,从0开始编号
- hd0,0 表示第一个磁盘的第一个分区

- 将boot目录识别为根分区

5、grub命令

- 在启动选择界面按c进入grub命令行界面

grub> find (hd0,0)/vmli(tab补全)  // 在根分区下查看内核

grub> root (hd0,0)                // 将第一个分区设定为根分区

grub> boot        // 按照本次的设定来启动系统
posted @   梵高de画笔  阅读(57)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示