Linux启动流程和内核管理自我总结
1 启动流程

1. 加载 BIOS 的硬件信息,获取第一个启动设备
2. 读取第一个启动设备 MBR 的引导加载程序 (grub) 的启动信息
3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4. 核心执行 init 程序,并获取默认的运行信息
5. init 程序执行 / etc / rc.d / rc.sysinit 文件,重新挂载根文件系统
6. 启动核心的外挂模块
7. init 执行运行的各个批处理文件 (scripts)
8. init 执行 / etc / rc.d / rc.local
9. 执行 / bin / login 程序,等待用户登录
10 . 登录之后开始以 Shell 控制主机
2 BIOS
Basic Input and Output System (基本输入输出系统)
是一个程序,其代码存储在主板的一颗 ROM 存储芯片上, ROM 是只能读不能写的。
是一个程序,其代码存储在主板的一颗 ROM 存储芯片上, ROM 是只能读不能写的。
当修改了 BIOS 里面的某些设置时,这个修改的数据是存储在另外一颗 RAM 存储芯片上, RAM 掉电后数据就会消失,所以主板上有一颗纽扣电池来给这个 RAM 供电,当这颗纽扣电池没电了, BIOS 里面的设置项,就又恢复成出厂设置了。
注: BIOS 程序无法更改,但是里面的一些属性数据是可以调整的。
3 内部细节
POST Power-On-Self-Test (加电自检)
负责完成对 CPU 、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测。
ROM Read-Only Memory (只读存储)
其存储的数据一般在硬件出厂时就写入固定了,断电数据也不会消失又称为固定存储器。
RAM Random Access Memory (随机存储)
随机取存,是指通电后,随时可在任意位置单元存取数据信息,不过断电后内部信息也随之消失。
4 自举程序
对于一台计算机来讲,通电后第一件事就是运行 BIOS 程序, BIOS 程序最先做的,就是对硬件执
行 POST (加电自检),如果硬件自检不通过,会显示相应的错误,还会有相应的蜂鸣音。
5 启动加载器
定位:一台主机上允许安装多个操作系统,如何确定启动哪个系统,这就是bootloader的作用。
Bootloader 叫引导加载器,引导程序。是个独立的软件,主要作用就是引导操作系统启动。
Grand 统一启动加载程序 , 又称多系统引导管理器。是 Linux 系统中最为常见的 Bootloader 之一。
6 引导程序
系统的启动引导方式有两种,分别是 BIOS 模式和 UEFI 模式:
BIOS (基本输入输出系统)是一种传统的启动模式。
启动速度慢 : 需要依次初始化各个硬件设备,如硬盘、内存和显示器等,启动慢
硬盘容量限制: 只支持传统的 MBR 磁盘分区格式,这种只能处理容量小于 2TB 的硬盘。
功能有限: 图形界面相对简单,设置选项有限,且不支持网络启动等高级功能。
UEFI (统一可扩展固件接口)它在 BIOS 的基础上进行了改进,可以看作是 BIOS 的升级版。
支持大容量硬盘: UEFI 基于 GPT (全局唯一标识分区表)分区结构,支持超过 2TB 的硬盘容量。
启动速度快 功能丰富 兼容性好
7 磁盘分区
0 扇区, 1 - 2047 扇区, 2048 扇区 + 的分段在硬盘的结构和启动过程中扮演着重要的角色。
0 磁道 0 扇区( 512 字节) :
MBR 是 主引导记录 的简称,它是硬盘的第一个扇区( 512 字节)的内容,包含了硬盘的 :
主引导程序 [ 446 字节 ] : Main Boot Loader
分区表 [ 64 字节 ] : Disk Partition Table
分区结束标志 [ 2 字节 ] : 55 AA,
1 - 2047 :
紧随主引导扇区之后,直到第 2047 扇区结束。
该区域可能包含一些额外的引导信息或用于特定的硬件或软件需求。
为了确保主引导扇区的完整性和安全性,防止因数据写入而破坏主引导扇区的内容。
2048 +
是实际数据存储的开始位置。 就是我们的操作系统。
8 bootloader 的分段存放
第一阶段 :存储在 0 磁道 0 扇区的前 446 字节空间内
第二阶段 :1 扇区到 2047 扇区,使用这个过渡阶段来提供更高级的磁盘访问功能,例如支持不同的文件系统。它可以帮助 Stage 1 访问存储在磁盘分区中的更大的引导程序文件。存储2 阶段的文件系统驱动,保证 2nd 中的文件可读
第三阶段 :hd(0.0)/grub/grub.conf
分段作用:
0 扇区,通过分区表,获取系统盘在哪一个分区
1 - 2047 扇区,常见文件系统驱动,通过文件系统环境,获取读取 OS 文件的能力。
2048 扇区 + ,根据配置,加载 OS 系统的 boot 启动文件信息,然后进行系统启动。
8 Grub功能
GRUB ( GRand Unified Bootloader )是一个启动加载程序,用于启动操作系统。
目前 grub 的配置文件主要有两种样式:
grub1 的配置文件在 / boot / grub / grub.conf
grub2 的配置文件在 / boot / grub2 / grub.cfg
9 系统启动
Linux 的运行级别( Runlevels )是一种定义系统操作模式的机制,用于控制系统启动后的行为和服务的可用性。不同的运行级别对应不同的系统状态,例如多用户模式、单用户模式、图形界面模式等。

查看运行的级别
cat /etc/inittab rocky系列
systemctl get-default ubuntu系列
who -r
runlevel
切换运行级别
方法 1 : init N
方法 2 : systemctl set-default xx.target
文件方式: / etc / inittab rocky系列
10 系统初始化
rocky9为例:
systemd 执行默认 target 配置,配置文件 / etc / systemd / system / default .target
systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统
systemd 启动 multi-user.target 下的本机与服务器服务
systemd 执行 multi-user.target 下的 / etc / rc.d / rc.local
systemd 执行 multi-user.target 下的 getty.target 及登录服务
systemd 执行 graphical 需要的服务
11 ubuntu解决grub隐藏
root@ubuntu24:~ # cat /etc/default/grub
GRUB_DEFAULT = 0
GRUB_TIMEOUT_STYLE = timeout # 改成 timeout
GRUB_TIMEOUT = 10 # 大于 0
root@ubuntu24:~ # update-grub
12 服务管理定制服务文件
服务位置
系统级服务:/etc/systemd/system/ 或 /lib/systemd/system/
用户级服务:/usr/lib/systemd/system
service unit file文件通常由三部分组成 格式如下

实例:定制服务文件 vim /lib/systemd/system/hello.service
[Unit]
Description=Hello World [Service]
TimeoutStartSec=0
ExecStart=/bin/sh -c "while true; do echo Hello World; sleep 1; done"
ExecStop=/bin/kill sh[Install]
WantedBy=multi-user.target
13 常见模块命令
lsmod
- 查看已加载的模块
modinfo
- 查看模块详细信息
insmod
- 手动加载模块(低级命令)
modprobe
- 智能加载模块(高级命令)
rmmod
- 卸载模块
全局配置:/etc/modules
(旧版)或/etc/modules-load.d/
目录(新版)
14 内核参数设置
临时修改内核参数
sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forward 查看
cat /proc/sys/net/ipv4/ip_forward 查看
写配置文件,永久有效
vim /etc/sysctl.conf
.... .
net.ipv4.ip_forward = 0
r sysctl -p 重载生效