Niveau de demarage et services
Fermé
wikilili
Messages postés
197
Date d'inscription
lundi 4 avril 2011
Statut
Membre
Dernière intervention
12 février 2014
-
25 nov. 2012 à 19:27
xila_geek Messages postés 8 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 22 juin 2013 - 21 juin 2013 à 18:43
xila_geek Messages postés 8 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 22 juin 2013 - 21 juin 2013 à 18:43
A voir également:
- Niveau de demarage et services
- Mise a niveau windows 10 - Accueil - Mise à jour
- Démarage - Guide
- Désactiver services inutiles windows 11 - Guide
- 4 images 1 mot niveau 10 chaperon rouge ✓ - Forum Jeux vidéo
- Framework des services google ✓ - Forum Téléphones & tablettes Android
2 réponses
xila_geek
Messages postés
8
Date d'inscription
mardi 18 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
9
21 juin 2013 à 18:43
21 juin 2013 à 18:43
en fonction du niveau d'exécution ou runlevel certains services (ou programmes) sont lancés (serveur web, interface graphique, serveur DHCP etc.).
t'as un tuto très clair : http://j-kh.fr/2012/08/25/les-runlevels-sous-linux/
t'as un tuto très clair : http://j-kh.fr/2012/08/25/les-runlevels-sous-linux/
mamiemando
Messages postés
33381
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
26 novembre 2024
7 802
25 nov. 2012 à 21:47
25 nov. 2012 à 21:47
Dans l'idée quand linux démarre il lance le processus init. Ce processus va en lancer plein en cascade, en gros tous les "services" sensés se lancer au "démarrage" (plus exactement ceux que l'on charge au runlevel par défaut, voir plus loins).
Pour cela init utilise les informations qui sont stockées dans /etc/inittab. Ce fichier décrit pour chaque runlevel un certain nombre de chose à faire et le runlevel par défaut. Un runlevel correspond à un état de la machine. La plupart des linux utilisent les conventions suivantes :
- 0 : arrêt de la machine
- 1 : mode single (récupération)
- 6 : reboot
Sous debian, le runlevel par défaut est 2 et amorce tous les services, mais ce n'est pas le cas de toutes les distributions.
Ensuite, on pourrait énumérer dans /etc/inittab et pour le runlevel qui nous intéresse tous les services à amorcer. Quelques exemple de services :
- configurer le réseau
- la plupart des "serveurs" (ssh, mysql, apache...) se lancent ou se coupent au travers d'un service.
Concrètement un service est représenté par un script shell qui permet de le démarrer, le stopper ou le relancer (voir dans /etc/init.d). Par exemple si un serveur ssh est installé tu auras un fichier /etc/init.d/sshd ou /etc/init.d/ssh présent (le nommage peut différer selon la distribution linux).
On pourrait alors mentionner explicitement dans /etc/inittab un truc du genre "lance le service mysql au runlevel 2" et ainsi de suite pour chaque service. Mais on se rend bien compte que ce ne serait pas très pratique, car à chaque fois qu'on installe ou désinstalle un serveur (ssh, mysql, ...) il faudrait corriger /etc/inittab.
C'est pourquoi une autre stratégie a été adoptée : chaque service est référencé par des liens symboliques stockés dans /etc/rc1.d à /etc/rc6.d correspondant à chaque runlevel.
Pour exploiter ces liens, /etc/inittab fait appel à un script nommé /etc/init.d/rc qui reçoit en paramètre le runlevel dans lequel on s'apprête à basculer. Supposons que /etc/init.d/rc reçoivent en paramètre la valeur 2, alors il va regarder dans /etc/rc2.d les liens symboliques qui y sont présent.
En fonction de leur nom /etc/init.d/rc sait s'il doit les arrêter (K comme kill) ou les démarrer (S comme start). Le numéro qui suit permet à /etc/init.d/rc de savoir dans quel ordre procéder. Pour t'en convaincre tu peux regarder le code source écrit dans le fichier /etc/init.d/rc.
Ainsi, on voit qu'en fonction des liens symboliques dans les répertoires /etc/rc*.d, le script /etc/init.d/rc sait exactement quoi faire à chaque changement runlevel. Ainsi, insérer ssh dans la chaîne de lancement consiste simplement à créer les liens symboliques appropriés et aux bons endroits. C'est le paquet correspondant au serveur ssh qui se chargera de gérer ces liens symboliques.
Comme ce fonctionnement n'est pas trivial à comprendre, les distributions linux mettent souvent à disposition des commandes dédiées à la gestion de ces liens symboliques (par exemple udpate-rc.d sous debian). Mais en pratique si le paquet est bien fait (ce qui est généralement le cas) un utilisateur n'a jamais à utiliser ce genre de commande, ce sera géré automatiquement au niveau du paquet.
À noter en plus que la chaîne de démarrage de linux est susceptible de différer selon la machine que tu considères. Ici j'ai parlé de sysv-init qui est la chaîne de lancement installée par défaut. Si tu regardes par exemple upstart tu verras que ça fonctionne et ça se configure différemment.
Bonne chance
Pour cela init utilise les informations qui sont stockées dans /etc/inittab. Ce fichier décrit pour chaque runlevel un certain nombre de chose à faire et le runlevel par défaut. Un runlevel correspond à un état de la machine. La plupart des linux utilisent les conventions suivantes :
- 0 : arrêt de la machine
- 1 : mode single (récupération)
- 6 : reboot
Sous debian, le runlevel par défaut est 2 et amorce tous les services, mais ce n'est pas le cas de toutes les distributions.
Ensuite, on pourrait énumérer dans /etc/inittab et pour le runlevel qui nous intéresse tous les services à amorcer. Quelques exemple de services :
- configurer le réseau
- la plupart des "serveurs" (ssh, mysql, apache...) se lancent ou se coupent au travers d'un service.
Concrètement un service est représenté par un script shell qui permet de le démarrer, le stopper ou le relancer (voir dans /etc/init.d). Par exemple si un serveur ssh est installé tu auras un fichier /etc/init.d/sshd ou /etc/init.d/ssh présent (le nommage peut différer selon la distribution linux).
ls /etc/init.d
On pourrait alors mentionner explicitement dans /etc/inittab un truc du genre "lance le service mysql au runlevel 2" et ainsi de suite pour chaque service. Mais on se rend bien compte que ce ne serait pas très pratique, car à chaque fois qu'on installe ou désinstalle un serveur (ssh, mysql, ...) il faudrait corriger /etc/inittab.
(mando@silk) (~) $ grep default /etc/inittab # The default runlevel. id:2:initdefault:
C'est pourquoi une autre stratégie a été adoptée : chaque service est référencé par des liens symboliques stockés dans /etc/rc1.d à /etc/rc6.d correspondant à chaque runlevel.
(mando@silk) (~) $ ls -l /etc/rc2.d/*ssh lrwxrwxrwx 1 root root 13 nov. 20 22:04 /etc/rc2.d/S02ssh -> ../init.d/ssh
Pour exploiter ces liens, /etc/inittab fait appel à un script nommé /etc/init.d/rc qui reçoit en paramètre le runlevel dans lequel on s'apprête à basculer. Supposons que /etc/init.d/rc reçoivent en paramètre la valeur 2, alors il va regarder dans /etc/rc2.d les liens symboliques qui y sont présent.
En fonction de leur nom /etc/init.d/rc sait s'il doit les arrêter (K comme kill) ou les démarrer (S comme start). Le numéro qui suit permet à /etc/init.d/rc de savoir dans quel ordre procéder. Pour t'en convaincre tu peux regarder le code source écrit dans le fichier /etc/init.d/rc.
Ainsi, on voit qu'en fonction des liens symboliques dans les répertoires /etc/rc*.d, le script /etc/init.d/rc sait exactement quoi faire à chaque changement runlevel. Ainsi, insérer ssh dans la chaîne de lancement consiste simplement à créer les liens symboliques appropriés et aux bons endroits. C'est le paquet correspondant au serveur ssh qui se chargera de gérer ces liens symboliques.
Comme ce fonctionnement n'est pas trivial à comprendre, les distributions linux mettent souvent à disposition des commandes dédiées à la gestion de ces liens symboliques (par exemple udpate-rc.d sous debian). Mais en pratique si le paquet est bien fait (ce qui est généralement le cas) un utilisateur n'a jamais à utiliser ce genre de commande, ce sera géré automatiquement au niveau du paquet.
À noter en plus que la chaîne de démarrage de linux est susceptible de différer selon la machine que tu considères. Ici j'ai parlé de sysv-init qui est la chaîne de lancement installée par défaut. Si tu regardes par exemple upstart tu verras que ça fonctionne et ça se configure différemment.
Bonne chance