J'ai un petit système embarqué sans fil basé sur Ubuntu 16.04. Si l'interface sans fil est mal configurée ou si le point d'accès est hors service, ifup wlan0
ne se terminera jamais parce que dhclient
ne se démonétise pas avant d'avoir obtenu un bail. C'est un problème car ifdown wlan0
se bloque à cause de la serrure ifup
tient toujours :
ifdown: waiting for lock on /run/network/ifstate.wlan0
Comment puis-je résoudre ce problème ?
- Option 1 :
pkill -f 'ifup .*wlan0'; ifdown wlan0
C'est grossier, mais si je dois le faire, je le ferai. Je préfère avoir une meilleure solution.
- Option 2 :
dhclient
soutient un-nw
l'option nowait, qui lui indique de se démoniser immédiatement, maisifup
ne l'utilise pas et il semble que ladhclient
est codée en dur dansifup
via un fichier source nomméinet.defn
:
.
$ apt-get source ifupdown
$ grep -n 'dhclient -1' ifupdown-*/inet.defn | head -1
97: /sbin/dhclient -1 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
- Option 3 : existe-t-il un moyen de faire en sorte que le dhcp soit contrôlé par le statut de wpa_supplicant ? Ainsi, dhclient ne s'exécuterait pas tant que wpa_supplicant n'a pas terminé l'association avec le point d'accès.
Informations supplémentaires :
/etc/network/interfaces
:
auto lo
iface lo inet loopback
# ifplugd configuration
mapping hotplug
script grep
map eth0
map wlan0
auto eth0
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf
/etc/wpa_supplicant.conf
:
ctrl_interface=DIR=/var/run/wpa_supplicant
network={
ssid="AccessPoint"
scan_ssid=1
proto=WPA RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="passphrase"
priority=10
}
network={
key_mgmt=NONE
priority=0
disabled=1
}