J'ai un boîtier 16.04 Desktop qui se connecte à Internet via WiFi. Pour faciliter la gestion à distance, wlan0
est configuré via /etc/network/interfaces
à la place du gestionnaire de réseau.
J'ai un service systemd
qui est activé pour démarrer au démarrage. Ce service est configuré pour démarrer après default.target
comme suit:
[Unit]
After=default.target
[Service]
Type=simple
ExecStart=/usr/bin/node main.js"
Restart=always
[Install]
WantedBy=default.target
Ce service démarre immédiatement si je démarre la boîte à portée de son réseau wifi, car dhclient reçoit immédiatement une adresse IP. Mais si je démarre mon système là où il ne peut pas utiliser le wifi, mon service reste en place et attend que le client d'abandonner le système avant de commencer. Ce service attend précisément les 300 secondes spécifiées dans la strophe /etc/dhclient/dhclient.conf
timeout 300
.
Ma compréhension de After=default.target
était que cela allait PAS attendre sur le réseau. After=network.target
est l'outil pour le faire. Si je configure mon réseau wifi avec Network Manager au lieu de /etc/network/interfaces
, le service démarre immédiatement, quelle que soit la disponibilité du réseau.
Comment faire démarrer mon service quel que soit le statut de dhclient
tout en utilisant /etc/network/interfaces
?
La réponse, semble-t-il, consiste à utiliser la mystérieuse déclaration allow-hotplug
dans /etc/network/interfaces
comme je l'ai appris de https://askubuntu.com/a/868445/358498 :
allow-hotplug wlan0
iface wlan0 inet dhcp
...
systemd
n'attend plus du réseau pour lancer un service dépendant de default.target
. Pourquoi allow-hotplug
fait une telle différence me semble un peu confus, car il n’ya pas de véritable événement "hotplug" dans mon système. ne ressource dit:
Il n'y a pas beaucoup de documentation sur ce que permet réellement-hotplug. man interfaces (une page de manuel assez bonne, BTW) implique que ifup refusera de faire apparaître une interface sauf si allow-hotplug est défini; mais si le réseau est démarré via /etc/init.d/networking dans un sens ou dans l'autre, pourquoi différentes choses se produisent-elles selon que allow-hotplug est présent ou non? Tout cela est très déroutant, mais croyez-moi, vous avez besoin de allow-hotplug si vous utilisez PCMCIA ou Cardbus (ou probablement USB).