Comment déterminer et résoudre les problèmes de démarrage dans Linux

Comment déterminer et résoudre les problèmes de démarrage dans Linux

Le système Linux est si rapide que la plupart des débordements de sortie parcourent trop rapidement pour lire le texte (montrant les services démarrés) envoyés à la console. Par conséquent, l'observation des problèmes / erreurs de démarrage devient un peu un défi pour nous.

Dans cet article, nous expliquerons brièvement les différentes étapes d'un processus de démarrage du système Linux, puis apprendrons à établir et à arriver au bas des problèmes de démarrage: en termes de fichiers pour examiner ou les commandes pour afficher les messages de démarrage système.

Résumé du processus de démarrage Linux

En résumé, une fois que nous appuyons sur le Allumer bouton, le Bios (Système de sortie d'entrée de base) Un programme intégré dans une carte mère effectue un POSTE (Puissance à l'auto-test) - Lorsque le matériel tel que les disques, la RAM (mémoire d'accès aléatoire), le clavier, etc. sont analysés. En cas d'erreur (matériel manquant / défectueux), il est signalé à l'écran.

Pendant POSTE, le Bios Recherche également le périphérique de démarrage, le disque à partir de (généralement le premier disque dur, mais nous pouvons le configurer pour être un DVD, USB, carte réseau, etc.).

Ensuite, le système se connectera au disque et recherchera le Master Boot Record (512 octets de taille) qui stocke le chargeur de démarrage (446 octets de taille) et le reste des informations sur les magasins d'espace sur les partitions de disque (quatre maximum) et le MBR lui-même.

Lire suggérée: 4 meilleurs chargeurs de démarrage Linux

Le chargeur de démarrage s'identifie et pointera vers, ainsi que le chargement du Noyau et le fichier initrd (disque RAM d'initialisation - fournit l'accès du noyau au système de fichiers racine monté et des modules / pilotes stockés dans / lib répertoire), qui sont généralement stockés dans le /botte Répertoire du système de fichiers.

Une fois le noyau chargé, il exécute init (ou systemd sur les nouvelles distros Linux), le premier processus Pid 1, qui à son tour démarre tous les autres processus du système. C'est aussi le dernier processus à exécuter sur l'arrêt du système.

Comment découvrir les problèmes de démarrage Linux ou les messages d'erreur

Comme nous l'avons mentionné précédemment, les processus de démarrage Linux se produisent rapidement que nous ne pouvons même pas lire clairement la plupart des résultats envoyés à la console.

Ainsi, en prenant note des problèmes de démarrage / erreurs appellent un administrateur système à examiner certains fichiers importants en conjonction avec des commandes particulières. Et ceux-ci incluent:

/ var / log / boot.Journal - Journaux Messages de démarrage système

C'est probablement le premier fichier que vous souhaitez examiner, pour afficher tout ce qui s'est déroulé pendant le démarrage du système.

Plutôt que d'essayer si fort de suivre la sortie sur l'écran pendant le démarrage, nous pouvons afficher ce fichier une fois le processus de démarrage terminé pour nous aider à déterminer et à résoudre les problèmes / erreurs de démarrage.

Nous utilisons la commande CAT à cette fin comme suit (ci-dessous est un échantillon de ce fichier):

# Cat / var / Log / Boot.enregistrer 
Affichage des journaux de démarrage Linux
[OK] a commencé à charger / enregistrer l'état du commutateur KIL. [Temps] Tourné en attente de périphérique Dev-Disk-by \ X2DUUID-53E41CE9 \ X2DDC18 \ X2D458C \ X2DBC08 \ X2D584C208ED615.appareil. [Dépend] La dépendance a échoué pour / dev / disque / by-uuid / 53e41ce9-dc18-458c-bc08-584c208ed615. [Dépend] La dépendance a échoué pour l'échange. [OK] Initialisation du système cible atteint. [OK] Écoute sur une prise d'activation du démon UUID. [OK] a commencé le nettoyage quotidien des répertoires temporaires. [Ok] écouter sur les tasses. [OK] a commencé les activités quotidiennes APT. [OK] a atteint les minuteries cibles. [OK] Écoute sur Avahi MDNS / DNS-SD Socket d'activation. [OK] a commencé la vérification des événements ACPI. [OK] Démarrage de la mise à jour ResolVConf pour DNS NetworkD. [OK] ONDUCER DE CUPS COMMAND. [OK] a atteint des chemins cibles. [OK] Écoute sur la prise de bus de message du système D-Bus. [OK] Écoute sur ACPID Socket d'écoute. Démarrage du système de démarrage du système Console… [OK] Écoute sur la prise de service Web du cockpit. [OK] a atteint des prises cibles. [OK] Atteigné Target Basic System. Démarrage du LSB: Définissez le gouverneur de mise à l'échelle de la fréquence du CPU sur "ONDEMAND"… [OK] a commencé le démon de l'événement ACPI. [OK] a commencé la mintystem.service. Commencer à détecter les GPU disponibles et à gérer tous les modifications du système… Démarrer LSB: démon pour équilibrer les interruptions pour les systèmes SMP… Démarrage du service Bluetooth… [OK] Démarrage de la base de données du virus Clamav. Démarrage du LSB: démarre Syslogd… [OK] Démarré le programme de traitement du programme de fond régulier Daemon. Démarrer le gestionnaire de modem… le service de comptes de démarrage… 

À partir de la sortie ci-dessus, nous pouvons voir qu'il y a des problèmes de démarrage indiqués par les lignes ci-dessous.

[Dépend] La dépendance a échoué pour / dev / disque / by-uuid / 53e41ce9-dc18-458c-bc08-584c208ed615. [Dépend] La dépendance a échoué pour l'échange. 

Problème: Problème avec la partition d'échange; Le système n'a pas lu le fichier / périphérique / partition d'échange ou il n'est pas présent.

Vérifions si le système utilise un espace d'échange avec une commande libre.

# gratuit Total utilisé Free Shared Partned / Cache disponible MEM: 3742792 2421060 433696 287376 888036 967000 Swap: 0 0 0 

Alternativement, nous pouvons gérer le commande swapon Pour afficher le résumé de l'utilisation de l'espace d'échange du système (nous n'obtiendrons aucune sortie).

# swapon -s 

Nous pouvons résoudre ce problème, en créant un espace d'échange dans Linux.

Note: Le contenu de ce fichier est effacé lors de l'arrêt du système: les nouvelles données y sont stockées sur un nouveau démarrage.

/ var / log / messages - journaux système généraux

Ce fichier stocke les messages système généraux, y compris les messages qui sont enregistrés pendant le démarrage du système.

Pour le voir, tapez:

# chat / var / log / messages 
Afficher les messages du journal système
4 juin 13:04:44 Tecmint Syslogd (GNU INETUTILS 1.9.4): Redémarrer 4 juin 13:19:55 Tecmint - Mark - 4 juin 13:39:55 Tecmint - Mark - 4 juin 13:59:55 Tecmint - Mark - 4 juin 14:19:55 Tecmint - Mark - 4 juin 14:20:17 Tecmint Vmunix: [4945.388740] I915 0000: 00: 02.0: bar 6: [??? 0x00000000 Flags 0x2] a un faux alignement juin 4 14:20:17 Tecmint Vmunix: [4945.388837] I915 0000: 00: 02.0: bar 6: [??? 0x00000000 Flags 0x2] a un faux alignement juin 4 14:20:17 Tecmint Vmunix: [4945.388903] I915 0000: 00: 02.0: bar 6: [??? 0x00000000 Flags 0x2] a un faux alignement juin 4 14:20:17 Tecmint Vmunix: [4945.388930] I915 0000: 00: 02.0: bar 6: [??? 0x00000000 Flags 0x2] a un faux alignement juin 4 14:20:17 Tecmint Vmunix: [4945.389334] I915 0000: 00: 02.0: bar 6: [??? 0x00000000 Flags 0x2] a un faux alignement juin 4 14:20:17 Tecmint Vmunix: [4945.389402] PCIEPORT 0000: 00: 1C.0: Bar 15: Attribué [MEM 0XDFA00000-0XDFBFFFF 64BIT PREF]… 

Parce que ce fichier peut être relativement long, nous pouvons le visualiser en pages Plus de commandement (ce qui montre même un pourcentage) comme celui-ci.

# plus / var / log / messages 

Le contenu de / var / log / messages Contrairement au fichier précédent n'est pas effacé de l'arrêt car il ne contient pas seulement des messages de démarrage mais aussi des messages concernant les autres activités système. Les fichiers plus anciens sont donc compressés et conservés sur le système pour une inspection ultérieure comme indiqué ci-dessous.

# Message ls -l * -rw-r - r-- 1 racine racine 1206127 juin 10 14:20 messages -rw-r - r-- 1 racine racine 1419494 juin 4 13:00 messages.1 -rw-r - r-- 1 racine racine 153011 28 mai 09:30 messages.2.gz 

DMESG - Affiche les messages du noyau

La commande DMESG peut afficher les opérations une fois le processus de démarrage terminé, tels que les options de ligne de commande transmises au noyau; composants matériels détectés, événements lorsqu'un nouveau périphérique USB est ajouté, ou des erreurs comme la défaillance de NIC (carte d'interface réseau) et que les pilotes ne rapportent aucune activité de liaison détectée sur le réseau et bien plus encore.

# dmesg 
Afficher les messages du noyau
[0.000000] Initialisation de CGroup subsys CPUSET [0.000000] Initialisation du CGROUP subsys CPU [0.000000] Initialisation de CGroup subsys CPUACCT [0.000000] Version Linux 4.4.0-21-Generic ([Protégé par e-mail]) (Version GCC 5.3.1 20160413 (Ubuntu 5.3.1-14UBUNTU2)) # 37-UBUNTU SMP MON 18 avril 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37 génériques 4.4.6) [0.000000] ligne de commande: boot_image = / boot / vmLinUz-4.4.0-21 générique Root = UUID = 57B36D48-1938-43C2-BF85-E97BC9F423EA RO Splash Quiet [0.000000] CPU pris en charge du noyau: [0.000000] Intel authenineintel [0.000000] AMD Authenticamd [0.000000] Centaur Centaurhauls [0.000000] x86 / fpu: xstate_offset [2]: 576, xstate_sizes [2]: 256 [0.000000] x86 / fpu: support de fonction XSAVE 0x01: «x87 Registres à points flottants» [0.000000] x86 / FPU: Prise en charge de la fonction XSAVE 0x02: «SSE Registres» [0.000000] x86 / FPU: Support Fonction XSAVE 0x04: «AVX Registres» [0.000000] x86 / FPU: Caractéristiques XState activées 0x7, la taille du contexte est de 832 octets, en utilisant le format «standard». [0.000000] x86 / FPU: Utilisation de commutateurs de contexte FPU «Eager». [0.000000] E820: Carte RAM physique fournie par BIOS: [0.000000] BIOS-E820: [mem 0x00000000000000-0x000000000008ffff] utilisable [0.000000] BIOS-E820: [mem 0x0000000000090000-0x00000000000bffff] réservé [0.000000] BIOS-E820: [mem 0x00000000100000-0x000000001ffffff] utilisable [0.000000] BIOS-E820: [MEM 0x0000000020000000-0x00000000201FFFFF] Réservé [0.000000] BIOS-E820: [MEM 0x00000020200000-0x0000000040003fff] utilisable [0.000000] BIOS-E820: [mem 0x0000000040004000-0x0000000040004fff] réservé [0.000000] BIOS-E820: [mem 0x0000000040005000-0x0000000080b2ffff] utilisable [0.000000] BIOS-E820: [MEM 0x0000000080B30000-0X0000000080D31FFF] Réservé [0.000000] BIOS-E820: [MEM 0x0000000080D32000-0X00000000CE3EFFF] utilisable [0.000000] BIOS-E820: [MEM 0x00000000CE3EF000-0X00000000CE5EFFF] TYPE 20 [0.000000] BIOS-E820: [MEM 0x00000000CE5EF000-0X00000000DAEEEFFF] Réservé [0.000000] BIOS-E820: [MEM 0x00000000DAEEF000-0X00000000DAF9EFFF] ACPI NVS… 

JournalCTL - Contenu de requête de SystemD Journal

Ceci est utile dans la plupart des distros Linux actuels à l'aide de Systemd: le nouveau système de système et de service. En dessous, la journalisation du système se fait via le composant du journal - un emplacement centralisé pour tous les messages enregistrés par différents composants.

Ces messages incluent les messages du noyau et de démarrage; Messages de syslog ou de divers services. Nous pouvons l'utiliser pour revoir les messages de démarrage et établir des problèmes de démarrage en lisant la sortie et en identifiant les lignes d'intérêt (erreurs soulignées par les lignes rouges en fonction des paramètres de couleur du texte terminal).

# journalctl 
Afficher le contenu de SystemD
13 juin 16:35:32 Tecmint MTP-ProBe [963]: Vérification du bus 2, périphérique 5: "/ sys / périphériques / PCI0000: 00/0000: 00: 1D.0 / U juin 13 16:35:32 Tecmint MTP-Probe [963]: Bus: 2, Dispositif: 5 n'était pas un appareil MTP 13 juin 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2duuid -53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 juin 16:35:54 Tecmint Systemd [1]: Tourné en attendant le périphérique dev-disk-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d Jun 13 16:35:54 Tecmint Systemd [1]: la dépendance a échoué pour / dev / disque / by-uuid / 53e41ce9-dc18-458c-bc08-584c2 13 juin 16:35:54 Tecmint Systemd [1]: La dépendance a échoué pour l'échange. 13 juin 16:35:54 Tecmint Systemd [1]: Swap.Target: échange d'emploi.Target / Start a échoué avec le résultat «dépendance». 13 juin 16:35:54 Tecmint Systemd [1]: dev-disk-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 juin 16:35:54 Tecmint Systemd [1]: dev-disk-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 juin 16:35:54 Tecmint Systemd [1]: Initialisation du système cible atteint. 13 juin 16:35:54 Tecmint Systemd [1]: Début des événements ACPI. 13 juin 16:35:54 Tecmint Systemd [1]: Écoute sur les tasses Scheduler. 13 juin 16:35:54 Tecmint Systemd [1]: Démarrage du système de startup du système de console… 13 juin 16:35:54 Tecmint Systemd [1]: Démaillant quotidiennement des répertoires temporaires. 

Ce qui précède est un échantillon de la sortie de commande montrant une erreur que nous avons déjà identifiée en affichant / var / log / boot.enregistrer: l'erreur de partition d'échange. Pour afficher plus de lignes de sortie, appuyez simplement sur [Entrer] bouton.

Consultez également ces guides utiles sur la gestion du démarrage et des services du système Linux en relation avec les gestionnaires communs du système et des services:

  1. Gestion des processus dans RHEL 7: démarrer, arrêt et tout le reste
  2. Gestion des processus et services de démarrage du système (Sysvinit, Systemd et UpStart)
  3. L'histoire derrière «init» et «systemd»: pourquoi «init» devait être remplacé par «systemd»

Dans cet article, nous avons expliqué en bref les différentes étapes du processus de démarrage du système Linux et avons appris à établir et éventuellement à résoudre les problèmes de démarrage. Pour ajouter toute réflexion à ce guide, utilisez le formulaire de commentaire ci-dessous.