English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Lorsque Linux démarre, nous verrons de nombreuses informations de démarrage.
Le processus de démarrage du système Linux n'est pas aussi complexe que l'on pourrait s'y attendre, le processus peut être divisé en5étapes :
Chargement du noyau。
Exécuter init。
Initialisation du système.
Créer un terminal .
l'utilisateur se connecte au système.
type du programme init :
SysV : init, CentOS 5auparavant, fichier de configuration : /etc/inittab。
Upstart : init, CentOS 6, fichier de configuration : /etc/inittab, /etc/init/*.conf。
Systemd : systemd, CentOS 7, fichier de configuration : /usr/lib/systemd/system、 /etc/systemd/system。
Lorsque l'ordinateur est allumé, le premier est le diagnostic de démarrage BIOS, selon le périphérique de démarrage configuré dans BIOS (généralement le disque dur) pour démarrer.
Après que l'exploitation système a pris en charge l'hardware, d'abord lire /fichier du noyau dans le répertoire boot.
Le processus init est le point de départ de tous les processus du système, vous pouvez le comparer à l'ancêtre de tous les processus du système, sans ce processus, aucun processus ne peut démarrer dans le système.
Le programme init doit d'abord lire le fichier de configuration /etc/inittab。
De nombreux programmes nécessitent un démarrage. Ils sont appelés "services" (service) sous Windows, et "démon" (daemon) sous Linux.
L'une des grandes tâches du processus init est de démarrer ces programmes de démarrage.
Cependant, différents scénarios nécessitent le lancement de différents programmes, par exemple, lorsqu'il est utilisé en tant que serveur, Apache doit être démarré, mais il n'est pas nécessaire de le faire pour un bureau.
Linux permet de distribuer des programmes de démarrage différents pour différents scénarios, ce qui est appelé "niveau de fonctionnement" (runlevel). Cela signifie que lors du démarrage, les programmes à exécuter sont déterminés en fonction du "niveau de fonctionnement".
Le système Linux a7niveau de fonctionnement (runlevel) :
niveau de fonctionnement 0 : état d'arrêt du système, le niveau de fonctionnement par défaut du système ne peut pas être réglé sur 0, sinon ne peut pas démarrer normalement
niveau de fonctionnement1:état de travail en mode utilisateur unique, privilèges root, utilisé pour la maintenance du système, connexion distante interdite
niveau de fonctionnement2:état multiutilisateur (sans NFS)
niveau de fonctionnement3:état multiutilisateur complet (avec NFS), après la connexion, accédez au mode ligne de commande de la console
niveau de fonctionnement4:le système n'est pas utilisé, conservé
niveau de fonctionnement5:X11console, après la connexion, accédez au mode GUI graphique
niveau de fonctionnement6:le système s'est fermé et redémarré normalement, le niveau de fonctionnement par défaut ne peut pas être réglé sur6,sinon ne peut pas démarrer normalement
There is this line in the init configuration file: si::sysinit:/etc/rc.d/rc.sysinit it calls and executes/etc/rc.d/rc.sysinit, and rc.sysinit is a bash shell script, mainly for completing some system initialization tasks. rc.sysinit is an important script that must be run first in each run level.
It mainly completes the following tasks: activates the swap partition, checks the disk, loads hardware modules, and other tasks that need to be executed with priority.
l5:5:wait:/etc/rc.d/rc 5
This line indicates that5as parameters to run/etc/rc.d/rc/etc/rc.d/rc is a Shell script that accepts5as parameters to execute/etc/rc.d/rc5.d/directory under all the rc startup scripts,/etc/rc.d/rc5.d/The startup scripts in the directory are actually some link files, not real rc startup scripts. The real rc startup scripts are actually placed in/etc/rc.d/init.d/directory.
These rc startup scripts have similar usage, and they generally accept parameters such as start, stop, restart, status, etc.
/etc/rc.d/rc5.d/The rc startup scripts are usually files starting with K or S, for startup scripts starting with S, they will be run with the start parameter.
And if there is a corresponding script with a K prefix connection and it is already running (with/var/lock/subsys/If the files under the directory are used as a marker), then these already started daemons will be stopped first with the stop parameter, and then re-run.
This is to ensure that when init changes the run level, all related daemons will be restarted.
As to which daemons will run in each run level, users can set them themselves through chkconfig or 'System Services' in setup.
After the rc execution is completed, it will return to init. At this point, the basic system environment has been set up, and various daemons have also been started.
init will open6terminals, so that users can log in to the system. In the following6This line defines6terminals:
1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6
From the above, we can see that in2,3,4,5The mingetty program will run in the respawn mode in all the run levels, and the mingetty program can open terminals and set modes.
It will also display a text login interface, which is the login interface we often see. In this login interface, it will prompt the user to enter a username, and the username entered by the user will be passed as a parameter to the login program to verify the user's identity.
Generally, there are three ways for users to log in:
(1Command line login
(2SSH login
(3) Connexion en mode graphique
Pour les niveaux de démarrage5Pour les utilisateurs en mode graphique, leur connexion se fait via une interface de connexion graphique. Une fois connecté, ils peuvent directement entrer dans KDE, Gnome et d'autres gestionnaires de fenêtres.
Et cet article parle principalement de la situation de connexion en mode texte : lorsque nous voyons l'interface de connexion mingetty, nous pouvons entrer le nom d'utilisateur et le mot de passe pour nous connecter au système.
Le programme de vérification de compte de Linux est login, login recevra le nom d'utilisateur transmis par mingetty en tant que paramètre de nom d'utilisateur.
Puis login analysera le nom d'utilisateur : si le nom d'utilisateur n'est pas root et qu'il existe /etc/nologin fichier, login affichera le contenu du fichier nologin puis quittera.
Cela est généralement utilisé pour empêcher les utilisateurs non root de se connecter pendant la maintenance du système. Seul/etc/Les terminaux enregistrés dans securetty permettent à l'utilisateur root de se connecter, si ce fichier n'existe pas, l'utilisateur root peut se connecter à tout terminal.
/etc/usertty pour appliquer des restrictions d'accès supplémentaires aux utilisateurs, si ce fichier n'existe pas, il n'y a pas d'autres restrictions.
Après avoir analysé le nom d'utilisateur, login recherchera /etc/passwd ainsi que /etc/shadow pour vérifier le mot de passe et configurer d'autres informations de compte, telles que : quel est le répertoire principal, quel shell est utilisé. Si le répertoire principal n'est pas spécifié, il sera par défaut le répertoire racine ; si le shell n'est pas spécifié, il sera par défaut /bin/bash.
Linux prévoit six terminaux de fenêtres de commande pour que nous nous connections.
Par défaut, nous nous connectons au premier terminal, c'est-à-dire tty1, ces six fenêtres sont respectivement tty1,tty2 … tty6, vous pouvez appuyer sur Ctrl + Alt + F1 ~ F6 pour les basculer.
Si vous avez installé une interface graphique, par défaut, vous entrez dans l'interface graphique, à ce moment-là, vous pouvez appuyer sur Ctrl + Alt + F1 ~ F6pour entrer dans l'une des interfaces de fenêtre de commande.
Lorsque vous entrez dans l'interface de la fenêtre de commande, pour retourner à l'interface graphique, il suffit de appuyer sur Ctrl + Alt + F7 et vous êtes revenu.
Si vous utilisez une machine virtuelle VMware, le raccourci clavier pour passer à la fenêtre de commande est Alt + Espace + F1~F6. Si vous utilisez une interface graphique, appuyez sur Alt + Maj + Ctrl + F1~F6 Passer à la fenêtre de commande.
Dans le domaine de Linux, cela est généralement utilisé sur les serveurs, et on ne rencontre rarement l'opération d'arrêt. Après tout, exécuter un service sur un serveur est une tâche sans fin, sauf dans des cas spéciaux où il est不得已才进行关机。
Le processus d'arrêt correct est : sync > shutdown > reboot > halt
L'instruction d'arrêt est : shutdown, vous pouvez utiliser man shutdown pour consulter la documentation d'aide.
例如你可以运行如下命令关机:
sync 将数据由内存同步到硬盘中。 shutdown 关机指令,你可以man shutdown 来查看帮助文档。例如你可以运行如下命令关机: shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登录用户的当前屏幕中。 shutdown –h now 立即关机 shutdown –h 20:25 系统将在今天20:25关机 shutdown –h +10 十分钟后关机 shutdown –r now 系统立即重启 shutdown –r +10 系统十分钟后重启 reboot 就是重启,等同于 shutdown –r now halt 关闭系统,等同于 shutdown –h now 和 poweroff
最后总结一下,无论是重启系统还是关闭系统,首先要运行 sync 命令,将内存中的数据写入磁盘。
关机的命令有 shutdown –h now halt poweroff 和 init 0 重启系统的命令有 shutdown –r now reboot init 6。