Dans cet article, vous découvrez comment faire en sorte que MMDVMHost démarre automatiquement à la mise sous tension de votre Raspberry Pi.
Le démarrage automatique de MMDVMHost
Sur le Raspberry Pi, il existe deux solutions (celles que je connais) pour lancer automatiquement un logiciel à la mise sous tension (ou reboot) du Raspberry Pi, tournant sous Raspbian.
Démarrage simple
Pour démarrer automatiquement MMDVMHost, la solution la plus simple est d’éditer ce fichier de démarrage et d’y ajouter la ligne de commande pour lancer MMDVMHost avant l’instruction exit 0
sudo nano /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini exit 0
Démarrage avec déclaration d’un service MMDVMHost
Une autre solution, un peu plus élégante est de créer un service.
Prérequis
Installation de screen
sudo apt-get install screen
Création du fichier service
sudo nano /lib/systemd/system/mmdvmhost.service
[Unit] Description=MMDVM Host Service After=syslog.target network.target [Service] User=root WorkingDirectory=/opt/MMDVMHost ExecStart=/usr/bin/screen -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini ExecStop=/usr/bin/screen -S MMDVMHost -X quit Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
Dans la section [Service], les deux dernières lignes permettent d’assurer le rédémarrage de MMDVMHost en cas de plantage. Il faut noter qu’il est très rare d’être confronté à des arrêts inopinés de MMDVMHost. Nous allons tester le bon fonctionnement du redémarrage plus bas dans l’article.
Les répertoires de lancement de MMDVMHost indiqués ici correspondent à ceux utilisés lors du déroulement du tutorial d’installation de MMDVMHost.
Création du fichier de temporisation du lancement
Le lancement du service est temporisé après 60 secondes après le démarrage
sudo nano /lib/systemd/system/mmdvmhost.timer
[Timer] OnStartupSec=60 [Install] WantedBy=multi-user.target
Application des droits et prise en compte du service
sudo chmod 755 /lib/systemd/system/mmdvmhost.service sudo chmod 755 /lib/systemd/system/mmdvmhost.timer sudo ln -s /lib/systemd/system/mmdvmhost.service /etc/systemd/system/mmdvmhost.service sudo ln -s /lib/systemd/system/mmdvmhost.timer /etc/systemd/system/mmdvmhost.timer
Nous pouvons redémarrer le gestionnaire de services
sudo systemctl daemon-reload
A présent le service MMDVMHost est prêt à être démarré. A ce stade, nous pouvons lancer le service sans redémarrer.
sudo systemctl start mmdvmhost.service
Vérification du fonctionnement du service
Vous pouvez vérifier que le service lancement bien MMDVMHost qui doit apparaitre dans les processus (ps) avec l’instruction suivante, et qui doit retourner 3 lignes.
sudo ps aux | grep MMDVMHost
root 9657 1.0 0.6 5192 2684 ? Ss 16:19 0:00 /usr/bin/SCREEN -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini root 9662 18.2 1.2 15140 5436 pts/0 Ssl+ 16:19 0:00 /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini pi 9777 0.0 0.4 4268 1956 pts/1 S+ 16:19 0:00 grep --color=auto MMDVMHost
Pour vérifier le fonctionnement du service, vous aurez accès au log de MMDVMHost avec la commande suivante
sudo screen -r MMDVMHost
Le statut de fonctionnement du service est retourné avec cette commande
sudo systemctl status mmdvmhost.service
● mmdvmhost.timer Loaded: loaded (/lib/systemd/system/mmdvmhost.timer; enabled) Active: active (elapsed) since Sat 2017-05-20 16:33:10 CEST; 13min ago May 20 16:33:10 raspberrypi systemd[1]: Starting mmdvmhost.timer. May 20 16:33:10 raspberrypi systemd[1]: Started mmdvmhost.timer.
Testons à présent le redémarrage automatique.
Etape 1: Le service est en marche, MMDVMHost est présent dans la liste des processus :
sudo ps aux | grep MMDVMHost
root 9657 1.0 0.6 5192 2684 ? Ss 16:19 0:00 /usr/bin/SCREEN -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini root 9662 18.2 1.2 15140 5436 pts/0 Ssl+ 16:19 0:00 /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini pi 9777 0.0 0.4 4268 1956 pts/1 S+ 16:19 0:00 grep --color=auto MMDVMHost
Etape 2: Nous allons tuer (“killer”) le processus MMDVMhost avec
sudo killall MMDVMHost
Etape 3: Vérifions immédiatement la liste des processus.
sudo ps aux | grep MMDVMHost
pi 6360 0.0 0.4 4268 1828 pts/0 S+ 16:37 0:00 grep --color=auto MMDVMHost
Il n’y a plus qu’une seule ligne… Mais 10 secondes plus tard, la même commande affiche à nouveau les 3 lignes. MMDVMHost a bien été redémarré !
root 6609 0.0 0.6 5192 2812 ? Ss 16:37 0:00 /usr/bin/SCREEN -S MMDVMHost -D -m /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini root 6613 6.4 1.3 16712 5920 pts/2 Ssl+ 16:37 0:03 /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini pi 7852 0.0 0.4 4268 1856 pts/0 S+ 16:38 0:00 grep --color=auto MMDVMHost
Autre commande
Pour stopper le service
sudo systemctl stop mmdvmhost.service
Conclusion
You will understand that the second solution presented and which consists of starting MMDVMHost as a service is more robust thanks to the function offered by the service to automatically restart MMDVMHost on untimely shutdown.
If necessary the comments are opened below for your remarks, or questions.