Maison  >  Article  >  Tutoriel système  >  Analyser le processus de démarrage du système Linux

Analyser le processus de démarrage du système Linux

PHPz
PHPzavant
2024-02-13 11:18:141079parcourir

Le système Linux est un système d'exploitation open source largement utilisé avec des fonctions puissantes et une configuration flexible. Cependant, avez-vous déjà pensé à la façon dont le système Linux démarre progressivement de l'obscurité lorsque vous appuyez sur le bouton d'alimentation ? Le processus de démarrage du système Linux est un processus complexe et délicat, qui implique plusieurs niveaux et composants tels que le matériel, le micrologiciel, le chargeur de démarrage, le noyau et l'espace utilisateur. Cet article analysera en détail le processus de démarrage du système Linux, y compris le BIOS, le MBR, GRUB, initrd, init, etc.

Ce qui suit prend la version CentOS5.5 comme exemple pour présenter le processus de démarrage de LINUX. Le processus spécifique est le suivant :

. Analyser le processus de démarrage du système Linux

Chaque étape est présentée en détail ci-dessous :

1) La première étape de l'autotest du micrologiciel consiste principalement à effectuer un autotest à la mise sous tension CMOS/BIOS POST sur le matériel pour vérifier si le matériel est normal au niveau physique. Vérifiez par exemple si le disque dur est correctement branché, etc.
2) La deuxième étape consiste à lire le BootLoader du MBR sur le disque dur et le programme à démarrage automatique. Le programme à démarrage automatique couramment utilisé sous Linux est GRUB. La fonction principale de cette étape est de charger le noyau. Le noyau est stocké dans le répertoire /boot
3) La troisième étape est le processus de chargement du noyau,
Les fonctions principales sont les suivantes : 1. Le matériel du lecteur contient un grand nombre de pilotes. 2. Démarrez le processus d'initialisation.
4) Le processus d'initialisation lit principalement le fichier /etc/inittab et exécute le niveau d'exécution par défaut pour continuer le démarrage. Il convient de noter que le PID du processus init est toujours 1, qui est le processus parent de tous les processus, tandis que le processus d'arrière-plan du processus init est 0, qui est le planificateur du noyau.
5)/etc/inittab définit les opérations d'initialisation.
Analyser le processus de démarrage du système Linux

Le format principal de la commande est : id : runlevels : action : process
Parmi eux, comme le montre l'encadré rouge sur la photo ci-dessus
1. Il existe 7 niveaux d'exécution, 0 à 6 sont les suivants :
0 —— arrêter l'arrêt
1——Mode mono-utilisateur Mode mono-utilisateur
2 - Multi-utilisateur, sans mode multi-utilisateur NFS mais sans réseau (mode texte)
3——Mode multi-utilisateur complet Mode multi-utilisateur complet (mode texte)
4——inutilisé réservé
5——Mode graphique multi-utilisateur X11
6——redémarrer
Vous pouvez basculer selon ces 7 niveaux de fonctionnement
Les commandes sont : afficher le niveau d'exécution actuel #runlevel, changer de niveau d'exécution #init[0 |1 |2 |3 |4 |5 |6]

2. Il y a aussi plusieurs valeurs importantes dans l'action :

1 initdefault : Spécifie le niveau d'exécution de démarrage par défaut du système, comme indiqué dans l'image ci-dessus. Il est généralement utilisé pour la réparation. Par exemple, si nous voulons entrer en mode mono-utilisateur, nous pouvons le définir sur 1. Nous ne pouvons pas. définissez la valeur par défaut sur 0 ou 6, sinon cela ne fonctionnera pas. Start.

.

2sysinit : Le système commence à exécuter la commande spécifiée dans le processus
Analyser le processus de démarrage du système Linux

Il ressort du contenu du fichier inittab qu'aucun niveau d'exécution n'est défini, ce qui signifie que quel que soit le niveau d'exécution, /etc/rc.d/rc.sysinit sera exécuté

6) initdefault, comme mentionné à l'étape 5, lit principalement les informations dans /etc/inittab pour déterminer quel est le niveau d'exécution par défaut.
7)/etc/rc.d/rc.sysinit
Exécutez jusqu'à la ligne 21 du fichier inittab pour démarrer le script. Terminez le démarrage du programme de service système, comme la définition des variables d'environnement système, le réglage de l'horloge système, le chargement des polices, la vérification du système de fichiers chargé, la génération de fichiers journaux d'informations de démarrage du système, etc. Puisqu'il s'agit d'un service de base, son niveau d'exécution est défini sur vide : c'est-à-dire n'importe quel niveau, et l'action est définie sur sysinit. Autrement dit, le script doit être démarré à n'importe quel niveau d'exécution pour terminer le démarrage du service de base
8) Une fois le service de base démarré, le script /etc/rc.d/rc sera exécuté
Après avoir chargé le service de base, vous devez démarrer le répertoire correspondant selon différents niveaux d'exécution. Son principe de fonctionnement est d'abord de déterminer le niveau d'exécution par défaut du système, qui est celui de l'étape 6, puis d'exécuter le rcN correspondant. Le script de démarrage du service dans le répertoire d est comme indiqué sur la figure
Analyser le processus de démarrage du système Linux

9) Exécutez le script de démarrage du service dans le répertoire /etc/rc.d/rcN.d

Regardez le contenu de cet annuaire :
Analyser le processus de démarrage du système Linux

où S représente le script à démarrer et K représente le script à fermer
Les chiffres indiquent la séquence de démarrage, les valeurs plus petites étant prioritaires. Principalement pour la gestion de certains services
. Dans cette étape, nous devons expliquer le répertoire /etc/rc.d/init.d. Les scripts placés dans ce répertoire sont de vrais scripts, tandis que les scripts placés dans rcN.d sont des liens symboliques dans le répertoire init.d. en d'autres termes, tous les fichiers de rcN.d devront éventuellement trouver le vrai script dans init.d
Jetez un oeil aux détails spécifiques:
Analyser le processus de démarrage du système Linux

Analyser le processus de démarrage du système Linux

Après avoir exécuté cette étape, l'interface vous demandera de saisir le nom d'utilisateur et le mot de passe, ce qui signifie que le système a démarré. Le processus de saisie du nom d'utilisateur et du mot de passe sera discuté plus tard. Cette fois, le processus de démarrage est terminé.

La dernière chose à noter est que l'idée du processus de démarrage de LINUX est à peu près la même, mais les détails sont différents dans le nom ou l'emplacement du fichier de configuration en raison de problèmes de version. Cette fois, j'ai utilisé CentOS. version, mais pas la version Ubuntu. Fichier inittab et fichier grup.conf, donc si vous êtes intéressé, vous pouvez suivre cette idée pour explorer.

PS : À propos de GRUB

GNU GRUB ("GRUB" en abrégé) est un chargeur de démarrage du projet GNU. GRUB est une implémentation de la spécification multi-boot, qui permet aux utilisateurs d'avoir plusieurs systèmes d'exploitation sur l'ordinateur en même temps et de sélectionner le système d'exploitation qu'ils souhaitent exécuter au démarrage de l'ordinateur. GRUB peut être utilisé pour sélectionner différents noyaux sur une partition du système d'exploitation et peut également être utilisé pour transmettre des paramètres de démarrage à ces noyaux.

Le prédécesseur de GNU GRUB est Grand Unified Bootloader. Il est principalement utilisé dans les systèmes de type Unix ; comme la plupart des distributions Linux, les systèmes GNU utilisent également GNU GRUB comme lanceur. À partir de la version 10 1/06, Solaris utilise également GNU GRUB comme lanceur sur les systèmes x86.

GRUB est configurable dynamiquement ; il charge les informations de configuration au démarrage et permet des modifications au démarrage, comme la sélection d'un noyau et d'un initrd différents. À cette fin, GRUB fournit une interface de ligne de commande simple de type Bash, qui permet aux utilisateurs d'écrire de nouvelles séquences de démarrage.

GRUB est très léger. Il prend en charge une variété de formats exécutables ; en plus d'être applicable aux systèmes d'exploitation prenant en charge le multi-démarrage, il prend également en charge les systèmes d'exploitation tels que Windows et OS/2 qui ne prennent pas en charge le multi-démarrage via la fonction de démarrage en chaîne. GRUB prend en charge tous les systèmes de fichiers Unix, ainsi que les systèmes de fichiers FAT et NTFS pour Windows, et prend également en charge le mode LBA. GRUB permet aux utilisateurs d'afficher le contenu des fichiers dans les systèmes de fichiers qu'il prend en charge.

GRUB dispose d'une variété d'interfaces utilisateur. La plupart des distributions Linux profitent de la prise en charge par GRUB des interfaces graphiques pour fournir des menus de démarrage personnalisés avec des modèles d'arrière-plan, et prennent parfois également en charge la souris. En définissant l'interface texte GRUB, le démarrage du terminal à distance peut être réalisé via le port série.

GRUB peut télécharger des images du système d'exploitation à partir d'Internet, afin de prendre en charge les systèmes sans disque. GRUB prend en charge la décompression de l'image du système d'exploitation avant de le démarrer.

Contrairement aux autres lanceurs, GRUB peut interagir avec les utilisateurs directement via l'invite GRUB. Avant de charger le système d'exploitation, tapez la touche c dans l'écran du mode texte GRUB pour accéder à la ligne de commande GRUB. Sur les systèmes sans système d'exploitation ou avec un système d'exploitation mais pas de fichier "menu.lst", vous pouvez également saisir l'invite GRUB. L'invite GRUB permet aux utilisateurs de démarrer manuellement n'importe quel système d'exploitation via des commandes de type bash. Enregistrez les commandes appropriées dans le fichier "menu.lst" pour démarrer automatiquement un système d'exploitation.

GRUB dispose d'une multitude de commandes de terminal. En utilisant ces commandes à partir de la ligne de commande, les utilisateurs peuvent afficher les détails de la partition du disque dur, modifier les paramètres de partition, remapper temporairement l'ordre des disques, démarrer à partir de n'importe quel fichier de configuration défini par l'utilisateur et afficher les fichiers pris en charge par la configuration GRUB. des autres lanceurs sur le système. Il est donc possible de démarrer un système d’exploitation à partir d’un périphérique externe sans savoir ce qui est installé sur un ordinateur.

GRUB utilise un écran défilant pour sélectionner le système d'exploitation que vous souhaitez démarrer. En ajoutant des informations pertinentes au fichier "menu.lst", GRUB peut contrôler 150 options de démarrage ou plus, qui peuvent être sélectionnées avec les touches fléchées au démarrage.

Avec le démarrage en chaîne, un lanceur peut démarrer un autre lanceur. GRUB peut être démarré à partir des systèmes DOS, Windows, Linux, BSD et Solaris avec 2 à 3 lignes de commandes.

Bien que GRUB soit compilé et packagé pour les systèmes de type Unix, il existe également GRUB pour DOS et Windows. GRUB peut également être installé en tant que système isolé sans aucun système d'exploitation. L'utilisation de GRUB nécessite 1 fichier lors du démarrage à partir d'un CD, et 2 fichiers sont requis lors du démarrage à partir d'une disquette, d'un disque dur et d'un périphérique USB. Ces fichiers peuvent être trouvés sur n'importe quel CD Linux prenant en charge GRUB, et les utilisateurs peuvent les trouver facilement.

Cet article analyse en détail le processus de démarrage du système Linux, y compris le BIOS, le MBR, GRUB, initrd, init, etc. En comprenant et maîtrisant ces connaissances, nous pouvons mieux comprendre le fonctionnement interne du système Linux, et ainsi mieux utiliser et optimiser le système Linux. Bien sûr, il existe de nombreux détails et changements dans le processus de démarrage du système Linux, qui nous obligent à continuer à apprendre et à explorer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer