[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

@^\[@^#{[ de systemd !



	Bonjour à tous,

	J'utilise des rPI 3 comme point d'accès WiFi. Cela fonctionne bien,
mais depuis la dernière mise à jour de Debian, il y a comme un problème
lors du démarrage et je suis contraint de démarrer les services à la
main. Ça m'amuse cinq minutes, pas plus... :-(

	Jusqu'ici, ces machines utilisaient un script rc.local qui n'est plus
appelé. Ce script se terminait pas :

rfkill unblock 0
ifup wlan0
iptables-legacy -t nat -A POSTROUTING -s 192.168.11.0/24 -j MASQUERADE
dhcpd
exit 0

	Aujourd'hui, lorsque je démarre un rPI, je me retrouve avec une
interface wlan0 qui est bloquée par défaut (soft) :

root@abel:~# rfkill
ID TYPE      DEVICE    SOFT      HARD
 0 wlan      phy0   blocked unblocked
 1 bluetooth hci0   blocked unblocked
root@abel:~#

	Là, je ne comprends pas. L'interface est _toujours_ active lors de
l'extinction et systemd.restore_state vaut par défaut 1.

	Si je lance successivement :

rfkill unblock 0
ifup wlan0
hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf
dhcpd

je récupère une borne WiFi fonctionnelle. J'ai donc écrit dans
/etc/systemd/system les choses suivantes :

root@abel:/etc/systemd/system# cat rfkill.service
[Unit]
Description=rfkill
Before=ifup@wlan0.service
After=systemd-rfkill

[Service]
Type=oneshot
ExecStart=/usr/sbin/rfkill unblock 0

[Install]
WantedBy=network.target

root@abel:/etc/systemd/system# cat route.service
[Unit]
Description=Wlan route
After=networking.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables-legacy -t nat -A POSTROUTING -s
192.168.11.0/24 -j MASQUERADE

[Install]
WantedBy=network.target

root@abel:/etc/systemd/system# cat dhcpd.service
[Unit]
Description=dhcpd
After=route.service

[Service]
Type=forking
ExecStart=/usr/sbin/dhcpd

[Install]
WantedBy=network.target

	Si route.service et dhcpd.service sont appelés, pas moyen que
rfkill.service soit appelé au bon moment. Il faut pourtant qu'il soit
appelé _après_ systemd-rfkill (qui merdoie) et avant que l'interface
wlan0 soit montée par ifup.service. Lors du démarrage, systemd provoque
un timeout sur rfkill.service et merdoie sur hostapd.service (là, ce
n'est pas un timeout, mais des lancements de hostapd en boucle parce que
wlan0 n'existe pas).

	Une idée pour corriger la chose, parce que je ne comprends pas trop.

	Bien cordialement,

	JKB


Reply to: