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

linux启动流程

时间:2024-11-19 20:56:14浏览次数: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/18555587

相关文章

  • Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版
    OracleLinux9.5正式版发布-Oracle提供支持RHEL兼容发行版OracleLinuxwithUnbreakableEnterpriseKernel(UEK)&RedHatcompatiblekernel(RHCK)请访问原文链接:https://sysin.org/blog/oracle-linux-9/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org......
  • Linux基础命令一
    一、基本命令1.1man手册基本使用man具体命令空格翻页,回车下一页q退出man内容分区1:可执行程序或shell命令2:系统调用3:库调用4:特殊文件5:文件格式与约定6:游戏7:概览、约定及杂项8:超级用户和系统管理员命令9:内核例程可以使用man7hostname,指定看对应分区的内......
  • 【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
    Linux学习笔记:https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482前言:在多任务操作系统中,进程优先级是影响任务调度的重要因素之一。操作系统通过设置不同的优先级来控制进程对CPU的使用权,从而实现资源的高效利用和任务的公平分配。本文......
  • Linux线程退出、资源回收、资源清理的方法
    参考 Linux线程退出、资源回收、资源清理的方法_linux线程退出会释放哪些资源-CSDN博客 首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题。1、子线程创建时从父线程copy出来的栈内存;线程退出有多种方式,如return,pthread_exit,pthread_cancel等;线......
  • conda linux 管理python 环境
    一、conda是什么?Conda是一个开源的软件包管理系统和环境管理系统,用于在不同的操作系统上安装、运行和管理多个软件包和环境。它可以用于管理Python软件包和其他编程语言的软件包,具有自动解决依赖关系、创建独立环境、轻松切换环境等功能。Conda提供了一个命令行界面和一个图形界......
  • Linux权限深入
    Linux是一个多用户、多任务的操作系统,其权限管理系统是保障系统安全性的重要组成部分。通过合理的权限设置,Linux能有效地控制用户对文件和目录的访问,防止恶意操作。 1.Linux权限基础1)文件权限概述Linux系统中每个文件或目录都与三组权限相关。所有者(Owner):文件的创建......
  • Linux系统学习笔记:第一天
    Linux:第一天笔记引言为什么选择LinuxLinux是一个操作系统,开源的,免费的,是一个基于文件的操作系统,所有的一切都是针对文件进行的。内部是基于一个控制器体积一般比较小(决定了嵌入式产品,它的硬件资源比较紧缺)对功耗的要求特定的应用越来越智能化Linux的指令起步......
  • VMware无法启动/VMware和wsl冲突问题/VMware与Hyper-V冲突问题
    0前言第二次遇到这个问题,原因是因为我在电脑上下载了WSL。原因虚拟化技术依赖于底层硬件(如IntelVT-x或AMD-V)的支持,而不是依赖于操作系统。VMware使用的是VMware自身的虚拟化技术,而WSL则依赖于Windows自身的的Hyper-V或其他内建虚拟化技术。虽然用的虚拟化机制不一样......
  • vmware centos7.9虚拟机死机无法正常启动
    【问题】启动centos7.9虚拟机出现Generating"/run/initramfs/rdsosreport.txt"【原因】服务器卡死,经理强制关机重启导致【解决】1.使用命令ls/dev/mapper查询出/dev/mapper目录下的文件,查看后缀为-root的文件ls/dev/mapper2.查出centos-rootcentos-swapcontrol三个......
  • 【搬运】Linux Command Syntax – Arguments & Options Explained
    本文摘自:https://thenerd.academy/linux-command-syntax-arguments-options-explained/ ThislessonisallabouttheLinuxcommandsyntax!We’regoingtoexplorehowtocustomizethebehaviorofourcommandsbyusingargumentsandoptions.So,fastenyour......