实际上,这只是挂载故障,这就是您需要更改的一切。
因此,您的要求书将很容易回答。创建一个插入文件:
# /etc/systemd/system/local-fs.target.d/nofail.conf
# Clear OnFailure= (set it to nothing)
[Unit]
OnFailure=
我相信,除了允许部分故障的情况下linux sysvinit已经遭受的问题之外,这不会增加任何新问题。
但是,您还指出了systemd应该等待多长时间才能使指定的块设备可用。我看不到没有配置整个fstab生成器的替代方法,就无法配置它。https://www.freedesktop.org/software/systemd/man/systemd.generator.html
如果在此处转储大量未广泛使用的代码,则似乎不太可能提高系统的弹性。我认为最接近的解决方案是修补现有的fstab生成器。它并不复杂,我怀疑您可以摆脱它/跟上任何重大变化。
从技术上讲,如果您的发行版包含一个自包含的mountall
sysvinit脚本,则可以尝试将其挂接。但这将显着改变引导过程-实际上更像是一个分支。我不推荐这种方法。
https://unix.stackexchange.com/a/393711/29483
如果您搜索单位文件,则只有很少几种方法可以使启动回退到emergency.target
。通常是在.mount
本地文件系统的某个
单元发生故障而导致local-fs.target
故障时。或者,如果initramfs使用systemd,则initramfs无法挂载根文件系统。
local-fs.target
有OnFailure=emergency.target
。由于本地文件系统的单元会自动添加到local-fs.target的Requires列表中(除非它们具有DefaultDependencies=no
),因此它失败了
。
$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount