我安装了 Devuan Ascii 和 SysVinit。我发现 Devuan ascii 存储库中的 openRC 版本要旧得多。有人用 openRC 尝试过 Devuan 吗? openRC 是否启用并行启动?
答案1
太长了;博士
是的,可以,但是它比默认的 sysvinit 设置更慢且效率更低。
默认值 (sysvinit)
默认的 Devuan Ascii 安装已经可以并行启动服务和起始参数。这些工作是通过解析显式指定依赖项的 initscripts(查看内部/etc/init.d
)中的 LSB 标头来实现的。当您运行时sudo insserv
,insserv
将这些初始化脚本处理成诸如/etc/init.d/.depend.boot
、/etc/init.d/.depend.start
等文件。在启动时,startpar
读取这些脚本并根据这些规则并行启动进程。
OpenRC(未优化)
安装 OpenRC 的方式与安装其他软件包一样:
$ apt update
$ apt install openrc
安装完成后,它会告诉你:
**********************************************************************
*** WARNING: if you are replacing sysv-rc by OpenRC, then you must ***
*** reboot immediately using the following command: ***
for file in /etc/rc0.d/K*; do s=`basename $(readlink "$file")` ; /etc/init.d/$s stop; done
**********************************************************************
以超级用户身份运行它。
安装过程中,apt
会删除insserv
和startpar
。
然而,至少根据我的经验,OpenRC 比增强的 sysvinit 慢这是因为 OpenRC 在启动时计算依赖关系,而不是insserv
在软件包安装时计算依赖关系。
例如,这是我使用 OpenRC 的 bootchart,它慢了 1.57 秒:
OpenRC(优化)
如果我们想更进一步,我们可以将该行添加rc_parallel="YES"
到/etc/rc.conf
.然而,这会破坏启动输出,以最小化启动时间,这仍然比insserv
+慢startpar
:
这是因为 OpenRC 仍然使用在 shell 中编写的 LSB 初始化脚本,而不是使用 openrc-run 对其进行更优化的设置。即使使用 OpenRC 的更新版本(使用 openrc-init 代替 sysvinit),启动时间仍然更差。