Linux系统初始化与U-boot引导加载器详解
1. Linux系统初始化
在Linux系统启动过程中,内核需要对设备进行初始化以满足自身需求。在初始化过程中,内核会输出大量描述其操作的消息。之后,内核会挂载根文件系统,此时内核一直在内核空间运行。最后,内核启动init进程,从而过渡到用户空间。
1.1 Systemd初始化机制
内核启动的最后一步是启动PID为1的进程,该进程会成为系统中所有其他进程的最终父进程。过去,这一过程相对简单,涉及可执行文件/sbin/init、配置文件inittab和一些脚本,这就是System V初始化机制。
现在,有一种名为systemd的“改进版”初始化机制,它包含约900个文件。目前,大多数主流Linux发行版都采用了systemd,但自2011年引入以来,它一直是一个备受争议的问题。支持者认为System V初始化速度太慢,因为它是串行启动进程,一次启动一个,而systemd可以并行化许多活动。反对者则认为“如果没坏,就不要修”。
systemd管理和操作称为单元(units)的对象。单元有多种类型,最常见的类型是服务,由以.service结尾的文件表示。在目标文件系统的/lib/systemd/system目录中,可以看到许多*.service文件。例如,打开