Vous êtes sur la page 1sur 19

Préparation

Topic à L’examen
101: LPI101
System Architecture

Slim MARGHLI-Senior Linux System Administrator


101.3 Change runlevels / boot targets and shutdown
or reboot system

Weight: 3
Description:
Candidates should be able to manage the SysVinit runlevel or systemd boot target of the
system. This objective includes changing to single user mode, shutdown or rebooting the
system.
Candidates should be able to alert users before switching runlevels / boot targets and properly
terminate processes. This objective also includes setting the default SysVinit runlevel or
systemd boot target. It also includes awareness of Upstart as an alternative to SysVinit or
systemd.
Key Knowledge Areas:

Set the default runlevel or boot target.

Change between runlevels / boot targets including single user mode.

Shutdown and reboot from the command line.

Alert users before switching runlevels / boot targets or other major system events.

Properly terminate processes.

Awareness of acpid.

2 Slim MARGHLI-Senior Linux System Administrator


101.3 Change runlevels / boot targets and shutdown
or reboot system

Partial list of the used files, terms and utilities:



/etc/inittab

shutdown

init

/etc/init.d/

telinit

systemd

systemctl

/etc/systemd/

/usr/lib/systemd/

wall

3 Slim MARGHLI-Senior Linux System Administrator


SysVinit

Un gestionnaire de services basé sur


la norme SysVinit fournira un
ensemble prédéfini d’états du système,
appelés runlevels (niveaux
d’exécution), et les fichiers de scripts
du service correspondants à exécuter.

4
SysVinit

Étapes du démarrage d'un ordinateur sous Linux avec le système d'initialisation System V
5
SysVinit


/sbin/init : programme chargé de la gestion des niveaux d’exécution et des
démons/ressources associés .


Lors de l’initialisation du système, le programme init identifie le niveau d’exécution
requis, défini par un paramètre du noyau ou dans le fichier /etc/inittab, et charge les
scripts correspondants qui y sont référencés pour le niveau d’exécution donné.


Chaque niveau d’exécution peut être associé à une série de fichiers de services,
généralement des scripts dans le répertoire /etc/init.d/.


Tous les scripts contenus dans les différents répertoires /etc/rcX.d ne sont que des
liens symboliques, créés à l'installation du paquet concerné par le programme
update-rc.d, et menant vers les scripts réels, stockés sous /etc/init.d/.

6
SysVinit

inittab

syntaxe :
id:niveaux:action:processus

Id : un nom générique comportant
jusqu’à quatre caractères, utilisé
pour identifier l’entrée.

Niveaux : une liste de numéros
de niveaux d’exécution pour
lesquels une action spécifiée doit
être exécutée.

7
SysVinit


Action : définit comment init va exécuter le processus indiqué par le terme
processus. Les actions disponibles sont les suivantes :

boot : Le processus sera exécuté lors de l’initialisation du système. Le champ
niveaux est ignoré.

Bootwait : Le processus sera exécuté pendant l’initialisation du système et init
attendra qu’il se termine pour continuer. Le champ niveaux est ignoré.

sysinit : Le processus sera exécuté après l’initialisation du système, quel que soit
le niveau d’exécution. Le champ niveaux est ignoré.

wait : Le processus sera exécuté pour les niveaux d’exécution donnés et init
attendra qu’il se termine pour continuer.

respawn : Le processus sera relancé s’il est interrompu.

ctrlaltdel :Le processus sera exécuté lorsque le processus init reçoit le signal
SIGINT, déclenché lorsque la séquence de touches Ctrl+Alt+Del est actionnée.
8
SysVinit

Le niveau d’exécution par défaut 



Celui qui sera choisi si aucun autre n’est fourni comme paramètre du noyau.

Défini dans /etc/inittab, dans l’entrée id:x:initdefault. Le x est le nombre correspondant au
niveau d’exécution par défaut. Ce nombre ne doit jamais être égal à 0 ou 6, étant donné que
cela entraînerait l’arrêt ou le redémarrage du système dès la fin du processus de démarrage
telinit
La commande telinit q devra être exécutée après chaque modification du fichier /etc/inittab.
L’argument q (ou Q) indique à init de recharger sa configuration.
runlevel

La commande runlevel indique le niveau d’exécution en cours pour le système.

Cette commande affiche deux valeurs, la première est le niveau d’exécution précédent et la
seconde correspond au niveau d’exécution actuel :
$ runlevel
N3
9
SysVinit

La lettre N dans la sortie montre que le niveau d’exécution n’a pas changé depuis le dernier
démarrage.
init et telinit

init peut être utilisé pour basculer à chaud entre les niveaux d’exécution d’un système, sans qu’il
soit nécessaire de redémarrer.

telinit peut également être utilisée pour basculer d’un niveau à l’autre. Par exemple, les
commandes telinit 1, telinit s ou telinit S feront passer le système au niveau d’exécution 1.
/etc/init.d/

Les scripts utilisés par init pour configurer chaque niveau d’exécution sont rangés dans le
répertoire /etc/init.d/.

Chaque niveau d’exécution dispose d’un répertoire associé dans /etc/, nommé /etc/rc0.d/,
/etc/rc1.d/, /etc/rc2.d/, etc., avec les scripts censés être exécutés au démarrage du niveau
d’exécution correspondant.

Les fichiers contenus dans ces répertoires ne sont que des liens symboliques vers les scripts
réels dans /etc/init.d/.
10
SysVinit


Nom de lien : [SK]NNservice

S : lance le script avec l'argument start (démarrage du service)

K : lance le script avec l'argument stop (arrêt du service)

NN : est un rang qui fixe l'ordre dans lequel les scripts sont lancés

sam@sam-ThinkPad-E14:/etc/rc0.d$ ls
K01alsa-utils K01irqbalance K01speech-dispatcher
K01atd K01kerneloops K01spice-vdagent
[…]

sam@sam-ThinkPad-E14: /etc/rc5.d$ ls
K01apport S01cups-browsed S01rsync
K01speech-dispatcher S01dbus S01rsyslog
S01acpid S01docker S01saned
S01anacron S01gdm3 S01spice-vdagent
S01atd S01grub-common S01unattended-upgrades
11
systemd


Les ressources et les services du système sont désignés sous le nom d’unités (units)
par systemd.

Une unité est composée d’un nom, d’un type et d’un fichier de configuration
correspondant : L’unité pour un processus de serveur _httpd (comme le serveur web
Apache) sera httpd.service sur les distributions de la famille Red Hat et son fichier
de configuration sera également appelé httpd.service (sur les distributions de la
famille Debian, cette unité est appelée apache2.service).
unités systemd

Service : pour les ressources actives du système qui peuvent être initiées,
interrompues et rechargées.

Socket : peut être un socket de système de fichiers ou un socket réseau. Toutes les
unités socket ont une unité service correspondante, chargée lorsque le socket est
sollicité.
12
systemd


device : Une unité device est associée à un périphérique matériel identifié par le noyau. Un
périphérique ne sera considéré comme une unité systemd que s’il existe une règle udev à
cet effet. Une unité device peut être utilisée pour résoudre les dépendances de configuration
lorsque certains composants matériels sont détectés, étant donné que les propriétés de la
règle udev peuvent être utilisées comme paramètres pour l’unité device.

mount : Une unité mount est une définition de point de montage dans le système de fichiers,
similaire à une entrée dans /etc/fstab.

automount : Une unité automount est également une définition de point de montage dans le
système de fichiers, mais montée automatiquement. Chaque unité automount dispose d’une
unité mount correspondante, qui est lancée lors de l’accès au point de montage automount.

Target : Une unité target (cible) est un regroupement d’autres unités, gérées comme une
seule unité.

Snapshot : Une unité snapshot est un état sauvegardé du gestionnaire systemd (non
disponible sur toutes les distributions Linux).
13
systemd

Systemctl

systemctl start unit.service : Démarre unit.

systemctl stop unit.service : Arrête unit.

systemctl restart unit.service : Relance unit.

systemctl status unit.service : Affiche l’état de unit, y compris l’état d’activation.

systemctl is-active unit.service : Affiche active si `unit`est en état de marche ou
inactive dans le cas contraire.

systemctl enable unit.service : Active unit, c’est-à-dire que unit se chargera lors de
l’initialisation du système.

systemctl disable unit.service : unit ne démarrera pas avec le système.

systemctl is-enabled unit.service : Vérifie si unit démarre avec le système. La
réponse est enregistrée dans la variable $?. La valeur 0 indique que unit démarre
avec le système et la valeur 1 indique que unit ne démarre pas avec le système.
14
systemd

Systemctl

Si aucune autre unité du même nom n’existe dans le système, le suffixe après le point peut être
omis.

Les fichiers de configuration associés à chaque unité se trouvent dans le répertoire
/lib/systemd/system/.

systemctl list-unit-files : affiche la liste de toutes les unités disponibles et indique si elles sont
activées au démarrage du système.

systemctl list-unit-files --type=service et systemctl list-unit-files –type=target : L’option
--type sélectionnera uniquement les unités pour un certain type

La commande systemctl peut également contrôler les cibles système (system targets). L’unité
multi-user.target, par exemple, combine toutes les unités requises par l’environnement système
multi-utilisateurs. Il est similaire au niveau d’exécution 3 dans un système basé sur SysV.

La commande systemctl isolate bascule entre différentes cibles. Ainsi, pour basculer
manuellement vers la cible multi-user : # systemctl isolate multi-user.target

15
systemd

Systemctl

systemctl get-default : détermine la cible de démarrage par défaut du système

systemctl set-default multi-user.target : Modifier la cible par défaut.

systemctl suspend : mettra le système en mode économique, en gardant les
données actuelles en mémoire.

systemctl hibernate : va copier toutes les données en mémoire sur le disque, de
sorte que l’état actuel du système peut être récupéré après son extinction.
Les actions associées à ces événements( systemctl suspend et systemctl hibernate)
sont définies dans le fichier /etc/systemd/logind.conf ou dans des fichiers individuels à
l’intérieur du répertoire /etc/systemd/logind.conf.d/. Cependant, cette fonctionnalité de
systemd ne peut être utilisée que lorsqu’il n’y a aucun autre gestionnaire d’alimentation en
cours d’exécution dans le système, comme le démon acpid.

16
Upstart


Les scripts d’initialisation utilisés par Upstart se trouvent dans le répertoire /etc/init/.

Les services du système peuvent être affichés avec la commande initctl list, qui
indique également l’état actuel des services et, le cas échéant, leur PID.

Upstart n’utilise pas le fichier /etc/inittab pour définir les niveaux d’exécution, par
contre les commandes traditionnelles runlevel et telinit permettent toujours de
vérifier les niveaux d’exécution et d’alterner entre eux.

Chaque action Upstart dispose de sa propre commande dédiée :

# start tty6 : lance un sixième terminal virtuel

# status tty6 : vérifier l’état de la ressource tty6

# stop tty6 : interruption du service

17
Arrêt et redémarrage

shutdown [OPTIONS] [TIME] [MESSAGE]



time définit le moment où l’action requise sera exécutée, en acceptant les formats
suivants :

hh:mm : Ce format spécifie le moment de l’exécution en heures et minutes.

+m : Ce format précise le nombre de minutes à attendre avant l’exécution.

now or +0 : Ce format définit l’exécution immédiate.

Options :

18
Arrêt et redémarrage

systemctl

#systemctl reboot : redémarre le système.

#systemctl poweroff : arrête le système.

Certaines distributions Linux associent poweroff et reboot à systemctl sous forme
de commandes individuelles.
wall
Lorsqu’il s’avère nécessaire de faire passer le système en mode mono-utilisateur, il est
important d’avertir les utilisateurs connectés afin qu’ils ne soient pas affectés par une
interruption brutale de leurs activités.
wall est capable d’envoyer un message aux sessions de terminal de tous les utilisateurs
connectés. Pour ce faire, il suffit à l’administrateur système de fournir un fichier ou d’écrire
le message directement comme paramètre de la commande wall.

19

Vous aimerez peut-être aussi