Linux系统启动顺序是什么

发布时间:2021-10-21 16:57:27 作者:柒染
来源:亿速云 阅读:197
# Linux系统启动顺序是什么

## 引言

Linux操作系统的启动过程是一个复杂而精妙的机制,涉及硬件初始化、引导加载程序、内核加载、初始化系统等多个阶段。理解Linux系统的启动顺序不仅有助于系统管理员进行故障排查和性能优化,也是深入学习Linux系统架构的重要基础。本文将详细解析Linux系统的启动顺序,从按下电源键到用户登录的完整流程,帮助读者全面掌握这一关键技术。

## 1. 启动流程概述

Linux系统的启动过程可以分为以下几个主要阶段:

1. **BIOS/UEFI阶段**
2. **引导加载程序阶段(GRUB/LILO)**
3. **内核初始化阶段**
4. **init/systemd初始化系统阶段**
5. **用户登录阶段**

下面我们将逐一详细解析每个阶段的具体工作内容。

## 2. BIOS/UEFI阶段

### 2.1 硬件自检(POST)

当计算机电源接通后,主板上的固件(BIOS或UEFI)首先执行**加电自检(POST, Power-On Self-Test)**过程:

- 检查关键硬件组件(CPU、内存、存储设备等)是否正常工作
- 初始化硬件设备
- 检测系统配置(通过CMOS设置)

```bash
# 查看BIOS信息的典型命令(需要root权限)
dmidecode -t bios

2.2 查找可启动设备

POST完成后,固件会按照预设顺序(可在BIOS设置中调整)查找可启动设备:

  1. 检查第一个硬盘的MBR/GPT
  2. 检查USB设备
  3. 检查网络启动(PXE)
典型的启动顺序:
1. USB
2. HDD
3. CD/DVD
4. Network

2.3 UEFI与BIOS的区别

特性 BIOS UEFI
启动方式 MBR分区表 GPT分区表
执行环境 16位实模式 32/64位保护模式
启动速度 较慢 较快(支持并行初始化)
最大磁盘 2TB 9.4ZB
安全启动 不支持 支持Secure Boot

3. 引导加载程序阶段

3.1 GRUB2详解

现代Linux系统大多使用GRUB2(GRand Unified Bootloader)作为引导加载程序:

GRUB2启动流程:
1. stage1:MBR中的引导代码(前446字节)
2. stage1.5:文件系统识别代码
3. stage2:/boot/grub/中的完整GRUB程序

3.2 GRUB配置文件

主要配置文件位于/boot/grub/grub.cfg(通常不建议直接编辑),而是通过编辑/etc/default/grub/etc/grub.d/中的模板文件,然后运行:

# 更新GRUB配置
sudo update-grub

3.3 内核参数传递

GRUB的一个重要功能是向Linux内核传递启动参数:

常见内核参数:
- root=        指定根文件系统设备
- ro/rw        以只读/读写方式挂载根文件系统
- init=        指定替代init程序
- systemd.unit=指定systemd启动目标

4. 内核初始化阶段

4.1 内核解压与初始化

Linux内核被加载到内存后,执行以下操作:

  1. 解压自身(如果是压缩内核)
  2. 初始化基本硬件
  3. 设置内存管理
  4. 检测CPU特性
# 查看内核启动信息
dmesg | less

4.2 初始化根文件系统

内核会挂载临时根文件系统(initramfs),其中包含必要的驱动和工具:

initramfs的作用:
1. 加载必要的硬件驱动(如RD/LVM)
2. 解密加密的文件系统
3. 挂载真正的根文件系统

4.3 切换根文件系统

内核执行/init程序(在initramfs中),最终会:

  1. 挂载真正的根文件系统
  2. 执行pivot_root切换
  3. 执行/sbin/init(PID 1)

5. 初始化系统阶段

5.1 systemd详解

现代Linux发行版大多使用systemd作为初始化系统:

systemd主要组件:
- systemd:主进程(PID 1)
- journald:日志系统
- udevd:设备管理
- networkd:网络管理

5.2 启动目标(target)

systemd使用target替代传统的运行级别:

运行级别 systemd target 描述
0 poweroff.target 关机
1 rescue.target 单用户模式
3 multi-user.target 多用户文本模式
5 graphical.target 图形界面模式
6 reboot.target 重启
# 查看当前target
systemctl get-default

# 设置默认target
sudo systemctl set-default multi-user.target

5.3 服务启动流程

systemd按依赖关系并行启动服务:

  1. 解析/etc/systemd/system//usr/lib/systemd/system/中的unit文件
  2. 建立依赖关系图
  3. 并行启动不互相依赖的服务
# 查看服务启动时间
systemd-analyze blame

6. 用户登录阶段

6.1 登录管理器

图形界面系统通常使用登录管理器:

常见显示管理器:
- GDM:GNOME显示管理器
- LightDM:轻量级显示管理器
- SDDM:KDE显示管理器

6.2 shell初始化

用户登录后,shell会读取配置文件:

bash的配置文件加载顺序:
1. /etc/profile
2. ~/.bash_profile
3. ~/.bashrc
4. ~/.bash_login

7. 故障排查技巧

7.1 常见启动问题

常见问题及解决方案:
1. GRUB损坏:使用LiveCD修复
2. 内核panic:检查硬件兼容性
3. 文件系统错误:fsck修复
4. 服务启动失败:journalctl查看日志

7.2 应急恢复方法

# 单用户模式恢复
1. 在GRUB界面按'e'编辑启动项
2. 在内核参数行添加'single'或'systemd.unit=rescue.target'
3. 按Ctrl+X启动

# 使用LiveCD修复
1. 挂载原系统分区
2. chroot进入原系统
3. 执行必要修复操作

8. 启动优化建议

8.1 加速启动的方法

启动优化技巧:
1. 使用SSD替代HDD
2. 启用内核并行初始化
3. 禁用不必要的服务
4. 使用systemd-analyze分析启动时间

8.2 服务延迟启动

# 设置服务延迟启动
sudo systemctl edit some.service
[Service]
ExecStartPre=/bin/sleep 10

结语

Linux系统的启动过程是一个精心设计的链条,每个环节都承担着特定职责。通过深入理解这一过程,系统管理员可以更有效地管理系统、排查故障和优化性能。随着技术的发展,启动流程也在不断演进(如UEFI替代BIOS、systemd替代SysVinit),但基本原理保持不变。掌握这些知识将帮助您更好地驾驭Linux系统。

附录

相关命令速查表

命令 用途
systemctl 管理系统服务
journalctl 查看系统日志
dmesg 查看内核消息
grub-install 安装GRUB引导加载程序
systemd-analyze 分析系统启动时间

参考文档

  1. systemd官方文档
  2. GRUB手册
  3. Linux内核文档

”`

这篇文章详细介绍了Linux系统从硬件上电到用户登录的完整启动流程,涵盖了BIOS/UEFI、引导加载程序、内核初始化、systemd初始化系统和用户登录等关键阶段,并提供了故障排查和优化建议,总字数约3150字。

推荐阅读:
  1. linux启动顺序流程
  2. docker中compose如何控制服务启动顺序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:如何解析Linux查看路由的题目

下一篇:visibility属性在cpython中的应用方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》