Debian 版本的 Sysv init 使用引用各种脚本的脚本LSB“虚拟”引导设施例如$local_fs
,$network
insserv 在设置引导顺序时使用的要求,但它们不一定由任何/etc/init.d
脚本提供。 /etc/insserv.conf
引用它们,但仅定义哪些服务必须“声明设施所需的依赖关系”。对我来说,这意味着服务列表“必须声明依赖关系的设施”,但也许这只是一个糟糕的措辞,因为看着一个实际的insserv.conf
意味着它实际上意味着该列表“必须声明该设施作为依赖关系”,这是非常不同的(任何对此的澄清将不胜感激)。
很明显,诸如$network
(这似乎只是指物理链接的可能性,即不是实际的 dhcp 租用等)和 等内容$local_fs
将由内核在引导期间提供,但我找不到任何解释的文档如何将它们视为由 init 系统预定义为可用或不可用。
答案1
虚拟insserv
引导工具允许初始化脚本依赖于不同脚本组或跨发行版的各种方法提供的广泛使用的功能。
取决于$network
目标意味着需要配置网络连接。在 Debian 中,这意味着运行networking
和ifupdown
initscripts,如 中所述insserv.conf
。
$local_fs
用于几乎每个启动脚本,因为这意味着每个本地文件系统都将被挂载,$remote_fs
显然依赖于$network
。
实现此目标所需的脚本在每个发行版上的命名并不相同,并且可以从一个操作系统版本更改为另一个操作系统版本。由于insserv
可以进行不同的配置以反映此更改,因此不需要针对每种特定情况更改取决于此功能的初始化脚本。
LSB 设计此标准时的想法是减少初始化脚本对发行版的依赖性,现在systemd
大多数发行版都提供了这一点。