启动进程

启动进程Linux启动进程是启动Linux时执行的一个複杂的初始化过程 。它在很多方面类似于BSD系统和别的类Unix系统的启动过程 。
【启动进程】启动一个Linux系统涉及到很多阶段和软体组件,包括硬体初始化、执行启动载入程式、载入和启动Linux核心镜像,和执行很多启动脚本和守护进程 。对于不同的阶段和组件它们存在不同的变化和途径;比如GRUB、LILO、SYSLINUX或者Loadlin等能被用来当作启动载入器,同时启动脚本可以是传统的init风格,也可以是系统配置能被执行的现代替代方案比如systemd或Upstart 。
基本介绍中文名:启动进程
外文名:Linux startup process
简介Linux启动进程是启动Linux时执行的一个複杂的初始化过程 。它在很多方面类似于BSD系统和别的类Unix系统的启动过程 。启动一个Linux系统涉及到很多阶段和软体组件,包括硬体初始化、执行启动载入程式、载入和启动Linux核心镜像,和执行很多启动脚本和守护进程 。对于不同的阶段和组件它们存在不同的变化和途径;比如GRUB、LILO、SYSLINUX或者Loadlin等能被用来当作启动载入器,同时启动脚本可以是传统的init风格,也可以是系统配置能被执行的现代替代方案比如systemd或Upstart 。概述早期阶段的Linux启动进程十分依赖于计算机架构 。IBM PC兼容机是Linux常用的架构;在这种系统中,BIOS扮演着重要角色,而这在其他系统中很难找到类似的东西 。在下面的例子中,假设为IBM PC兼容机:

    BIOS针对实际的硬体平台执行启动任务 。一旦硬体被遍历、启动需要的硬体被正确初始化,BIOS就会从配置好的启动设备载入和执行启动代码 。
    启动载入程式通常会为用户呈现一个可能的启动项的选单而且有一个将在几秒后被选择的默认项 。一旦作出选择,启动引导器将和把核心载入到记忆体,并且提供一些参数且移交控制权 。
    核心,如果被压缩将自解压 。它将配置系统功能,譬如必要的硬体和记忆体分页,称为start_kernel(),这会执行大部分系统配置(中断、记忆体管理、设备和驱动初始化等) 。然后它分别启动记忆体管理进程、调度和init进程等在用户空间执行的进程 。
    init由被shell(sysv、bsd、runit)执行的脚本或者被二进制组件(systemd、upstart)执行的配置档案组成 。Init有特定的级别(sysv、bsd)或目标(systemd),每个都是由特定的一组服务(守护进程daemons)组成 。这在用户环境提供很多非作业系统的服务和结构 。一个典型的服务环境启动一个网路服务、资料库服务和网路 。
    一个典型的桌面环境从一个名为显示管理器的守护进程开始,它开始一个由图形化服务组成的图形化环境,提供一个基础底层的图形栈和一个提供身份验证的登录管理器 。在用户输入正确验证信息,会话管理器开始一个会话 。会话是包含一系列程式比如UI组件(面板、桌面、小程式等),它们一个构成一个完整的桌面环境 。
关机时,init会以控制者的姿态去关闭所有的用户空间功能 。init随后终止,核心自行关闭 。启动载入程式阶段启动载入阶段应计算机架构而不同 。更早的阶段不是针对特定作业系统,基于BIOS的x86_64启动进程被认为开始于MBR代码用真实模式执行和第一阶段启动载入程式被载入 。而对于UEFI系统,像Linux核心的有效负载,能直接载入,不需要启动载入程式 。下面是对流行的启动引导程式的总结:LILO不能识别和解析档案系统布局 。而是在实时系统中创建一个配置档案(/etc/lilo.conf),它将原始偏移量信息(映射器工具)映射到核心和ram磁碟的位置(initrd或initramfs) 。配置档案(其中包括每个引导分区和核心路径名等数据)以及自定义选项(如果需要),然后与引导载入程式代码一起写入MBR引导程式 。当此引导器读取并由BIOS控制时,LILO载入选单代码并绘製它,然后使用存储的值与用户输入一起计算和载入Linux核心或连结载入任何其他引导载入程式 。