Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/12/2021, à 12:40

denis.beurive

Comment débugger un script sous "/etc/init.d" ?

Bonjour à tous,

Je suspecte une erreur dans le script suivant :

/etc/init.d/rng-tools

En bref, la structure de ce script est la suivante :

  DESC="Hardware random number generator entropy gatherer daemon"
  ...
  [ -r /etc/default/rng-tools ] && . /etc/default/rng-tools
  ...
  . /lib/lsb/init-functions
  ...
  start)
	log_daemon_msg "Starting $DESC" "$NAME"
        if ! finddevice; then
                log_end_msg 1 "no hardware RNG device found"
                exit 1
        fi

	START="${START} -- -r ${HRNGDEVICE} ${RNGDOPTIONS}"
	if start-stop-daemon ${START} >/dev/null 2>&1 ; then
		echo "${NAME}."
                log_end_msg 0
        elif start-stop-daemon --test ${START} >/dev/null 2>&1; then
                log_end_msg 1
                exit 1
	else
                log_end_msg "already running."
	fi
	;;

Je m'attends à ce que la chaîne de caractères ci-dessous soit écrite quelque part (à la console ou dans un fichier de LOG) :

"Starting $DESC"

Cette chaîne n'est pas affichée à la console.

J'ai effectué des recherches dans tous les fichiers de LOG archivés sous le répertoire "/var/log".

$ DESC="Hardware random"
$ pwd
/var/log
$ sudo grep -R "${DESC}" *.log
[sudo] Mot de passe de denis : 
auth.log:Dec  8 17:12:44 labo sudo:    denis : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/grep -R Hardware random number generator entropy gatherer daemon alternatives.log apport.log auth.log boot.log bootstrap.log dpkg.log fontconfig.log gpu-manager.log kern.log ubuntu-advantage.log

Veuillez noter que:

Le script est exécuté jusqu'au chargement du fichier ci-dessous (100% certain):

 /lib/lsb/init-functions

Je peux dire que le service est bien lancé:

 systemctl status rng-tools
● rng-tools.service - Add entropy to /dev/random 's pool a hardware RNG
     Loaded: loaded (/lib/systemd/system/rng-tools.service; enabled; vendor preset>
     Active: active (running) since Wed 2021-12-08 11:46:20 CET; 42min ago
   Main PID: 763 (rngd)
      Tasks: 1 (limit: 18478)
     Memory: 312.0K
        CPU: 16ms
     CGroup: /system.slice/rng-tools.service
             └─763 /usr/sbin/rngd -r /dev/hwrng -f

déc. 08 11:46:20 labo systemd[1]: Started Add entropy to /dev/random 's pool a har>
déc. 08 11:46:20 labo rngd[763]: read error
déc. 08 11:46:20 labo rngd[763]: read error

Par conséquent, la section "start" est bien exécutée. Mais, alors, pourquoi ne vois-je pas la chaîne de caractères "Starting Hardware random number" ?

Je suis certain à 100% que le fichier ci-dessous est chargé:

/etc/default/rng-tools

Mais, même si la valeur de la variable HRNGDEVICE est correcte (extraite du fichier de configuration: /dev/ttyACM0), la valeur réllement utilisée n'est pas la bonne (/dev/hwrng) !!!

J'ai essayé d'utiliser la fonction ci-dessous pour ajouter des messages de DEBUG:

log_daemon_msg

Résultat : rien. Aucun message n'est affiché nulle part (console, fichiers de LOG...) !!!

J'ai essayé de créer des "fichiers témoins" (avec touch), mais ces derniers ne sont pas créés. Pourtant, le service est lancé, ce qui signifie qu'il n'y a pas d'erreur d'exécution (set -e) !!!

Un vrai mystère !!!

Question : comment debugger un script sous /etc/init/d ?

Merci

Denis

Dernière modification par denis.beurive (Le 08/12/2021, à 17:28)

Hors ligne

#2 Le 08/12/2021, à 13:58

bruno

Re : Comment débugger un script sous "/etc/init.d" ?

Modération : la langue du forum et le français. Merci de modifier ton message et son titre.

Hors ligne