Bonjour,

Je travaille actuellement sur un projet consistant à faire bouger un robot à distance par divers moyens. Il s'agit d'un robot "Rapiro" avec un raspberry pi tournant sous debian. Mon objectif immédiat est d'assurer l'envoi de messages depuis un PC extérieur jusqu'à l'arduino qui se trouve connecté au raspberry. Pour cela j'ai codé un très simple serveur en C qui reçoit des messages et les envoie à l'arduino via une connexion série. Ce serveur fonctionne sans aucun souci.

Le problème c'est que je dois le lancer en me connectant au robot via SSH, j'aimerais que ce serveur se lance tout seul au démarrage du robot.

Après quelques recherches, voici les manipulations effectuées:

Ecrire le script bash suivant qui lance le serveur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/sh
 
### BEGIN INIT INFO
# Provides:          pamplemousse
# Required-Start:    
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# X-Start-Before:    
# X-Stop-After:      
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: launches pamplemousse server.
# Description:       UDP Server on port 7777 to receive arduino commands.
### END INIT INFO
 
echo "pamplemousse_start executed." >> ~/pamplemousse/daemon_log.txt
 
if [ $# -eq 1 ]; then
    case "$1" in
        start )
            ~/pamplemousse/pamplemousse 7777
            echo "pamplemousse started." >> ~/pamplemousse/daemon_log.txt;;
        stop )
            PID=`ps cax | grep pamplemousse | grep -o '^[ ]*[0-9]*'`
            kill $PID
            echo "pamplemousse stopped." >> ~/pamplemousse/daemon_log.txt;;
        restart | force-reload )
            PID=`ps cax | grep pamplemousse | grep -o '^[ ]*[0-9]*'`
            if [ -z $PID ]; then
                echo "pamplemousse is not running."
            else
                kill $PID
                ~/pamplemousse/pamplemousse 7777
            echo "pamplemousse restarted." >> ~/pamplemousse/daemon_log.txt
            fi;;
        * )
            echo "pamplemousse_start misused:" $1 >> ~/pamplemousse/daemon_log.txt
    esac
else
    echo "usage: $" $0 "[start/stop/restart/reload/force-reload]"
    echo "pamplemousse_start misused." >> ~/pamplemousse/daemon_log.txt
fi
 
echo "pamplemousse_start completely read." >> ~/pamplemousse/daemon_log.txt
mettre ce script ("pamplemousse_start.sh") dans le répertoire /etc/init.d
Le rendre éxecutable par un traditionnel chmod +x

A ce moment j'ai fait des tests en éxecutant le script avec les arguments start et stop, il se comporte comme attendu, avec une trace d'éxecution dans le fichier daemon_log.txt.

On en arrive à la création du "lien symbolique" (les guillemets ici indiquent que je ne sais absolument pas dans quoi je fous les pieds ...). Après plusieurs recherches, j'en suis venu à faire ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
Selon ce site: https://www.debian-administration.or...me_with_Debian
J'aurais dû obtenir une sortie ressemblant à peu près à ce machin:
root@skx:~# update-rc.d blah defaults
Adding system startup for /etc/init.d/blah ...
/etc/rc0.d/K20blah -> ../init.d/blah
/etc/rc1.d/K20blah -> ../init.d/blah
/etc/rc6.d/K20blah -> ../init.d/blah
/etc/rc2.d/S20blah -> ../init.d/blah
/etc/rc3.d/S20blah -> ../init.d/blah
/etc/rc4.d/S20blah -> ../init.d/blah
/etc/rc5.d/S20blah -> ../init.d/blah

Mais j'obtiens seulement ça:
pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'mathkernel' missing LSB tags and overrides

J'ai essayé également en root, mais même résultat. J'ai essayé avec des scripts d'exemple fournis dans plusieurs tutoriels, toujours le même résultat.
Et s'il est besoin de le préciser: quand je relance le robot, les scripts ne se lancent pas. Ou, dans le jargon: "putain mais pourquoi ça veut pas marcher cette merde ?!".

Pouvez-vous m'aider svp ? Merci d'avance