Démarrage-upstart-job

Mbrrr Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, bonsoir,

Sous Linux (ubuntu 11.04 précisément), je voudrais savoir à quoi sert la commande /lib/init/upstart-job. Avec l'histoire des runlevels, j'ai pu comprendre que les services qui sont démarrés pour un niveau d'exécution N, dépendent des liens symboliques se trouvant dans le répertoire /etc/rcN.d/ qui pointent vers des scripts localisés dans /etc/init.d/. Le fait est que j'ai remarqué que ce dernier dossier contient également des liens symboliques vers /lib/init/upstart-job.
A quoi sert donc cette commande?
J'ai cherché mais j'ai rien trouvé.
De plus, j'ai remarqué qu'il y a des programmes qui se lancent au boot mais que j'arrive pas à localiser dans ces dossiers. Par exemple, j'ai téléchargé un programme: alarm-clock. Il lance son daemon au boot. J'ai trouvé dans /etc/init.d/ hw-clock qui pointe vers le fameux /lib/init/upstart-job.
Je voudrais donc savoir dans quelle phase du boot et par quoi ils sont lancés?
rcsysinit?
rc.local?
Quoi?

J'espère avoir été clair.

Merci d'avance pour votre aide!!!

A voir également:

3 réponses

mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
upstart est la nouvelle chaîne de démarrage de linux (et elle est bien plus rapide que l'ancienne), mais le concept de runlevel n'a pas évolué. Je ne sais pas si ça va t'aider mais voici à mon avis ce qu'il faut retenir du démarrage de linux.

Chaque runlevel correspond à un état particulier de ta machine (à l'époque ces états étaient décrits dans /etc/inittab), mais grosso modo :
- 0 : halt : on arrête la machine
- 1 : on lance un minimum de service
- 2-5 : la signification dépend d'une distribution à l'autre, sous debian par exemple, 2 est le runlevel par défaut, les autres ne sont pas utilisés
- 6 : reboot

Quand tu déclenches l'arrêt de ta machine ou son redémarrage, par exemple avec la commande "halt" ou "reboot" tu déclenches un changement de runlevel (que tu dois pouvoir aussi reproduire avec la commande "init").

En fonction des liens symboliques configurés dans les répertoires /etc/rc*.d, ceci déclenche l'arrêt (K comme kill) ou le démarrage (S comme start) de certains services et dans un ordre donné (voir l'entier situé après la lettre K ou S). Ceci était effectué par le script /etc/init.d/rc dans sysv-init-rc (la chaîne de démarrage avant upstart).

Ces liens symboliques pourraient être créés à la main, mais sous debian (et ubuntu) on passera plutôt par la commande update-rc.d. En pratique on n'a jamais à l'utiliser (du moins tant qu'on installe tout via des paquets).

Chez moi le fichier /lib/init/upstart-job est vide. Difficile de dire à quoi il sert. /etc/init.d/ hw-clock sert a configuré l'horloge de la carte mère a priori. Après si tu veux plus de détails, je pense qu'il faut creuser dans le man ou ici :
http://upstart.ubuntu.com/wiki/

Bonne chance
0
Mbrrr Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   4
 
Merci d'une si prompte réponse mamiemando, j'aurais appris quelque chose et je vais continuer à chercher. Si j'apprends quelque chose de solide, je mettrais à jour ce poste.
Encore merci!
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
Alors je retire un truc que j'ai dit, ce matin je t'ai écrit alors qu'upstart n'était pas installé :-) La chaîne que je t'ai décrite concerne essentiellement sysvinit-rc. Depuis, j'ai installé upstart et /lib/init/upstart-job est créé. Il sert (servait) manifestement à rattraper les commandes du genre :

/etc/init.d/ssh start


qui sont dépréciées au profit par exemple de :

service ssh start


Chez moi ce fichier contient désormais :

#!/bin/sh

# Get the service name
service=$(basename $0 | sed s/[SK][0-9][0-9]//)
action=$1

if [ $(id -u) -ne 0 ]; then
        echo "Not running as root. Exiting..."
        exit 1
fi

# Disable this warning for now
#echo "*** Calling /etc/init.d/$service $action directly has been deprecated ***"

case "$action" in
  start)
        echo "Starting $service..."
        start "$service"
        ;;
  stop)
        echo "Stopping $service..."
        stop "$service"
        ;;
  restart|reload|force-reload)
        echo "Restarting $service..."
        restart "$service"
        ;;
  status)
        status "$service"
        ;;
  lsb-header)
        # TODO
        exit 1
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2
        exit 3
        ;;
esac


J'ai décommenté le echo qui s'y trouve pour voir si on y passe (via un /etc/init.d ou un service), mais il ne semble plus être traversé, et du coup je suis un peu perplexe sur son utilité (ou plutôt, quand est-il utilisé).

... on trouve pas mal d'information, notamment le fait qu'upstart repose sur /etc/init et que /etc/init/rc.conf assure la compatibilité avec l'ancienne chaîne de lancement. On retrouve ce qu'il y avait dans /etc/inittab (runlevel par défaut, lancement des tty) dans les différents fichiers présents dans ce répertoire.

Rappelons qu'init est un processus lancé par le noyau et être parent de tous les autres processus ce qu'on peut résumé à "le noyau lance un processus pour amorcer la pompe, ceux qui suivent (et qui font partie du système exploitation) seront lancé grâce à ce processus, notamment tous les services lancés au démarrage).

Si tu lances la commande :

apt-file list upstart


... tu verras que le paquet upstart écrase toutes les commandes de sysvinit qui permettent de gérer le lancement :

(root@aldur) (/etc/init) # apt-file list upstart | grep "^upstart:" | grep "bin/"
upstart: /sbin/halt
upstart: /sbin/init
upstart: /sbin/initctl
upstart: /sbin/poweroff
upstart: /sbin/reboot
upstart: /sbin/reload
upstart: /sbin/restart
upstart: /sbin/runlevel
upstart: /sbin/shutdown
upstart: /sbin/start
upstart: /sbin/status
upstart: /sbin/stop
upstart: /sbin/telinit


.... ce qui explique pourquoi init arrive à travailler avec ces nouveaux fichiers de configuration (on a en fait simplement remplacé init pour qu'il marche dans ce contexte !). C'est d'ailleurs pour cela que le paquet upstart et sysvinit-rc ne peuvent être installés simultanément (car /sbin/init notamment est en conflit). Comme /sbin/init est même un exécutable essentiel (cf plus haut) apt t'affichera même un énorme avertissement au moment de désinstaller sysvinit-rc au profit d'upstart, ce qui est tout à fait normal.

Si tu veux plus de détails sur les rouages d'upstart, je t'invite à regarder le man :

man upstart
man initctl


Est-ce que tout ceci répond à tes interrogations ?
0