Contenu | Rechercher | Menus

Annonce

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 31/10/2006, à 15:29

kwenji

lancer une commande au démarrage ?

bonjour,

aujourd'hui j'ai un petit soucis avec mon clavier Logitch G15 :

j'ai installer tout les programme necessaire poru faire fonctionner lson écran lcd et les touches de fonction mais il y a juste un petit soucis lors de l'initialisation du daemon...

je dois faire un

sudo modprobe uinput

avant de lancer le

sudo g15daemon

à chaque reboot

donc y'aurai il un moyen d'automatiser ces 2 commandes (et si possible sans que j'ai à intervenir pour rentrer mon mot de passe)

Meric d'avance

PS : je suis nouveau sous linux et depuis 2 mois j'ai essayer au moins 5 distributions et je dois dire que le point fort d'Ubuntu (mon choix pour l'instant) c'est sa communauté...

Hors ligne

#2 Le 31/10/2006, à 18:46

luc Milland

Re : lancer une commande au démarrage ?

Salut,

j'ai installer tout les programme necessaire poru faire fonctionner lson écran lcd et les touches de fonction

C'est à dire ? Tu as installé un paquet ubuntu via synaptic ou apt-get, ou tu as récupéré un tarball (.tar ou .tgz) ? Ou un paquet que tu as installé à la mano ?
Cette question, parce qu'un paquet bien fait intègre ces choses là normalement... Donc, si c'est un paquet, il faut faire un rapport de bug au mainteneur du paquet. Si t'as récupéré des sources et tout compilé à la mimine, voilà ce qu'il te reste à faire :

[Attention, ce n'est pas la "debian-way". En vrai, il faudrait faire son paquet et l'installer pour que le système soit au courant, que les fichiers soit connus, que ce soit simple à désinstaller, etc... Mais ça, c'est plus long à apprendre]

1) Charger le module au démarrage

# sudo echo uinput >> /etc/modules

Attention, très importantes, les deux flèches (une flèche = je remplace le contenu du fichier, deux flèches, j'ajoute à la fin).

2) Enregistrer le service

Là, c'est plus velu, faut pas tout prendre au pied de la lettre et vérifier que je ne me plante pas.
Pour faire vite, les services sont arrêtés et démarrés en fonction de niveaux d'exécution, les runlevels.
Pour chaque runlevel, on décide d'arrêter ou de démarrer tel ou tel service. Pas de panique, les runlevels par défaut iront très bien ici.
Pour info, ils sont définis dans /etc/inittab :

....
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
......

Bon. Comme tout cela est très bien fait, on ne s'amuse pas à écrire un script pour arrêter ou lancer un service dans chaque runlevel. Il y a un système de nommage des fichiers et de liens symboliques qui font qu'on utilise un seul script par service.
Ces scripts sont ici : /etc/init.d/
Si on veut les lancer ou les arrêter à la main, on fait sudo /etc/init.d/service start|stop|restart (la barre | signifie "ou"). Par exemple, 'sudo /etc/init.d/networking restart' relance les services de configuration réseau.

Nous, on veut faire :

sudo /etc/init.d/g15daemon start|stop|restart

Pour ça, il existe un fichier type qu'on peut copier et personnaliser :

sudo cp /etc/init.d/skeleton /etc/init.d/g15daemon

Dans ton éditeur préféré lancé avec sudo, épure la bête pour arriver à un résultat de ce genre :

#! /bin/sh

PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="Logitech G15 keyboard daemon"
NAME=g15daemon
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
}


case "$1" in
  start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
  
  restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
                do_start
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                esac
                ;;
          *)
                # Failed to stop
                log_end_msg 1
                ;;
        esac
        ;;
  *)
        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

Attention, vérifie bien le chemin de ton exécutable, et modifie la constante DAEMON le cas échéant. Pour trouver le chemin :

sudo which g15daemon

Le service est près, plus qu'à l'enregistrer (faire les liens symboliques). Une fois de plus, c'est automagique :

update-rc.d g15daemon defaults

Normalement, ça devrait suffire...
Sans se prendre trop la tête, un p'tit coup d'oeil sur les pages de man adéquates et sur Google histoire de vérifier mes dires est une sage précaution...

Dernière modification par luc Milland (Le 31/10/2006, à 18:54)


http://www.praksys.org

Hors ligne

#3 Le 31/10/2006, à 21:33

kwenji

Re : lancer une commande au démarrage ?

Merci beaucoup Luc je n'en esperait pas tant...

j'avais installé les pilote à la main à partir de ce HOWTO qui date un peu...

Juste un petit truc que j'ai pas trop compri c'est pour le

sudo echo uinput >> /etc/modules

Je le me dans mon script /etc/init.d/g15daemon ?

Dernière modification par kwenji (Le 31/10/2006, à 21:44)

Hors ligne

#4 Le 02/11/2006, à 12:00

luc Milland

Re : lancer une commande au démarrage ?

Je le me dans mon script /etc/init.d/g15daemon ?

non non : c'est à taper dans le shell : ça ajoute le texte "uinput" dans /etc/modules (les modules listés dans ce fichier son chargés au démarrage).


http://www.praksys.org

Hors ligne

#5 Le 12/11/2006, à 13:19

YMulleneers

Re : lancer une commande au démarrage ?

Plus simple sous ubuntu 6.10... Utiliser

(menu système)/Préférence/Sessions/(Onglets)/Programmes de démarages/Ajouter

Voilà. Linux Ca marche et c'est simplissime.


Linux Mint 16

J'aime à utiliser Linux.

Hors ligne