GNU/Linux >> Tutoriels Linux >  >> Cent OS

CentOS / RHEL 7 :processus de démarrage

Il est important de comprendre le processus de démarrage Linux pour résoudre les problèmes de démarrage. Ce sont les étapes de haut niveau du processus de démarrage. Vous devez connaître les fichiers impliqués dans le processus de démarrage, car les erreurs dans ces fichiers peuvent entraîner des problèmes de démarrage.

S'il y a un problème lors du démarrage, vous devez identifier dans quelle phase du processus de démarrage se situe le problème afin de pouvoir prendre les mesures appropriées pour résoudre le problème.

Présentation de systemd

systemd est le nouveau gestionnaire de système et de service dans CentOS/RHEL 7. Il est rétrocompatible avec les scripts d'initialisation SysV utilisés par les versions précédentes de RedHat Linux, y compris RHEL 6. Il remplace Upstart comme système d'initialisation par défaut.

Les étapes suivantes résument le déroulement de la procédure de démarrage dans RHEL/CentOS 7.

  1. Le BIOS de l'ordinateur exécute le POST.
  2. Le BIOS lit le MBR pour le chargeur de démarrage.
  3. Le chargeur de démarrage GRUB 2 charge l'image du noyau vmlinuz.
  4. GRUB 2 extrait le contenu de l'image initramfs.
  5. Le noyau charge les modules du pilote depuis initramfs.
  6. Le noyau démarre le premier processus du système, systemd.
  7. Le processus systemd prend le relais. Il :
    • Lit les fichiers de configuration du répertoire /etc/systemd
    • Lit le fichier lié par /etc/systemd/system/default.target
    • Amène le système à l'état défini par la cible système
    • Exécute /etc/rc.local

1. POST (Test automatique à la mise sous tension)

À partir du micrologiciel du système, qui peut être l'interface de micrologiciel étendue universelle moderne (UEFI ) ou le classique Basic Input Output System (BIOS ), l'autotest à la mise sous tension (POST) est exécuté et le matériel requis pour démarrer le système est initialisé.

2. Sélection du périphérique amorçable (avec MBR)

– Master Boot Record (MBR) correspond aux 512 premiers octets du lecteur de démarrage qui sont lus en mémoire par le BIOS.
– Les 64 octets suivants contiennent la table de partition du disque. Les deux derniers octets sont le "Magic Number" qui est utilisé pour la détection d'erreur.

- MBR découvre le périphérique amorçable et charge le chargeur de démarrage GRUB2 en mémoire et lui transfère le contrôle.

3. Chargement du chargeur de démarrage (GRUB2)

– Le programme de chargeur de démarrage par défaut utilisé sur RHEL 7 est GRUB 2. GRUB signifie GRand Unified Bootloader . GRUB 2 remplace l'ancien chargeur de démarrage GRUB, également appelé ancien GRUB.
– Le fichier de configuration GRUB 2 se trouve dans /boot/grub2/grub.cfg (ne modifiez pas ce fichier directement).

– Les paramètres de configuration du menu GRUB 2 sont extraits de /etc/default/grub lors de la génération de grub.cfg.
– Exemple de fichier /etc/default/grub :

# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"

– Si des modifications sont apportées à l'un de ces paramètres, vous devez exécuter grub2-mkconfig pour regénérer le fichier /boot/grub2/grub.cfg.

# grub2-mkconfig –o /boot/grub2/grub.cfg

– GRUB2 recherche le fichier image du noyau compressé également appelé vmlinuz dans le répertoire /boot.
– GRUB2 charge le fichier image du noyau vmlinuz en mémoire et extrait le contenu du fichier image initramfs dans un système de fichiers temporaire basé sur la mémoire (tmpfs).
– Le disque RAM initial (initrd) est un système de fichiers racine initial qui est monté avant le système de fichiers racine réel.

initramfs
– Le travail du système de fichiers RAM initial consiste à précharger les modules de périphérique de bloc, tels que pour IDE, SCSI ou RAID, afin que le système de fichiers racine, sur lequel ces modules résident normalement, puisse ensuite être accessible et monté.
– L'initramfs est lié au noyau et le noyau monte cet initramfs dans le cadre d'un processus de démarrage en deux étapes.
– L'utilitaire dracut crée initramfs chaque fois qu'un nouveau noyau est installé.
– Utilisez la commande lsinitrd pour afficher le contenu de l'image créée par dracut :

# lsinitrd | less

4. Chargement du noyau

– Le noyau démarre le processus systemd avec un ID de processus de 1 (PID 1).

– Il charge également les modules de pilote nécessaires à partir de l'image initrd.
– Le chargeur de démarrage (GRUB2) peut présenter un menu de démarrage à l'utilisateur ou peut être configuré pour démarrer automatiquement un système d'exploitation par défaut.
– Pour load Linux, le noyau est chargé avec initramfs. L'initramfs contient des modules de noyau pour tout le matériel nécessaire au démarrage, ainsi que les scripts initiaux requis pour passer à l'étape suivante du démarrage.
– Sur RHEL 7, l'initramfs contient un système opérationnel complet (qui peut être utilisé à des fins de dépannage).

5. Démarrage de systemd

– Le noyau démarre le processus systemd avec un ID de processus de 1 (PID 1).

root          1      0  0 02:10 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23

– systemd est le premier processus qui démarre après le démarrage du système et le processus final qui s'exécute lorsque le système s'arrête.
– Il contrôle les dernières étapes du démarrage et prépare le système à l'utilisation. Il accélère également le démarrage en chargeant des services simultanément.
– systemd lit le fichier lié par /etc/systemd/system/default.target (par exemple, /usr/lib/systemd/system/multi-user.target) pour déterminer la cible système par défaut (équivalente au niveau d'exécution). Le fichier cible du système définit les services que systemd démarre.
– systemd vous permet de gérer différents types d'unités sur un système, y compris les services (name.service) et les cibles (name.target), les périphériques (name.device) , les points de montage du système de fichiers (nom.mount) et les sockets (nom.socket).

Comparaison des niveaux d'exécution SysV et des unités cibles

Niveau d'exécution Unités cibles Description
0 runlevel0.target, poweroff.target Arrêter et éteindre
1 runlevel1.target, rescue.target Configurer un shell de secours
2,3,4 runlevel[234].target, multi-user.target Configurer un shell multi-utilisateur non graphique
5 runlevel5.target, graphique.target Configurer un shell multi-utilisateur graphique
6 runlevel6.target, reboot.target Arrêter et redémarrer le système

systemd amène le système à l'état défini par la cible système, en effectuant des tâches d'initialisation du système telles que :
1. Définition du nom d'hôte
2. Initialisation du réseau
3. Initialisation de SELinux en fonction de sa configuration
4. Impression d'une bannière de bienvenue
5. Initialisation du matériel système en fonction des arguments de démarrage du noyau
6. Monter les systèmes de fichiers, y compris les systèmes de fichiers virtuels tels que le système de fichiers /proc
7. Nettoyer les répertoires dans /var
8. Commencer à échanger

Afficher l'unité cible par défaut/actuelle

Utilisez la commande suivante pour voir quelle unité cible est utilisée par défaut :

# systemctl get-default
graphical.target

La cible.graphique L'unité cible indique que le système fonctionne dans un état graphique multi-utilisateurs. Ceci est similaire au niveau d'exécution 5 dans un système d'initialisation SysV. Vous pouvez le vérifier en utilisant l'ancienne commande runlevel :

# runlevel
N 5

L'unité cible par défaut est représentée par /etc/systemd/system/default.target dossier. Ce fichier est un lien symbolique vers l'unité cible par défaut actuelle. Par exemple :

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 Sep 23 20:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

Modifier l'unité cible par défaut

Utilisez la commande suivante pour modifier l'unité cible par défaut (par exemple, pour remplacer la valeur par défaut par l'unité multi-user.target) :

# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

Notez que le lien symbolique default.target a changé et pointe maintenant vers l'unité multi-user.target :

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 41 Sep 24 11:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

Le tableau ci-dessous récapitule où une phase spécifique est configurée et ce que vous pouvez faire pour résoudre les problèmes en cas de problème.

Phase de démarrage Configuration
PUBLIER Configuration matérielle (F2, ESC, F10 ou autre touche)
Sélectionner un périphérique amorçable Configuration BIOS/UEFI ou menu de démarrage matériel
Charger le chargeur de démarrage grub2-install et modifications de /etc/defaults/grub
Charger le noyau Modifications de la configuration GRUB et de /etc/dracut.conf
démarrage de /sbin/init Compilé dans initramfs
Traitement de initrd.target Compilé dans initramfs
Basculer vers le système de fichiers racine /etc/fstab
Exécuter la cible par défaut /etc/systemd/system/default.target
CentOS / RHEL 7 :Guide du débutant sur systemd
CentOS / RHEL 7 :Guide du débutant sur les cibles systemd (remplacement des niveaux d'exécution SysV init)


Cent OS
  1. Mode mono-utilisateur dans CentOS 7 / RHEL 7

  2. Installer Skype sur le système CentOS 7 - Processus étape par étape ?

  3. Comment désactiver ACPI dans CentOS/RHEL 7

  4. Comment déboguer le processus de démarrage systemd dans CentOS/RHEL 7 et 8

  5. Comment déboguer le processus de démarrage systemd dans CentOS/RHEL 7 et 8

Comment installer Cockpit sur CentOS 8 / RHEL 8

Configurer le serveur FreeIPA sur CentOS 7 / RHEL 7 - Un système de gestion des identités

Comment démarrer en mode mono-utilisateur dans CentOS 8 / RHEL 8

CentOS / RHEL 7 :Comment modifier la verbosité des journaux de débogage lors du démarrage

CentOS / RHEL 7 :Comment démarrer en mode de secours à partir du DVD/ISO d'installation

CentOS / RHEL 5 :Comment démarrer en mode de secours