linux内核启动流程

Linux内核的启动流程可以概括为以下几个步骤:

  1. 硬件检测
  • 计算机开机后,BIOS(基本输入输出系统)执行加电自检(POST),检测内存和其他硬件设备。

  • BIOS根据CMOS设置搜寻有效的启动设备,并加载启动扇区中的引导程序。

  1. 加载和执行引导程序
  • 引导程序(如GRUB)从硬盘的引导区加载内核镜像到内存中。

  • 引导程序将控制权交给内核的启动代码。

  1. 内核自解压过程 (如果内核被压缩):
  • 解压内核映像,通常在arch/arm/boot/compressed目录下完成。

  • 解压后,内核入口函数stext被调用,进行初始设置。

  1. 内核初始化
  • 设置处理器工作模式、使能MMU、设置一级页表等。

  • 进行CPU类型检查,确保当前CPU架构被支持。

  1. 启动设备驱动
  • 初始化启动设备的驱动程序,以便访问和控制硬件设备。
  1. 启动根文件系统
  • 挂载根文件系统,以便访问文件系统中的文件。
  1. 初始化用户空间
  • 启动第一个用户空间进程(init进程),负责初始化系统环境。
  1. 用户空间初始化
  • init进程读取配置文件(如/etc/inittab)并启动其他系统服务和进程。
  1. 登录管理
  • 启动登录管理器(如getty或display manager),等待用户登录。
  1. 用户登录
  • 用户在登录管理器中输入用户名和密码,系统验证身份后启动登录会话。
  1. 用户空间服务
  • 启动和管理各种系统服务(如网络服务、打印服务等),提供功能和服务给用户。

以上步骤概述了Linux内核从开机到启动用户空间的整个过程。需要注意的是,这个流程可能会根据不同的硬件架构和操作系统版本有所不同。

Top