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

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



On 6/30/22 08:55, BERTRAND Joël wrote:
> 	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
> 
pour activer rc.local avec systemd sur une Debian (ou Ubuntu), j'utilise un petit script qui crée et active les fichiers /etc/systemd/system/rc-local.service et /etc/rc.local
mais il faut quand même éviter de transformer le rc.local en quelque chose de trop compliqué, surtout si on peut utiliser les services (que ce soient ceux de systemd ou autre)


voici le script (on trouve plein de version différentes sur le web, je donne ça ici comme exemple qui fonctionne)
#!/bin/bash


if [ "$EUID" -ne 0 ]
  then echo "Please run as root (use sudo)"
  exit
fi


cat >  /etc/systemd/system/rc-local.service << "EOF"

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target
EOF


cat >> /etc/rc.local << "EOF"
#!/bin/bash
logger "on ne fait rien"
exit 0
EOF

chmod +x /etc/rc.local
systemctl enable rc-local


Reply to: