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 系统经历了多个重要的阶段。每个阶段都可以配置和定制,以满足特定需求。了解这些步骤有助于解决启动问题并优化系统启动过程。

posted @ 2024-08-23 11:58  redrobot  阅读(3)  评论(0编辑  收藏  举报