3.2. Systemd 初始化
本节描述系统是怎样通过 PID=1
的 systemd(1) 程序来启动(即初始化进程)。
systemd
初始化进程基于单元配置文件 (参见 systemd.unit(5)) 来并行派生进程,这些单元配置文件使用声明样式来书写,代替之前的类 SysV 的过程样式。 这些单元配置文件从下面的一系列路径来加载 (参见 systemd-system.conf(5)) :
“
/lib/systemd/system
“: OS 默认配置文件“
/etc/systemd/system
“: 系统管理员的配置文件,它将忽略操作系统默认的配置文件“
/run/systemd/system
“: 运行时产生的配置文件,它将忽略安装的配置文件
他们的相互依赖关系通过”Wants=
“, “Requires=
“, “Before=
“, “After=
“, … 等指示来配置,(参见 systemd.unit(5) 里的 “MAPPING OF UNIT PROPERTIES TO THEIR INVERSES”)。 资源控制也是被定义 (参见 systemd.resource-control(5)).
根据单元配置文件的后缀来区分它们的类型:
*.service 描述由
systemd
控制和监管的进程.参见 systemd.service(5).*.device 描述在 sysfs(5) 里面作为 udev(7) 设备树展示的设备。参见 systemd.device(5).
*.mount 描述由
systemd
控制和监管的文件系统挂载点。参见 systemd.mount(5).*.automount 描述由
systemd
控制和监管的文件系统自动挂载点。参见 systemd.automount(5).*.swap 描述由
systemd
控制和监管的 swap 文件或设备。参见 systemd.swap(5).*.path 描述被
systemd
监控的路径,用于基于路径的活动。参见 systemd.path(5).*.socket 描述被
systemd
控制和监管的套接字,用于基于套接字的活动。参见 systemd.socket(5).*.timer 描述被
systemd
控制和监管的计时器,用于基于时间的活动。参见 systemd.timer(5).*.slice 管理 cgroups(7) 的资源。参见 systemd.slice(5).
*.scope 使用
systemd
的总线接口来程序化的创建,用以管理一系列系统进程。 参见 systemd.scope(5).*.target 把其它单元配置文件分组,在启动的时候,来创建同步点。参见systemd.target(5).
系统启动时(即,init),systemd
进程会尝试启动”/lib/systemd/system/default.target
(通常是到”graphical.target
“的符号链接)。首先,一些特殊的 target 单元(参见 systemd.special(7)),比如 “local-fs.target
“、”swap.target
“和”cryptsetup.target
“会被引入以挂载文件系统。之后,其它 target 单元也会根据单元依赖关系而被引入。详细情况,请阅读 bootup(7)。
systemd
提供向后兼容的功能。在 “/etc/init.d/rc[0123456S].d/[KS]<name>
“ 里面的 SysV 风格的启动脚本仍然会被分析;telinit(8) 会被转换为 systemd 的单元活动请求。
小心 | |
---|---|
模拟的运行级别 2 到 4 全部被符号链接到了相同的“ |