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

Le mystère de l'init de pulseaudio



Bonjour à tous,

Je suis assez perplexe face au script init de pulseaudio, ce dernier est
configuré par défaut pour ne pas être lancé au démarrage du système, or
j'ai l'impression que ce script ne peut pas fonctionner en l'état, du
moins, je n'arrive personnellement pas à le faire marcher à condition de
l'éditer lourdement, et ça me laisse dubitatif car ça ne semble pas être
le cas des autres utilisateurs.

Je vous copie le fichier tel qu'il est présent :

> #!/bin/sh -e
> ### BEGIN INIT INFO
> # Provides:          pulseaudio esound
> # Required-Start:    $remote_fs $syslog dbus
> # Required-Stop:     $remote_fs $syslog dbus
> # Should-Start:      dbus
> # Should-Stop:       dbus
> # Default-Start:     2 3 4 5
> # Default-Stop:      1
> # Short-Description: Start the PulseAudio sound server
> # Description:       System mode startup script for
> #                    the PulseAudio sound server.
> ### END INIT INFO
> 
> DAEMON=/usr/bin/pulseaudio
> PIDFILE=/var/run/pulse/pid 
> PATH=/sbin:/bin:/usr/sbin:/usr/bin
> 
> test -x $DAEMON || exit 0
> 
> . /lib/lsb/init-functions
> 
> PULSEAUDIO_SYSTEM_START=0
> DISALLOW_MODULE_LOADING=1
> 
> test -f /etc/default/pulseaudio && . /etc/default/pulseaudio
> test "$PULSEAUDIO_SYSTEM_START" != "1" && exit 0
> 
> pulseaudio_start () {
> 	log_begin_msg "Starting PulseAudio Daemon"
> 	start-stop-daemon -x $DAEMON -p $PIDFILE --start -- --system --daemonize --high-priority --log-target=syslog --disallow-module-loading=$DISALLOW_MODULE_LOADING
> 	status=$?
> 	if [ -e /var/run/pulse/.esd_auth ]; then
> 		chown pulse:pulse-access /var/run/pulse/.esd_auth
> 		chmod 640 /var/run/pulse/.esd_auth
> 	fi
> 	if [ -e /var/run/pulse/.pulse-cookie ]; then
> 		chown pulse:pulse-access /var/run/pulse/.pulse-cookie
> 		chmod 640 /var/run/pulse/.pulse-cookie
> 	fi
> 	log_end_msg ${status}
> }
> 
> pulseaudio_stop () {
> 	log_begin_msg "Stopping PulseAudio Daemon"
> 	start-stop-daemon -p $PIDFILE --stop --retry 5 || echo -n "... pulseaudio is not running"
> 	log_end_msg $?
> }
> 
> case "$1" in
> 	start|stop)
> 		pulseaudio_${1}
> 		;;
> 	restart|reload|force-reload)
> 		pulseaudio_stop
> 		pulseaudio_start
> 		;;
> 	force-stop)
> 		pulseaudio_stop
> 		killall pulseaudio || true
> 		sleep 2
> 		killall -9 pulseaudio || true
> 		;;
> 	*)
> 		echo "Usage: /etc/init.d/pulseaudio {start|stop|force-stop|restart|reload|force-reload}"
> 		exit 1
> 		;;
> esac
> 
> exit 0


Pour ce que je maitrise du bash, ce script ne me semble pas
problématique, il suffit simplement de changer les options suivante pour
activer le script :

> PULSEAUDIO_SYSTEM_START=1
> DISALLOW_MODULE_LOADING=0

Or voilà, après édition de ces lignes, le script ne se lance toujours pas.

Je suis obligé de commenter cette ligne pour que le script veuille bien
s'exécuter :

> test "$PULSEAUDIO_SYSTEM_START" != "1" && exit 0

Mais alors survient un autre problème tout aussi déroutant, l'option
DISALLOW_MODULE_LOADING reste définit sur 1 malgré le fait que je l'ai
mise sur 0.

Étant donné ma stupeur, j'ai ajouté une ligne de débugage pour afficher
les valeur des variables

> echo "$PULSEAUDIO_SYSTEM_START & $DISALLOW_MODULE_LOADING"

les valeurs qui apparaissent correspondent à ce que j'ai inscrit, donc
pas de problème, mais si je vérifie les options d'exécution de
pulseaudio, alors grosse surprise :


> ~$ sudo /etc/init.d/pulseaudio start
> 1 & 0 (note : c'est la ligne de débugage)
> Starting PulseAudio Daemon.
> ~$ ps -ef | grep pulse
> pulse    19081     1  0 00:38 ?        00:00:00 /usr/bin/pulseaudio --system --daemonize --high-priority --log-target=syslog --disallow-module-loading=1

Ma question est WTF ?

Étant un peu pragmatique, je vous avoue que j'ai viré la variable du
script et directement inscrit l'option, et là ça fonctionne. Mais c'est
à n'y rien comprendre, comment une variable définit sur 0 peut-elle d'un
seul coup se retrouver en 1 ?

Si quelqu'un y comprend quelque chose...

Merci d'avance.


Reply to: