首页 > 系统相关 >linux启动流程

linux启动流程

时间:2024-11-22 21:08:55浏览次数:1  
标签:target GRUB 启动 流程 内核 linux root 加载

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

标签:target,GRUB,启动,流程,内核,linux,root,加载
From: https://www.cnblogs.com/cloudwangsa/p/18563748

相关文章

  • 【Linux】-学习笔记05
    第一章、系统延迟任务与定时任务1.延迟任务在系统中我们的维护工作大多数时在服务器行对闲置时进行我们需要用延迟任务来解决自动进行的一次性的维护延迟任务时一次性的,不会重复执行当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者在RHEL9中默认系统中......
  • 按键 芯片型号clps711x linux 驱动程序
    /*CirrusLogicCLPS711XKeypaddriverThisprogramisfreesoftware;youcanredistributeitand/ormodifyitunderthetermsoftheGNUGeneralPublicLicenseaspublishedbytheFreeSoftwareFoundation;eitherversion2oftheLicense,or(atyouroptio......
  • Linux: network: tcp: TCP: request_sock_TCP: Possible SYN flooding on port 3868.
    https://blog.csdn.net/qq_36428903/article/details/120923977这个情况也是和上面的情况一样。假如有两个VM(A和B)是互为备份,上面的IP地址是浮动的,假如其中一个VMA出现CPU的使用率太高,导致网络包堆积在网卡/驱动层。此时高可靠性导致浮动IP切换到另一端VMB,同时VM-ACPU使......
  • SELinux知识点
    SELinux软件安全性《关于UNIX的安全》中DennisRitchie提到:“首先要面对的事实是,UNIX的开发者并没有考虑安全问题,单这一点就单会引发大量的漏洞”。主要是因为防火墙通常不具备查杀病毒的能力,只能对数据包过滤,不会拆解数据包,无法确认数据安全安全防护机制访问控制防护:......
  • linux命令 echo 大文件名称,清空文件内容,释放磁盘空间
    linux命令echo大文件名称,清空文件内容,释放磁盘空间echo>1.loglinux命令echo>文件名称在Linux中,echo命令用于向标准输出(通常是终端/屏幕)输出文本,而重定向符号>用于将echo的输出写入文件,如果文件不存在则创建文件。如果文件已存在,则默认情况下会被覆盖。例如,如果你想......
  • 玩酷之家启动U盘制作工具 v10.0 2024.11.18-
    介绍玩酷之家启动U盘制作工具使用起来非常简单,可以帮助用户快速制作出USB启动盘,支持加载多个不同类型的文件启动,还具备了多种启动方式的安装功能,用户可以通过软件将系统备份,满足用户各种U盘启动的需求,启动的速度和拷贝文件的速度一样快,帮助用户节省了很多的时间和精力。软件截图......
  • 构造方法内存图流程分析
    1.内存图分析https://kdocs.cn/l/cuQvFYJirzaR?linkname=150996228省略了方法区。主方法进栈,创建stu变量,有new进堆,开辟空间,设计图有什么,空间就有什么,nameage全部写上,均为默认值,并且this也在里面走完上一步并不会直接把地址给stu,而是还要接着执行后半段,调用带有形参的构造方法......
  • 应急响应靶机——linux1
    载入虚拟机,打开虚拟机,上网获取到密码是defend:登录进去后发现桌面有个“题解”文件夹,里面有两个文件:需要收集以下信息:1、攻击者IP地址2、三个flagsu登录root用户(密码:defend),history命令查看历史命令列表:发现第一个flag:flag{thisismybaby}看到有人添加了执......
  • Linux之PCP工具
    PerformanceCo-Pilot(PCP)PCP是一个开源,分布式,指标收集和分析系统的工具,它包括CPU,内存,磁盘交换,网络,NFS,RPC,文件系统和每个进程统计信息等领域的活动覆盖率。PCP组件PMCD:性能度量收集器守护进程。PMDA:性能度量域代理,插件代理负责一组特定的指标。。多种客户端工具:例如pminf......
  • 【Linux工作记录】 grafana面板添加clickhouse数据源
    登录grafana的ui界面中添加clickhouse数据源发现没有找到clickhouse数据源操作步骤:1、到grafana节点机器中,找到grafana的bin目录2、安装clickhouse数据源插件./grafanaclipluginsinstallgrafana-clickhouse-datasourceError:✗pluginsDir(/var/lib/grafana/plugins)......