启动进程
启动Linux时执行的初始化过程
Linux启动进程是启动Linux时执行的一个复杂的初始化过程。它在很多方面类似于BSD系统和别的类Unix系统的启动过程。
内容简介
Linux启动进程是启动Linux时执行的一个复杂的初始化过程。它在很多方面类似于BSD系统和别的类Unix系统的启动过程。
启动一个Linux系统涉及到很多阶段和软件组件,包括硬件初始化、执行启动加载程序、加载和启动Linux内核镜像,和执行很多启动脚本和守护进程。对于不同的阶段和组件它们存在不同的变化和途径;比如GRUBLILOSYSLINUX或者Loadlin等能被用来当作启动加载器,同时启动脚本可以是传统的init风格,也可以是系统配置能被执行的现代替代方案比如systemdUpstart
概述
早期阶段的Linux启动进程十分依赖于计算机架构。IBM PC兼容机是Linux常用的架构;在这种系统中,BIOS扮演着重要角色,而这在其他系统中很难找到类似的东西。在下面的例子中,假设为IBM PC兼容机:
关机时,init会以控制者的姿态去关闭所有的用户空间功能。init随后终止,内核自行关闭。
加载程序阶段
启动加载阶段应计算机架构而不同。更早的阶段不是针对特定操作系统,基于BIOS的x86_64启动进程被认为开始于MBR代码用真实模式执行和第一阶段启动加载程序被加载。而对于UEFI系统,像Linux内核的有效负载,能直接加载,不需要启动加载程序。下面是对流行的启动引导程序的总结:
内核阶段
Linux内核处理所有操作系统进程,如内存管理、任务调度、I/O、进程间通信和系统总体控制。这分为两个阶段 :
首先,内核(作为压缩映像文件)被加载到内存中并进行解压缩,并且创建了一些基本的功能,如基本内存管理。 然后最后一次切换到主内核启动过程。
一旦内核完全运行,并且作为其启动的一部分,在加载和执行时,内核会查找一个运行的init进程,它单独设置用户空间以及用户环境所需的进程和最终会话。然后允许内核自身闲置,受其他进程调用。
initramfs
initramfs自Linux内核的2.5.46版本开始加入这个概念,其意图是尽可能地替换以前Linux核心在启动过程中执行的功能。 早期用户空间的典型用途是检测需要哪些设备驱动程序来加载主用户空间文件系统,并从临时文件系统加载它们。
Init进程
Init是Linux的根进程。进程号为1,它是所有进程的父进程。
SysV init
init是系统所有进程的父进程。它由内核创建,它将启动其他所有进程。
参考资料
最新修订时间:2024-05-21 13:01
目录
概述
内容简介
概述
参考资料