Eu não usei systemd-networkd especificamente antes, mas systemd definitivamente deve ser capaz de resolver isso ajustando o arquivo systemd service que systemd-networkd usa.
Encontrando arquivo de serviço
Se você executar:
systemctl status systemd-networkd
Você deve obter uma saída semelhante a essa (usando systemd-modules-load.service como exemplo, porque não tenho systemd-networkd ):
systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
Active: failed (Result: exit-code) since So 2013-08-25 11:48:13 CEST; 32s ago
Docs: man:systemd-modules-load.service(8).
man:modules-load.d(5)
Process: 15630 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
A segunda linha informa a localização do arquivo de serviço (no exemplo é /usr/lib/systemd/system/systemd-modules-load.service ). O arquivo de serviço determina quando na hierarquia systemd as coisas devem ser iniciadas.
Modificando arquivo de serviço
Se você abrir este arquivo em um editor de texto, há três seções muito importantes:
-
[Unit]
-
[Service]
-
[Install]
A seção [Unit] pode conter as diretivas After e Requires . After força o serviço a iniciar depois de outro systemd unidade, Requires força outra unidade systemd a ser iniciada se ela ainda não estiver ativada (mas não forçar uma ordenação).
Portanto, se você localizar o arquivo systemd-networkd service, determine qual unidade deseja que systemd-networkd inicie depois e adicione à seção [Unit] a ser definida:
[Unit]
...
Requires=[unit name]
After=[unit name]
Com este método, você pode forçar o serviço systemd-networkd a iniciar após qualquer outra unidade.
Outras preocupações
Você diz que suas montagens de rede falham, se você estiver montando o via /etc/fstab suas entradas contêm a opção _netdev ?