Linux 启动流程笔记
系统目录结构
/boot
目录内容
[root@web01 boot]# ls
config-4.18.0-305.3.1.el8.x86_64 initramfs-4.18.0-305.3.1.el8.x86_64kdump.img
efi loader
grub2 System.map-4.18.0-305.3.1.el8.x86_64
initramfs-0-rescue-4396f3518626409aa9770c4df8d21cb2.img vmlinuz-0-rescue-4396f3518626409aa9770c4df8d21cb2
initramfs-4.18.0-305.3.1.el8.x86_64.img vmlinuz-4.18.0-305.3.1.el8.x86_64
initramfs-4.18.0-305.3.1.el8.x86_64.img
: 驱动文件vmlinuz-4.18.0-305.3.1.el8.x86_64
: 内核文件
系统内核版本和 CPU 信息
shell复制代码[root@web01 boot]# uname -r
4.18.0-305.3.1.el8.x86_64
shell复制代码[root@web01 boot]# cat /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves arat umip pku ospke gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear flush_l1d arch_capabilities
网络配置及内核参数
shell复制代码# 是否开启 IP 包转发功能
[root@web11 ipv4]# cat /proc/sys/net/ipv4/ip_forward
1: 开启
0: 关闭
# 是否忽略 ICMP 协议 (禁ping)
[root@web11 ipv4]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1: 开启
0: 关闭
# /etc/sysctl.conf 配置
[root@web11 ~]# cat /etc/sysctl.conf
vm.dirty_expire_centisecs = 4500
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_all = 1
# 修改后立即生效
[root@web11 ~]# sysctl -p
Linux 系统启动流程
1. BIOS / UEFI 阶段
- 硬件检测:系统通电后,BIOS 或 UEFI 固件进行自检,确保硬件正常。
- 选择引导设备:BIOS/UEFI 会选择启动设备(如硬盘、U盘、网络等)。
2. 引导加载程序 (GRUB2)
-
加载
/boot
目录到根分区:GRUB2 引导程序加载启动配置。
set root='hd0,msdos1'
search --no-floppy --fs-uuid --set=root ...
:根据 UUID 查找并设置根分区。
-
加载内核:GRUB2 加载 Linux 内核并将控制权交给内核。
3. 内核加载与初始化
-
Linux 内核启动:内核开始初始化硬件、内存、设备驱动等。
-
初始化内存文件系统 (
initramfs
):内核挂载初始的
initramfs
文件系统,提供必要的驱动和文件系统支持。
- 磁盘、文件系统挂载、LVM、RAID 等初始化操作。
-
挂载根文件系统:内核根据
/etc/fstab
配置挂载实际的根文件系统/
。
4. systemd
启动
-
systemd
启动并初始化系统:内核初始化后,
systemd
作为系统初始化程序接管,管理系统服务的启动。
- 挂载所有文件系统。
- 启动默认目标单元 (
graphical.target
或multi-user.target
)。 - 启动系统服务,如网络服务、SSH、数据库等。
5. 目标单元 (Target Units)
CentOS 8 使用目标单元来管理系统启动过程。常见的目标包括:
multi-user.target
:无图形界面的默认目标,相当于传统的运行级别 3。graphical.target
:带图形界面的目标,依赖于multi-user.target
。basic.target
:基础环境,通常在multi-user.target
前启动。reboot.target
:系统重启目标。halt.target
:系统关闭目标。
6. 启动服务
-
systemd
启动服务:根据目标单元的依赖关系,
systemd
启动各种服务。
dbus.service
:D-Bus 消息总线服务,支持进程间通信。sshd.service
:SSH 服务,允许远程登录。firewalld.service
:防火墙服务,管理网络访问。NetworkManager.service
:网络管理服务。gnome-shell.service
或lightdm.service
:图形界面相关服务。
7. 用户登录
- 登录管理器:如果启动了图形界面,登录管理器(如 GDM、LightDM)将显示登录界面,用户输入用户名和密码。
- 启动用户会话:用户登录后,系统启动用户的桌面会话,加载环境并启动相应应用。
8. 系统准备就绪
- 当所有服务和进程都成功启动并且没有错误时,系统进入正常工作状态,用户可以开始使用系统。
CentOS 8 启动过程示例
GRUB 配置文件
/etc/default/grub
文件:
shell复制代码GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
- 更新 GRUB 配置:
shell复制代码[root@web01 grub2]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done
- 安装或修复 GRUB 引导程序:
shell
复制代码
[root@web01 grub2]# grub2-install /dev/sda
加载内核与驱动
- 加载内核文件:内核加载后开始初始化。
- 查看已加载模块:
[root@web01 grub2]# lsmod
- 查看模块详细信息:
[root@web01 grub2]# modinfo kvm
标签:target,GRUB,启动,流程,内核,linux,root,加载 From: https://www.cnblogs.com/cloudwangsa/p/18555587