linux 的启动步骤
Linux 的启动过程分为多个阶段,每个阶段都扮演着重要的角色,从引导加载程序到启动用户空间的服务和应用程序。以下是 Linux 启动的典型步骤:
1. BIOS/UEFI 阶段
- BIOS/UEFI 启动: 当计算机开机时,BIOS(传统系统)或 UEFI(较新的系统)会运行硬件自检(POST),然后查找启动设备(例如硬盘、USB 或光盘)。
- 启动加载程序: BIOS/UEFI 会找到并加载启动设备中的引导加载程序(通常是 MBR 或 GPT 的第一个扇区)。
2. 引导加载程序阶段
- GRUB/LILO: 常见的引导加载程序是 GRUB(GRand Unified Bootloader)。它负责加载并传递控制权给 Linux 内核。
- 选择内核: 如果系统中安装了多个内核,GRUB 菜单允许用户选择要加载的内核。
- 加载内核和 initramfs: 引导加载程序加载选定的内核(通常是
vmlinuz
文件)和 initramfs(初始内存文件系统)。initramfs 是一个临时根文件系统,包含启动内核所需的基本工具和驱动程序。
3. Linux 内核阶段
- 内核初始化: 内核接管控制权后,开始初始化硬件,挂载根文件系统,并启动 init 进程(PID 1)。
- 驱动程序加载: 内核加载必要的驱动程序来管理硬件设备。这些驱动程序可以从内核内置的模块或 initramfs 中加载。
- 挂载根文件系统: 内核会从指定的根设备(例如
/dev/sda1
)挂载根文件系统(/
)。
4. init/initrd 阶段
- init/systemd: 内核启动后会运行第一个用户空间进程
init
,或在现代系统中运行systemd
。这个进程是所有其他进程的祖先。 - 执行启动脚本: init 进程根据配置文件(例如
/etc/inittab
)执行一系列启动脚本,这些脚本负责启动系统的基本服务和守护进程。
5. 服务启动阶段
- systemd/upstart/sysvinit: 根据系统使用的初始化系统(例如
systemd
),启动各种系统服务和守护进程,例如网络管理器、日志服务、文件系统挂载等。 - 并行启动: 在
systemd
中,服务启动通常是并行的,允许更快的启动时间。
6. 用户登录阶段
- 启动登录界面: 启动完成后,系统将显示登录提示符,可能是命令行界面(TTY)或图形化登录界面(例如 GDM、LightDM)。
- 用户登录: 用户可以登录并开始使用系统。此时,桌面环境或窗口管理器启动,允许用户进行交互。
7. 用户会话阶段
- 启动用户会话: 用户登录后,系统加载用户特定的配置文件(例如
.bashrc
或.profile
),并启动用户会话。 - 启动应用程序: 桌面环境或窗口管理器启动用户会话,并允许启动各种应用程序和服务。
总结
从 BIOS/UEFI 启动开始,到最终加载用户会话,Linux 系统经历了多个重要的阶段。每个阶段都可以配置和定制,以满足特定需求。了解这些步骤有助于解决启动问题并优化系统启动过程。