zl程序教程

您现在的位置是:首页 >  系统

当前栏目

linux启动过程解析

Linux 解析 启动 过程
2023-06-13 09:17:41 时间
  1. BIOS阶段:

BIOS (Basic Input/Output System) 是一组固件,通常存储在计算机主板上的芯片中。当计算机启动时,BIOS会自动运行,并通过POST (Power-On Self-Test) 对计算机进行自检,以确保硬件设备正常工作。在自检完成后,BIOS会寻找可引导的设备,通常是硬盘或光盘驱动器。如果找到了可引导设备,则BIOS将把控制权交给该设备中的引导程序。

Boot Loader阶段:

引导程序是一段特殊的代码,通常被称为Boot Loader,它负责加载操作系统内核并初始化系统环境。常见的Boot Loader有GRUB、LILO和SYSLINUX等。在Linux中,Boot Loader通常安装在硬盘的MBR (Master Boot Record)或EFI系统分区。当Boot Loader加载时,它会在引导选项菜单中显示可用的内核版本,用户可以选择要引导的内核。

Kernel初始化阶段:

内核是操作系统的核心,它控制着系统的各种操作。当Boot Loader加载内核后,内核会开始初始化硬件设备和文件系统,并启动第一个用户空间进程——init进程。内核初始化的过程包括以下几个步骤:

  • 加载驱动程序:内核会加载与硬件设备对应的驱动程序,并初始化这些设备。驱动程序通常存储在内核模块中,可以在运行时加载和卸载。
  • 初始化文件系统:内核会检查和挂载根文件系统,以便系统可以访问文件和目录。根文件系统通常在内核中硬编码。
  • 启动init进程:内核会在用户空间启动第一个进程——init进程。init进程是所有进程的祖先进程,它负责启动和管理所有其他进程和服务。
  • 建立内存映射:内核会将物理内存映射到虚拟内存空间中,并为每个进程分配一定的虚拟内存空间。

用户空间初始化阶段:

在init进程启动后,它会执行一系列初始化脚本,如/etc/inittab、/etc/init.d等等,以初始化各种服务和进程。这些初始化脚本通常包括以下几个步骤:

  • 启动系统服务:系统服务是一些后台进程,如网络服务、邮件服务、Web服务等等。它们在系统启动时自动启动,并在后台运行,以提供各种功能和服务。
  • 启动用户登录管理程序:用户登录管理程序(如getty和systemd-logind)负责管理用户登录和会话。当用户输入用户名和密码后,登录管理程序会验证用户身份并启动相应的会话。
  • 启动图形界面:如果系统安装了图形界面,那么初始化脚本会启动图形界面管理程序,如Xorg或Wayland。这些程序负责管理图形界面和用户桌面环境。

用户登录阶段:

当图形界面启动后,用户可以在屏幕上看到登录窗口,输入用户名和密码后,登录管理程序会验证用户身份并启动相应的会话。在会话开始后,用户可以使用各种应用程序和工具,如终端、浏览器、编辑器等等。