当前位置: 首页 > news >正文

深入解析Linux系统启动全流程

LINUX操作系统的引导过程

Linux操作系统的引导过程是指从计算机开机到系统完全启动并进入用户界面的整个序列。这个过程涉及多个阶段,确保硬件初始化、内核加载、系统服务和用户环境的启动。下面我将逐步解释这个过程,以帮助您理解其工作原理。每个阶段都依赖于前一个阶段的成功执行。

1. 硬件启动阶段(BIOS/UEFI阶段)
  • 当计算机通电时,硬件首先执行自检(Power-On Self-Test, POST),检查CPU、内存、存储设备等基本组件是否正常。
  • 接着,系统固件(如传统的BIOS或现代的UEFI)被激活。UEFI是更先进的固件标准,支持更快的启动和安全特性(如Secure Boot)。
  • 固件从预定义的启动设备(如硬盘、SSD或USB)中读取引导信息,并加载第一个引导加载程序(boot loader)。如果使用UEFI,它会直接加载EFI应用程序;在BIOS模式下,它会加载主引导记录(MBR)。
2. 引导加载程序阶段(GRUB或类似工具)
  • 引导加载程序负责加载Linux内核。最常用的工具是GRUB(GRand Unified Bootloader)。
  • GRUB会显示一个菜单(如果有多个操作系统或内核版本),让用户选择启动选项。它读取配置文件(如/boot/grub/grub.cfg),其中包含内核位置和启动参数。
  • GRUB加载内核映像(通常位于/boot/vmlinuz-*)和初始内存盘(initramfs或initrd)。initramfs是一个临时根文件系统,包含启动内核所需的驱动程序和工具(例如,用于访问加密分区或特定硬件)。
  • 例如,GRUB的命令行可能包含参数如$root=/dev/sda1$,指定根文件系统位置。
3. 内核启动阶段
  • Linux内核被加载到内存中,并开始初始化。内核解压缩自身,设置内存管理、中断处理等核心功能。
  • 内核挂载initramfs作为临时根文件系统,并执行其中的初始化脚本(如/init)。这个阶段加载必要的硬件驱动(如磁盘控制器、网络接口),以便访问真实的根文件系统。
  • 一旦驱动加载完毕,内核切换到真正的根文件系统(由GRUB参数指定),并卸载initramfs。
  • 内核启动第一个用户空间进程(通常是/sbin/init),标志着系统进入用户空间阶段。
4. 初始化系统阶段(systemd或传统init)
  • 现代Linux发行版(如Ubuntu、Fedora)使用systemd作为初始化系统;较旧系统可能使用SysV init。
  • systemd作为第一个进程(PID 1),负责启动所有系统服务和守护进程。它读取配置文件(如/etc/systemd/system),按依赖关系并行启动服务。
  • 关键步骤包括:
    • 挂载文件系统(如/etc/fstab中定义)。
    • 启动基础服务(如网络、日志、硬件管理)。
    • 执行启动脚本(位于/etc/rc.d或类似目录)。
  • systemd的目标(target)如multi-user.targetgraphical.target定义了系统启动模式(命令行或图形界面)。
5. 用户登录阶段
  • 初始化完成后,系统启动登录管理器(如GDM、LightDM)或直接进入命令行登录提示。
  • 用户输入凭据后,系统验证身份并启动用户会话(例如,通过PAM模块)。
  • 最后,用户环境加载(如桌面环境、bash shell),系统完全可用。

 

 Systemd 常用单元类型表格

单元类型

扩展名

描述
Service.service描述一个系统服务
Socket.socket描述一个进程问通信的套接字
Device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中的文件或目录
Timer.timer描述一个定时器(用于实现类似cron 的调度任务)
Snapshot.snapshot用于保存一个 Systemd 的状态,保存了系统当前的运行状态
Scope.scope使用 Systemd 的总线接口以编程的方式创建外部进程
Scope.slice描述居于 Cgroup 的一组通过层次组织的管理系统进程
Target.target描述一组 Systemd 的单元

systemctl  控制类型  服务名称

控制类型:

start(启动):运行指定的系统服务程序,实现服务功能。

stop(停止):终止指定的系统服务程序,关闭相应的功能

restart(重启):先退出,再重新运行指定的系统服务程序

 reload(重载):不退出服务程序,只是刷新配置。在某些服务中与“restart”控制类型的操作相同

status(查看状态):查看指定的系统服务的运行状态及相关信息

 Systemd 的 target与SysVinit 的运行级别

SysVinit 的运行级别Systemd 的 target说 明
0target关机状态,使用该级别时将会关闭主机
1rescuc.target单用户模式,无须密码验证即可登录系统,多用于系统维护
2,4multi-user.target用户定义/域特定运行级别。默认等同于运行级别3
3multi-user.target字符界面的完整多用户模式,大多数服务器主机运行在此级别
5graphical.target图形界面的多用户模式,提供了图形桌面操作环境
6reboot.target重新启动,使用该级别时将会重启主机

查看系统的运行级别:runlevel 

举个列:当要重启系统时可以敲命令 systemctl reboot 或 init 6

systemctl  控制选项  服务名称

 

管理开机自启动服务

第一种  工具ntsysv 

按 上  下 方向键选择服务

有  *  号表示开机自启动,没有反之,用 空格键 控制

按 tab 可以移动到确定或取消

第二种  systemctl  控制选项  服务名称

控制选项:

enable:开机自启动

disable:关闭自启动

is-enable:查看自启动状态

http://www.dtcms.com/a/285758.html

相关文章:

  • 【Leecode 随笔】
  • 系统分析师-计算机系统-指令系统多处理机系统
  • 【案例教程】基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析实践技术应用
  • 如何将 iPhone 备份到笔记本电脑?
  • mac mlx大模型框架的安装和使用
  • Web前端入门:JavaScript async await 的异步任务进化之路
  • 深入解析文本分类技术全景:从特征提取到深度学习架构
  • 【项目】MCP+GraphRAG搭建检索增强智能体
  • -lstdc++与-static-libstdc++的用法和差异
  • 谈进程间通信
  • 从Hyperliquid到AILiquid:一场从极致性能到策略智能的迭代
  • 硅和锗二极管的主要区别
  • 参会邀请!2025世界人工智能大会合合信息技术交流日报名启动!
  • 深入理解 Linux 进程间通信
  • Linux——库的制作与原理
  • Linux 信号与中断 详解
  • ali linux 上安装swagger-codegen
  • Windows发现可疑的svchost程序
  • 深度理解 KVM:Linux 内核系统学习的重要角度
  • 【Linux】环境基础与开发工具的使用
  • Linux中的LVS集群技术
  • MySQL的基本操作及相关python代码
  • 基于极空间NAS+GL-MT6000路由器+Tailscale的零配置安全穿透方案
  • 云原生 DevOps 实战之Jenkins+Gitee+Harbor+Kubernetes 构建自动化部署体系
  • 小白学Python,网络爬虫篇(2)——selenium库
  • 图机器学习(13)——图相似性检测
  • 信息学奥赛一本通 1575:【例 1】二叉苹果树 | 洛谷 P2015 二叉苹果树
  • 短视频矩阵系统哪家好?全面解析与推荐
  • 香港服务器SSH安全加固方案与密钥认证实践
  • Flutter权限管理终极指南:实现优雅的Android 48小时授权策略