跳转到内容

Linux启动进程

维基百科,自由的百科全书

这是本页的一个历史版本,由Tangmeifa留言 | 贡献2017年6月29日 (四) 02:27 (调整格式)编辑。这可能和当前版本存在着巨大的差异。

Linux启动进程是安装Linux时执行的一个复杂的初始化进程。它在很多方面类似于BSD和别的类Unix系统的启动进程。 启动一个Linux安装进程涉及到很多阶段和软件组件,包括硬件初始化,执行启动加载,加载和启动一个Linux内核镜像,和执行很多启动脚本和守护进程。对于不同的阶段和组件它们存在不同的变化和途径;比如,GRUB,LILO,SYSLINUX或者Loadlin能被用来当作启动加载器,同时启动脚本也可以是传统的init-style,或者系统配置能执行的现代替代方案比如systemd或者Upstart。

概述

早期阶段的Linux启动进程十分依赖于计算机架构。IBM PC兼容硬件是Linux常用的架构;在这种系统中,BIOS扮演着重要角色,而这在其他系统中很难找到类似的东西。在下面的例子中,假设为IBM PC兼容硬件:

  1. BIOS针对实际的硬件平台执行启动任务。一旦硬件被枚举、启动需要的硬件被正确初始化,BIOS就从配置好的启动设备加载和执行启动代码。
  2. 启动加载器通常会为用户呈现一个可能的启动项的菜单而且有一个将在几秒后被选择的默认项。一旦作出选择,启动引导器将内核加载到内存,并且提供一些参数和移交控制权。
  3. 内核,如果被压缩将自解压。它将配置系统函数譬如必要的硬件和内存分页,称为start_kernel(),这执行到部分系统配置(中断、内存管理、设备和驱动初始化等)。让后它分别启动内存管理进程、调度和init进程等在用户空间执行的进程。
  4. init由被shell(sysv、bsd、runit)执行的脚本或者被二进制组件(systemd、upstart)执行的配置文件组成。Init有特定的级别(sysv、bsd)或目标(systemd),每个都是由特定的一组服务(daemons)组成。这在用户环境提供很多非操作系统的服务和结构。一个典型的服务环境启动一个网络服务、数据库服务和网络。
  5. 一个典型的桌面环境从一个名为显示管理器的守护进程开始,它开始一个由图形化服务组成的图形化环境,提供一个基础底层的图形栈和一个提供身份验证的登录管理器。在用户输入正确验证信息,会话管理器开始一个会话。会话是包含一系列程序比如UI组件(面板、桌面、小程序等),它们一个构成一个完整的桌面环境。

关机时,init被呼叫去关闭所有的用户空间功能用一个控制者的姿态。init随后终止,内核自行关闭。