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