linux启动流程

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.targetmulti-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.servicelightdm.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

posted @   pro111  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示