24.9. Modification du menu du terminal pendant le démarrage

Les entrées du menu peuvent être modifiées et des arguments passés au noyau pendant le démarrage. Ceci est effectué en utilisant l'interface de l'éditeur d'entrées du menu, qui est déclenchée en appuyant sur la touche e dans une entrée du menu sélectionnée dans le menu du chargeur de démarrage. La touche Esc annule tout changement et recharge l'interface du menu standard. La touche c charge l'interface de ligne de commande.
L'interface de ligne de commande est la plus élémentaire des interfaces GRUB, mais c'est celle qui fournit le plus haut niveau de contrôle. La ligne de commande permet de saisir toute commande GRUB pertinente et de l'exécuter en appuyant sur la touche Entrée. Cette interface présente certaines fonctionnalités avancées similaires à shell, parmi lesquelles figurent la touche Tab pour l'achèvement automatique de ligne en fonction du contexte, et Ctrl+a pour se déplacer au début d'une ligne et Ctrl+e pour aller directement à la fin d'une ligne. De plus, les flèches, les touches de flèches, Début, Fin, et Suppr. fonctionnent de la même façon que sous le shell bash.

24.9.1. Démarrer en mode de secours

Le mode de secours fournit un environnement mono-utilisateur pratique et vous permet de réparer votre système dans des situations où il est impossible d'effectuer un processus de démarrage normal. En mode de secours, le système tente de monter tous les systèmes de fichiers locaux et lancer plusieurs services système importants, mais n'active pas d'interface réseau ou ne permet pas à davantage d'utilisateurs de se connecter au système au même moment. Sur Red Hat Enterprise Linux 7, le mode de secours est équivalent au mode mono-utilisateur et requiert le mot de passe root.
  1. Pour entrer en mode de secours pendant le démarrage, sur l'écran de démarrage GRUB 2, appuyez sur la touche e pour effectuer des modifications.
  2. Ajoutez le paramètre suivant à la fin de la ligne linux sur IBM Power Series 64 bits, sur la ligne linux16 sur systèmes basés BIOS x86-64, ou sur la ligne linuxefi pour les systèmes UEFI :
    systemd.unit=rescue.target
    Appuyez sur Ctrl+a et Ctrl+e pour directement passer au début ou à la fin d'une ligne, respectivement. Sur certains systèmes, les touches Début et Fin peuvent également fonctionner.
    Remarquez que des paramètres équivalents, 1, s, et single, peuvent également être passés au noyau.
  3. Appuyez sur Ctrl+x pour démarrer le système avec le paramètre.

24.9.2. Démarrer en mode d'urgence

Le mode d'urgence fournit l'environnement le plus minimaliste possible et vous permet de réparer votre système même dans des situations où le système est incapable d'entrer en mode de secours. Dans le mode d'urgence, le système monte le système de fichiers root uniquement en lecture, il ne tentera pas de monter d'autres systèmes de fichiers locaux, n'activera pas d'interface réseau, et lancera uniquement quelques services essentiels. Dans Red Hat Enterprise Linux 7, le mode d'urgence requiert le mot de passe root.
  1. Pour entrer en mode d'urgence, sur l'écran de démarrage GRUB 2, appuyez sur la touche e pour effectuer des modifications.
  2. Ajoutez le paramètre suivant à la fin de la ligne linux sur IBM Power Series 64 bits, sur la ligne linux16 sur systèmes basés BIOS x86-64, ou sur la ligne linuxefi pour les systèmes UEFI :
    systemd.unit=emergency.target
    Appuyez sur Ctrl+a et Ctrl+e pour directement passer au début ou à la fin d'une ligne, respectivement. Sur certains systèmes, les touches Début et Fin peuvent également fonctionner.
    Remarquez que des paramètres équivalents, emergency et b peuvent également être passés sur le noyau.
  3. Appuyez sur Ctrl+x pour démarrer le système avec le paramètre.

24.9.3. Démarrer le shell de débogage

Le shell de débogage systemd fournit un shell tout au début du processus de démarrage, qui peut être utilisé pour faire le diagnostic de problèmes de démarrage liés à systemd. Une fois dans le shell de débogage, les commandes de systemctl telles que systemctl list-jobs, et systemctl list-units peuvent être utilisées pour rechercher la cause des problèmes de démarrage. De plus, l'option debug peut être ajoutée à la ligne de commande du noyau pour augmenter le nombre de messages de journalisation. Pour systemd, l'option de ligne de commande du noyau debug est mainteant un raccourci de systemd.log_level=debug.

Procédure 24.2. Ajouter une commande de shell de débogage

Pour activer le shell de débogage pour cette session uniquement, procédez ainsi :
  1. Sur l'écran de démarrage GRUB 2, déplacez le curseur sur l'entrée de menu que vous souhaitez modifier, et appuyez sur la touche e pour effectuer des modifications.
  2. Ajoutez le paramètre suivant à la fin de la ligne linux sur IBM Power Series 64 bits, sur la ligne linux16 sur systèmes basés BIOS x86-64, ou sur la ligne linuxefi pour les systèmes UEFI :
    systemd.debug-shell
    Vous pouvez ajouter l'option debug.
    Appuyez sur Ctrl+a et Ctrl+e pour directement passer au début ou à la fin d'une ligne, respectivement. Sur certains systèmes, les touches Début et Fin peuvent également fonctionner.
  3. Appuyez sur Ctrl+x pour démarrer le système avec le paramètre.
Si nécessaire, le shell de débogage peut être configuré pour démarrer à chaque amorçage de système par la commande systemctl enable debug-shell. Sinon, l'outil grubby peut être utilisé pour faire des changements persistants à la ligne de commande du noyau dans le menu GRUB 2. Voir Section 24.4, « Effectuer des Changements persistnats à un menu GRUB 2 par l'outil grubby » pour obtenir plus d'informations sur la façon d'utiliser grubby.

Avertissement

Activer le shell de débogage de façon permanente est un risque de sécurité car aucune authentification n'est requise. Le désactiver en fin de session.

Procédure 24.3. Se connecter à un shell de débogage

Lors du processus de démarrage, le systemd-debug-generator configurera le shell de débogage TTY9.
  1. Appuyer sur Ctrl+Alt+F9 pour vous connecter au shell de débogage. Si vous êtes dans une machine virtuelle, cette combinaison de touches devra être prise en charge par l'application de virtualisation. Ainsi, si vous utilisez Virtual Machine Manager, sélectionnez Send KeyCtrl+Alt+F9 dans le menu.
  2. Le shell de débogage ne requiert aucune authentification, donc vous verrez sans doute une invite similaire à ce qui suit dans TTY9 : [root@localhost /]#
  3. Si nécessaire, pour vérifier que vous êtes bien dans le shell de débogage, saisir une commande comme suit :
    /]# systemctl status $$
    ● debug-shell.service - Early root shell on /dev/tty9 FOR DEBUGGING ONLY
       Loaded: loaded (/usr/lib/systemd/system/debug-shell.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2015-08-05 11:01:48 EDT; 2min ago
         Docs: man:sushell(8)
     Main PID: 450 (bash)
       CGroup: /system.slice/debug-shell.service
               ├─ 450 /bin/bash
               └─1791 systemctl status 450
  4. Pour retourner au shell par défaut, si l'amorçage a réussi, appuyez sur Ctrl+Alt+F1.
Pour faire le diagnostique des problèmes de démarrage, certaines unités de systemd peuvent être masquées en ajoutant systemd.mask=unit_name une ou plusieurs fois à la ligne de commande du noyau. Pour démarrer des processus supplémentaires lors du processus d'amorçage, ajouter systemd.wants=unit_name à la ligne de commande du noyau. La page man systemd-debug-generator(8) décrit ces options.

24.9.4. Changer et reconfigurer le mot de passe root

Définir le mot de passe root est obligatoire lors de l'installation de Red Hat Enterprise Linux 7. Si vous oubliez ou perdez le mot de passe root, il est possible de le réinitialiser. Cependant, les utilisateurs membre du groupe « wheel » peuvent changer le mot de passe root comme suit :
~]$ sudo passwd root
Remarquez que dans GRUB 2, réinitialiser le mot de passe n'est plus effectué en mode mono-utilisateur comme c'était le case avec la version de GRUB incluse dans Red Hat Enterprise Linux 6. Le mot de passe root est désormais requis pour opérer en mode mono-utilisateur (« single-user »), ainsi qu'en mode d'urgence (« emergency »).
Deux procédures pour réinitialiser le mot de passe root sont affichées ici :
  • La Procédure 24.4, « Réinitialiser le mot de passe root en utilisant un disque d'installation » vous conduit à utiliser une invite shell sans avoir à modifier le menu GRUB. Cette procédure recommandée est la plus courte des deux. Vous pouvez utiliser un disque de démarrage ou un disque d'installation Red Hat Enterprise Linux 7 normal.
  • La Procédure 24.5, « Réinitialiser le mot de passe root en utilisant rd.break » utilise rd.break pour interrompre le processus de démarrage avant que le contrôle ne passe d'initramfs à systemd. L'inconvénient de cette méthode est qu'elle requiert davantage d'étapes, y compris la modification du menu GRUB, et implique de devoir choisir entre un ré-étiquetage du fichier SELinux, ou la modification du mode « Enforcing » de SELinux, puis la restauration du contexte de sécurité SELinux pour /etc/shadow/ lorsque le démarrage est terminé.

Procédure 24.4. Réinitialiser le mot de passe root en utilisant un disque d'installation

  1. Démarrez le système et lorsque les informations BIOS sont affichées, sélectionnez l'option pour un menu de démarrage et sélectionnez de démarrer à partir du disque d'installation.
  2. Choisissez « Troubleshooting » (Résolution de problèmes).
  3. Choisissez « Rescue a Red Hat Enterprise Linux System » (Secourir un système Red Hat Enterprise Linux).
  4. Choisissez Continue, qui est l'option par défaut. À ce moment, vous pourrez passer et l'étape suivante, et on vous demandera une phrase de passe si un système de fichiers chiffré est trouvé.
  5. Appuyez sur Valider pour accepter les informations affichées jusqu'à ce que l'invite shell apparaisse.
  6. Modifiez le système de fichiers root comme suit :
    sh-4.2# chroot /mnt/sysimage
  7. Saisir la commande passwd et suivez les instructions affichées sur la ligne de commande pour modifier le mot de passe root.
  8. Supprimez le fichier autorelable pour empêcher le long ré-étiquetage SELinux du disque :
    sh-4.2# rm -f /.autorelabel
  9. Saisissez la commande exit pour quitter l'environnement chroot.
  10. Saisissez la commande exit à nouveau pour reprendre l'initialisation et terminer le démarrage système.

Procédure 24.5. Réinitialiser le mot de passe root en utilisant rd.break

  1. Lancez le système, sur l'écran de démarrage GRUB 2, appuyez sur la touche e pour effectuer des modifications.
  2. Supprimez les paramètres rhgb et quiet situés à la fin, ou près de la fin de la ligne linux16, ou la ligne linuxefi sur les systèmes UEFI.
    Appuyez sur Ctrl+a et Ctrl+e pour directement passer au début ou à la fin d'une ligne, respectivement. Sur certains systèmes, les touches Début et Fin peuvent également fonctionner.

    Important

    Les paramètres rhgb et quiet doivent être supprimés afin d'activer les messages système.
  3. Ajoutez les paramètres suivants à la fin de la ligne linux sur IBM Power Series 64 bits, de la ligne linux16 sur systèmes basés BIOS x86-64, ou de la ligne linuxefi sur les systèmes UEFI :
    rd.break enforcing=0
    Ajouter l'option enforcing=0 permet d'omettre le long processus de ré-étiquetage SELinux.
    initramfs s'arrêtera avant de donner le contrôle au noyau Linux (Linux kernel), vous permettant de travailler en utilisant le système de fichiers root.
    Remarquez que l'invite initramfs apparaîtra sur la dernière console spécifiée sur la ligne Linux.
  4. Appuyez sur Ctrl+x pour démarrer le système avec les paramètres modifiés.
    Avec un système de fichiers chiffré, un mot de passe est requis. Cependant, l'invite du mot de passe peut ne pas apparaître et être obscurcie par les messages de journalisation. Vous pouvez appuyer sur la touche Retour Arrière (« Backspace ») pour afficher l'invite. Relâchez la touche et saisissez le mot de passe du système de fichiers chiffré tout en ignorant les messages de journalisation.
    L'invite initramfs switch_root s'affiche.
  5. Le système de fichiers est monté en lecture seule sur /sysroot/. Vous n'aurez pas le droit de modifier le mot de passe si le système de fichiers n'est pas accessible en écriture.
    Remontez le système de fichier comme étant accessible en écriture :
    switch_root:/# mount -o remount,rw /sysroot
  6. Le système de fichiers est remonté et est accessible en écriture.
    Modifiez le root du système de fichiers comme suit :
    switch_root:/# chroot /sysroot
    L'invite est modifée sur sh-4.2#.
  7. Saisir la commande passwd et suivez les instructions affichées sur la ligne de commande pour modifier le mot de passe root.
    Remarquez que si le système n'est pas accessible en écriture, l'outil passwd échouera avec l'erreur suivante :
    Erreur de manipulation du jeton d'authentification
  8. Mise à jour des résultats du fichier du mot de passe avec un contexte de sécurité SELinux incorrect. Pour ré-étiqueter tous les fichiers lors du prochain démarrage, veuillez saisir la commande suivante :
    sh-4.2# touch /.autorelabel
    Alternativement, pour économiser le temps pris pour ré-étiqueter un disque de grande taille, vous pouvez omettre cette étape, à condition d'avoir inclus l'option enforcing=0 dans l'étape 3.
  9. Remontez le système de fichier en lecture seule :
    sh-4.2# mount -o remount,ro /
  10. Saisissez la commande exit pour quitter l'environnement chroot.
  11. Saisissez la commande exit à nouveau pour reprendre l'initialisation et terminer le démarrage système.
    Avec un système de fichiers chiffré, un mot de passe ou une phrase de passe est requis(e). Cependant, l'invite du mot de passe peut ne pas apparaître et être obscurcie par les messages de journalisation. Vous pouvez appuyer de façon prolongée sur la touche Retour Arrière (« Backspace ») pour afficher l'invite. Relâchez la touche et saisissez le mot de passe du système de fichiers chiffré tout en ignorant les messages de journalisation.

    Note

    Remarquez que le processus de ré-étiquetage SELinux peut prendre longtemps. Un redémarrage système se produira automatiquement lorsque le processus sera terminé.
  12. Si vous avez ajouté l'option enforcing=0 dans l'étape 3 et omis la commande touch /.autorelabel dans l'étape 8, veuillez saisir la commande suivante pour restaurer le contexte de sécurité SELinux du fichier /etc/shadow :
    ~]# restorecon /etc/shadow
    Saisissez les commandes suivante pour réactiver l'application de la politique SELinux et vérifier qu'elle soit bien en cours d'exécution :
    ~]# setenforce 1
    ~]# getenforce
    Enforcing