C BTS A.
IBN GHAZALA Reseaux Informatiques
SystemV vs Systemd
Dans System V Init (SysVinit), les liens symboliques jouent un rôle central dans la gestion
des services à différents niveaux d'exécution. Pour chaque service, des scripts sont placés
dans le répertoire /etc/init.d/, et des liens symboliques pointant vers ces scripts sont situés
dans des répertoires spécifiques à chaque niveau d'exécution : /etc/rcX.d/, où X représente
le niveau d'exécution.
Fonctionnement des liens symboliques dans SysVinit :
1. Répertoire /etc/init.d/ :
Tous les scripts de démarrage et d'arrêt des services sont stockés dans ce répertoire.
Par exemple, un script de service pourrait être /etc/init.d/apache2.
2. Répertoires /etc/rcX.d/ :
Chaque répertoire rcX.d correspond à un niveau d'exécution spécifique (0 à 6). Les
liens symboliques dans ces répertoires contrôlent quels services démarrent ou
s'arrêtent à ce niveau d'exécution.
o Exemple : /etc/rc3.d/ pour le niveau d'exécution 3 (multi-utilisateur avec
réseau).
3. Nom des liens symboliques :
Les noms des liens symboliques commencent par une lettre suivie d'un numéro :
o S pour "Start" (démarrer le service).
o K pour "Kill" (arrêter le service).
Le numéro qui suit détermine l'ordre dans lequel les services sont démarrés ou
arrêtés. Par exemple, S20apache2 dans /etc/rc3.d/ signifie que le service
Apache sera démarré en 20e position lors du passage au niveau d'exécution 3.
4. Gestion des services :
Lorsque le système passe d’un niveau d’exécution à un autre, SysVinit exécute les
liens symboliques dans l'ordre (K puis S) pour arrêter puis démarrer les services
nécessaires.
Exemple pratique :
Le script de service Apache2 peut se trouver dans /etc/init.d/apache2.
Pour démarrer Apache2 au niveau d'exécution 3, un lien symbolique S20apache2 est
créé dans /etc/rc3.d/.
Pour arrêter Apache2 au niveau d'exécution 3, un lien K80apache2 peut être créé dans
/etc/rc3.d/, indiquant l'ordre inverse pour arrêter le service.
Commandes utiles :
Pour créer un lien symbolique pour démarrer Apache2 au niveau 3 :
ln -s /etc/init.d/apache2 /etc/rc3.d/S20apache2
2024-2025 Page 1/6
C BTS [Link] GHAZALA Reseaux Informatiques
Pour l’arrêter
ln -s /etc/init.d/apache2 /etc/rc3.d/K80apache2
Cette architecture à base de liens symboliques permet à SysVinit de gérer le démarrage et l'arrêt des
services de manière souple, en fonction du niveau d'exécution sélectionné.
Dans systemd, les liens symboliques sont également utilisés, mais leur rôle est différent par
rapport à System V init. Dans systemd, les liens symboliques servent à activer ou désactiver
les services (ou unités) et à associer des cibles à des services. Ces liens sont gérés
automatiquement par le système ou manuellement via des commandes comme systemctl.
Utilisation des liens symboliques dans systemd
1. Unités et fichiers d'unité (unit files) :
Un fichier d'unité dans systemd est un fichier texte décrivant un service, une cible ou
un périphérique. Ces fichiers sont situés dans /lib/systemd/system/ (ou
/etc/systemd/system/ pour les unités personnalisées). Ils spécifient les actions que
systemd doit prendre pour gérer un service.
2. Activation des services avec des liens symboliques :
Lorsque vous activez un service dans systemd avec la commande systemctl enable,
un lien symbolique est créé dans un des répertoires spécifiques au système
(/etc/systemd/system/). Par exemple, si vous activez un service nommé
[Link], un lien symbolique vers son fichier d'unité (par exemple,
/lib/systemd/system/[Link]) est créé dans
/etc/systemd/system/[Link]/.
Exemple :
systemctl enable apache2
Cela crée un lien symbolique dans /etc/systemd/system/[Link]/,
indiquant que le service apache2 sera démarré automatiquement lors de l'atteinte de la cible
[Link] (équivalent au niveau 3 de System V).
Désactivation des services avec des liens symboliques :
Quand un service est désactivé avec systemctl disable, les liens symboliques créés lors de
l'activation sont supprimés. Cela empêche le service de démarrer automatiquement, bien qu'il
puisse encore être démarré manuellement.
Exemple :
systemctl disable apache2
2024-2025 Page 2/6
C BTS [Link] GHAZALA Reseaux Informatiques
1. Cela supprime le lien symbolique dans /etc/systemd/system/multi-
[Link]/, empêchant le démarrage automatique de apache2.
2. Gestion des cibles (targets) :
systemd remplace les niveaux d'exécution par des cibles comme [Link]
ou [Link]. Les cibles sont des groupes d'unités qui peuvent inclure des
services et des dépendances. Comme pour les services, les cibles peuvent également
être liées via des liens symboliques.
3. Automatisation et flexibilité des liens :
Contrairement à SysVinit, où les liens symboliques de démarrage et d'arrêt des
services doivent être créés manuellement, systemd automatise cela. La gestion des
dépendances entre services est aussi plus précise grâce à l’utilisation des options
comme After=, Requires=, et Wants= dans les fichiers d'unité.
Exemple de création de lien symbolique manuel :
Si vous souhaitez créer un lien symbolique manuellement, vous pouvez utiliser la commande
ln comme dans SysVinit. Cependant, avec systemd, cela est rarement nécessaire car
systemctl s'occupe de créer et de gérer ces liens.
Exemple :
ln -s /lib/systemd/system/[Link] /etc/systemd/system/multi [Link]/[Link]
Résumé des différences avec SysVinit :
Systemd gère automatiquement la création et la suppression des liens symboliques via la
commande systemctl, tandis que dans SysVinit, ces liens doivent être créés
manuellement.
Les liens symboliques dans systemd sont principalement utilisés pour lier des services à des
cibles (targets), facilitant ainsi la gestion des dépendances et du démarrage automatique.
Systemd fournit plus de flexibilité et de contrôle par rapport à SysVinit, avec une gestion plus
claire des services via des fichiers d'unités bien définis.
2024-2025 Page 3/6
C BTS [Link] GHAZALA Reseaux Informatiques
Comparaison :
En informatique, les systèmes d'initialisation ont évolué au fil du temps. Voici une
comparaison succincte entre System V (SysVinit), un système plus ancien, et systemd, un
système moderne qui l'a remplacé dans de nombreuses distributions Linux.
System V (SysVinit) - Le "veille"
Niveaux d'exécution (runlevels) : System V utilise des niveaux d'exécution (de 0 à 6), qui
déterminent quels services démarrer ou arrêter.
Scripts dans /etc/init.d/ : Chaque service est associé à un script shell dans ce répertoire.
Liens symboliques dans /etc/rcX.d/ : Pour chaque niveau d'exécution, des liens
symboliques S (Start) et K (Kill) pointent vers ces scripts pour démarrer ou arrêter les services
dans un ordre défini.
Simplicité mais rigidité : Bien que simple à comprendre, SysVinit est rigide dans sa gestion
des services, et il n'y a pas de gestion des dépendances ou de parallélisation des démarrages
de services.
systemd - Le "récent"
Cibles (targets) : systemd remplace les niveaux d'exécution par des cibles (comme multi-
[Link] ou [Link]), qui sont plus flexibles et permettent une meilleure
gestion des états du système.
Fichiers d'unités (.service, .target, etc.) : systemd utilise des fichiers d'unité qui
décrivent les services et les cibles, situés dans /lib/systemd/system/.
Liens symboliques automatiques : Lorsque vous activez un service avec systemctl
enable, systemd crée automatiquement un lien symbolique dans des répertoires comme
/etc/systemd/system/[Link]/.
Gestion avancée des dépendances : systemd gère les dépendances entre services (via
After=, Requires= dans les fichiers d'unité), parallélise le démarrage des services, et
améliore les performances globales du système.
Résumé des différences clés :
Gestion des services : SysVinit repose sur des scripts et des liens symboliques statiques,
tandis que systemd automatise et simplifie la gestion avec des fichiers d'unité et une
meilleure gestion des dépendances.
Performance et flexibilité : systemd est plus rapide, flexible et moderne que SysVinit.
Ainsi, systemd représente l'approche moderne, plus dynamique et efficace, par rapport à
SysVinit, qui est la méthode traditionnelle mais maintenant dépassée dans de nombreuses
distributions.
2024-2025 Page 4/6
C BTS [Link] GHAZALA Reseaux Informatiques
Exemple avec System V (SysVinit)
Démarrage manuel d'un service avec SysVinit : Prenons l'exemple du service Apache.
1. Script de service : Le script pour démarrer ou arrêter le service Apache serait stocké
dans /etc/init.d/apache2.
2. Démarrer Apache :
/etc/init.d/apache2 start
3. Arrêter Apache :
/etc/init.d/apache2 stop
4. Activer Apache au démarrage : Pour activer Apache au démarrage au niveau
d'exécution 3 (multi-utilisateur avec réseau), vous créez un lien symbolique dans
/etc/rc3.d/ :
ln -s /etc/init.d/apache2 /etc/rc3.d/S20apache2
5. Désactivation du démarrage automatique : Pour empêcher Apache de démarrer
automatiquement :
rm /etc/rc3.d/S20apache2
Exemple avec systemd
Démarrage manuel d'un service avec systemd :
1. Fichier d'unité : Le fichier d'unité de Apache serait situé dans
/lib/systemd/system/[Link].
2. Démarrer Apache :
systemctl start apache2
3. Arrêter Apache :
systemctl stop apache2
4. Activer Apache au démarrage : Contrairement à SysVinit où vous devez créer
manuellement un lien symbolique, systemd le fait automatiquement avec systemctl
enable :
systemctl enable apache2
2024-2025 Page 5/6
C BTS [Link] GHAZALA Reseaux Informatiques
Cela crée un lien symbolique dans /etc/systemd/system/multi-
[Link]/, associant Apache à la cible [Link].
Désactivation du démarrage automatique : Pour désactiver Apache au
démarrage :
systemctl disable apache2
Résumé des différences :
SysVinit : Vous travaillez directement avec des scripts shell dans /etc/init.d/ et
créez/supprimez manuellement des liens symboliques dans /etc/rcX.d/ pour chaque
niveau d'exécution.
systemd : Vous utilisez des commandes simples (systemctl start, systemctl enable)
pour démarrer, arrêter et activer des services. Les liens symboliques sont gérés
automatiquement et placés dans des répertoires comme /etc/systemd/system/.
Systemd est plus intuitif et automatisé, alors que SysVinit demande plus de gestion manuelle
des services.
2024-2025 Page 6/6