são literalmente apenas falhas de montagem, isso é tudo o que você precisaria mudar.
Assim, a carta do seu pedido seria trivial para responder. Crie um arquivo drop-in /etc/systemd/system/local-fs.target.d/nofail.conf
, que define OnFailure=
(ou seja, redefine para nada) ...
Eu acredito que isso não irá adicionar nenhum novo problema, além daqueles que o linux sysvinit já sofreu ao permitir este cenário de falha parcial.
No entanto, você também apontou a questão de como long systemd deve esperar que os dispositivos de bloco especificados se tornem disponíveis. Não vejo como configurar isso, sem fornecer um substituto para o gerador fstab como um todo. link
Se você despejar uma grande quantidade de código menos usado aqui, parece improvável aumentar a resiliência do sistema. Acho que a solução mais próxima seria corrigir o gerador de fstab existente. Não é maciçamente complexo, eu suspeito que você poderia se safar / acompanhar quaisquer mudanças significativas.
Tecnicamente, se a sua distribuição tiver um script mountall
sysvinit autocontido, você poderá tentar enganchar isso. Mas isso irá mudar significativamente o processo de inicialização - na verdade é mais de um fork. Eu não recomendaria essa abordagem.
If you search through the unit files, there are only a very few ways for the boot to fall back to
emergency.target
. It's usually when a.mount
unit for a local filesystem fails, causinglocal-fs.target
to fail. Or when your initramfs fails to mount the root filesystem, if your initramfs uses systemd.
local-fs.target
hasOnFailure=emergency.target
. And it gets failed because units for local filesystems are automatically added to the Requires list of local-fs.target (unless they haveDefaultDependencies=no
).$ systemctl show --property Requires local-fs.target Requires=-.mount home.mount boot.mount boot-efi.mount