Vous êtes sur la page 1sur 17

Administration avancée

des systèmes et réseaux


sous Linux

Chapitre 2. Démarrage du système

Prof. M. RIDOUANI
Objectifs
• Personnalisation du processus de démarrage
système
– interroger et modifier le comportement des
services systèmes dans différents niveaux
d'exécution ;
– configurer la procédure de démarrage des
services.

2
Pr. RIDOUANI: Chapitre 2. Démarrage du système
Plan
0. Le processus de démarrage d'un système Linux
1. Processus init et niveau d'exécution
2. Gestion des services
3. Gestion des services sous Red Hat
4. Gestion des services sous Debian
5. Upstart
6. Systemd
7. Redémarrer et éteindre un système

3
Pr. RIDOUANI: Chapitre 2. Démarrage du système
0. Le processus de démarrage d'un système Linux
• Le démarrage du système implique quatre programmes lancés
successivement : le BIOS (Basic Input Output System), le chargeur de
démarrage, le noyau et le processus init.
• Le BIOS est le premier programme exécuté, il réside au niveau du ROM.
Il charge les 512 premiers octets, ces 512 octets constituent le secteur
d'amorçage ou le Master Boot Record (MBR).
• Le MBR contient plusieurs informations sur les partitions du disque. Il
inclut aussi le chargeur de démarrage (ou une partie du chargeur de
démarrage). Le chargeur de démarrage Grub (Grand Unified
Bootloader) est utilisé sur la plupart des distributions Linux. Il est
décomposé en deux parties. La première partie réside sur le MBR, elle
charge la deuxième partie qui se trouve dans une partition du disque.
Une fois que la deuxième partie du Grub est chargée, une interface est
affichée permettant à l'utilisateur de choisir quel système d'exploitation
démarrer.
• Le chargeur de démarrage exécute le noyau. Ce dernier continue le
démarrage de la machine, il détecte et initialise les périphériques,
monte la partition racine et démarre le processus init.

4
Pr. RIDOUANI: Chapitre 2. Démarrage du système
0. Le processus de démarrage d'un système Linux

5
Pr. RIDOUANI: Chapitre 2. Démarrage du système
1. Processus init et niveau d'exécution
• Le processus init est le premier processus utilisateur créé par le
noyau lors du démarrage du système (son PID=1). Il consulte le
fichier /etc/inittab pour décider quel niveau d'exécution
démarrer. Les niveaux d'exécution pour la distribution Red Hat et
ses dérivés sont :
– 0 - Arrêt
– 1- Mode mono-utilisateur ou maintenance
– 2 - mode console, multi-utilisateurs, sans le support réseau
– 3 - mode multi-utilisateurs avec le support réseau
– 4 - Inutilisé
– 5 - X11 -> mode multi-utilisateurs avec interface graphique
– 6 - Redémarrage

• Sur la distribution Debian et ses dérivés les niveaux d'exécution


de 2 à 5 sont tous en mode multi-utilisateurs. 6
Pr. RIDOUANI: Chapitre 2. Démarrage du système
1. Processus init et niveau d'exécution

7
Pr. RIDOUANI: Chapitre 2. Démarrage du système
1. Processus init et niveau d'exécution
• Runlevel (les niveaux d’exécution)
Lorsque votre système Linux démarre, vous apercevez (en appuyant sur la touche <ESC> afin de voir la
version « verbeuse » du démarrage) divers services qui sont chargés. Ce sont les programmes du niveau
d'exécution sur lequel votre système fonctionne qui sont chargés à partir du répertoire représentant le
niveau d'exécution du système.
• Les répertoires des niveaux d’exécution sont :
– Run level 0 – /etc/rc.d/rc0.d/
– Run level 1 – /etc/rc.d/rc1.d/
– Run level 2 – /etc/rc.d/rc2.d/
– Run level 3 – /etc/rc.d/rc3.d/
– Run level 4 – /etc/rc.d/rc4.d/
– Run level 5 – /etc/rc.d/rc5.d/
– Run level 6 – /etc/rc.d/rc6.d/

• Dans ces répertoires, on retrouve des noms de programme qui commencent par la lettre S et K.
• Ceux qui commencent par la lettre S sont exécutés au démarrage du système (la lettre S pour « startup »
= démarrage).
• Ceux qui commencent par la lettre K sont exécutés à l'arrêt du système (la lettre K pour « kill » = arrêt).
• De plus, dans le nom de ces programmes, il y a un chiffre après la lettre S ou K. Ce chiffre indique l'ordre
d'exécution de chaque programme lors du démarrage ou de l'arrêt du système. Par exemple, S12syslog
est le 12e programme qui s'exécutera au démarrage du système.

• Les commandes init et telinit permettent de changer de niveau d'exécution.


• EXEMPLE : Pour basculer du niveau d'exécution courant vers le niveau d'exécution 1 :
# telinit 1 ou init 1
Pour vérifier le niveau d’exécution courant : runlevel ou who -r
8
Pr. RIDOUANI: Chapitre 2. Démarrage du système
1. Processus init et niveau d'exécution
Les scripts utlisé par init pour controler les Runlevels
• Après le chargement du noyau, le script correspondant à sysinit
dans fichier inittab est chargé :
- Sous Red Hat: si::sysinit:/ etc/rc.d/rc.sysinit
- Sous Debian : si::sysinit:/e tc/init.d/rcS
- Rôle :
–Configuration des paramètres du noyau présents dans /etc/sysctl.conf
–Configuration de l’horloge du système.
–Chargement des tables de caractères du clavier.
–Activation des partitions d’échange SWAP.
–Définition du nom d’hôte.
–Contrôle et montage du système de fichiers racine (en lecture-écriture cette
fois).
–Contrôle et montage des autres systèmes de fichiers.

• Le fichier rc exécute les scripts du répertoire rcN.d où N correspond au


niveau d'exécution
• Le script rc.local est exécuté par la commande /sbin/init au démarrage
ou lors de la modification des niveaux d'exécution

9
Pr. RIDOUANI: Chapitre 2. Démarrage du système
2. Gestion des services
• Les niveaux d'exécution sont utilisés par le système lors du
démarrage pour savoir quels services démarrer et quels services
arrêter.
• Par exemple les fichiers dans le répertoire /etc/rcN.d sont des
liens symboliques vers des scripts stockés dans le répertoire
/etc/init.d. Ces scripts contiennent les procédures pour démarrer,
arrêter ou déterminer l’état de chaque service
– Tous les scripts préfixés par la lettre ‘K’ sont exécutés avec l’argument ‘stop’
– Tous les scripts préfixés par la lettre ‘S’ sont exécutés avec l’argument ‘start’
– ‘numéro’ détermine l’ordre d’exécution.
– Bien entendu les scripts ‘K’ sont exécutés avant les scripts ‘S’
– Par exemple le script ‘K15httpd’ est exécuté avant ‘K20nfs’ et le script ‘S08iptables’ est
exécuté avant ‘S55sshd’
lrwxrwxrwx. 1 root root 15 janv. 10 10:33 K15httpd -> ../init.d/httpd
lrwxrwxrwx. 1 root root 13 janv. 10 10:34 K20nfs -> ../init.d/nfs
lrwxrwxrwx. 1 root root 18 janv. 10 10:28 S08iptables -> ../init.d/iptables
lrwxrwxrwx. 1 root root 14 janv. 10 10:34 S55sshd -> ../init.d/sshd 10
Pr. RIDOUANI: Chapitre 2. Démarrage du système
2. Gestion des services
• Les services peuvent être lancés à partir des scripts du répertoire /etc/init.d.
Ces scripts peuvent être appelés avec différents arguments :
– start : pour démarrer le service ;
– stop : pour arrêter le service ;
– restart : pour arrêter puis redémarrer le service ;
– reload : pour envoyer un signal SIGHUP au processus du service en cours d'exécution. Ce
signal le force à relire ses fichiers de configuration ;
– status : indique si le service est en cours d'exécution.

• Démarrer/Arrêter le service httpd sous Redhat


– Service httpd {status/start/stop/restart/reload}
– /etc/init.d/httpd {status/start/stop/restart/reload}

• Démarrer/Arrêter le service apache2 sous Debian


– invoke-rc.d apache2 {status/start/stop/restart/reload}
– /etc/init.d/apache2 {status/start/stop/restart/reload}

11
Pr. RIDOUANI: Chapitre 2. Démarrage du système
3. Gestion des services sous Red Hat
• Le programme /etc/rc.d/rc exécutant tous les scripts présents dans le
répertoire du runlevel, il suffira d’ajouter un lien dans le répertoire vers le
script adéquat pour lancer ou arrêter un service lorsque le système entre dans
ce niveau d’exécution.
• Il existe des outils en ligne de commandes ou avec une interface graphique qui
permettent l’ajout et la suppression de services au démarrage
• Sous Redhat et ses dérivés on utilise la commande chkconfig pour gérer un
service et maintenir les liens symboliques vers les scripts de démarrage dans
les répertoires /etc/rcN.d
• Il faut les deux lignes suivantes au début de chaque script.
# chkconfig: [niveau_exécution] [num_start] [num_kill]
# description: [descriptif du script]
• Exemple:
# chkconfig: 2345 10 90
# description: Commentaires libres

12
Pr. RIDOUANI: Chapitre 2. Démarrage du système
3. Gestion des services sous Red Hat
• Gérer et visualiser l’état d’un service
Syntaxe de la commande chkconfig
chkconfig [--options] [service]
chkconfig [--level niveaux] service on|off

Option longue Description


--list Visualise l’état des services (--list seul liste tous les services créés).
--add Crée des liens symboliques.
--del Supprime des liens symboliques.
--level Modifie les liens symboliques.

13
Pr. RIDOUANI: Chapitre 2. Démarrage du système
4. Gestion des services sous Debian
• Sous Debian et ses dérivés on utilise la commande update-rc.d pour gérer un
service et maintenir les liens symboliques vers les scripts de démarrage dans
les répertoires /etc/rcN.d
• Gérer et visualiser l’état d’un service
Syntaxe de la commande update-rc.d
update-rc.d nom_service { start | stop } numéro_sequence numéros_niveaux_execution .
update-rc.d nom_service { enable | disable | defaults | remove }

Option longue Description


enable pour activer le service
disable pour désactiver le service
remove pour enlever le démarrage automatique du service
defaults Pour re-activer le démarrage automatique du service

14
Pr. RIDOUANI: Chapitre 2. Démarrage du système
5. Upstart
• Plusieurs distributions Linux récentes, y compris les dernières versions d'Ubuntu
et de Fedora, ont remplacé le système classique init d’UNIX système V, SysV init,
basé sur les niveaux d'exécution, par un nouveau système Upstart. Upstart est
un système de gestion de services fonctionnant avec les événements. Il supervise
les services pendant que le système fonctionne. Ainsi il démarre ou arrête des
services en réponse aux événements tels que l'ajout d'un périphérique.
• Pour un besoin de compatibilité, il émule également les niveaux d'exécution
traditionnels de init.
• Un système qui utilise Upstart remplace à la fois le fichier /etc/inittab et les
répertoires spécifiques des niveaux d'exécution par les scripts placés dans le
répertoire /etc/init (ce répertoire a été appelé /etc/event.d sur des versions
antérieures d'Upstart).

15
Pr. RIDOUANI: Chapitre 2. Démarrage du système
6. Systemd
• systemd est une alternative au démon init de System V. Il est spécifiquement
conçu pour le noyau Linux. Il a pour but d’offrir un meilleur cadre pour la gestion
des dépendances entre services, de permettre le chargement en parallèle des
services au démarrage, et de réduire les appels aux scripts shell.
• Gérer et visualiser l’état d’un service
Syntaxe de la commande systemctl
systemctl status unit
systemctl enable | disable unit
systemctl start | stop | restart | reload unit

16
Pr. RIDOUANI: Chapitre 2. Démarrage du système
7. Redémarrer et éteindre un système

Redémarrer le système Arrêter le système Eteindre le système

systemctl reboot systemctl halt systemctl poweroff


shutdown -r now shutdown -h now poweroff
Reboot halt
init 6 init 0

17
Pr. RIDOUANI: Chapitre 2. Démarrage du système

Vous aimerez peut-être aussi