English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
linux启动时我们会看到许多启动信息。
Linux系统的启动过程并不像大家想象中的那么复杂,其过程可以分为5个阶段:
内核的引导。
运行 init。
系统初始化。
建立终端。
用户登录系统。
init程序的类型:
SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
Upstart: init, CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。
当计算机打开电源后,首先是BIOS自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件后,首先读入 /boot目录下的内核文件。
init进程是系统所有进程的起点,你可以把它比作系统所有进程的祖先,没有这个进程,系统中任何进程都不会启动。
init程序首先需要读取配置文件 /etc/inittab。
许多程序需要开机启动。它们在Windows中被称为"服务"(service),在Linux中则被称为"守护进程"(daemon)。
init进程的一项重要任务就是运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,例如用作服务器时,需要启动Apache,用作桌面则不需要。
Linux允许为不同的场合分配不同的开机启动程序,这被称为"运行级别"(runlevel)。也就是说,启动时根据"运行级别"确定要运行哪些程序。
Linux系统有7个运行级别(runlevel):
运行级别0:系统停机状态,系统默认运行级别不能设置为0,否则无法正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设置为6,否则无法正常启动
In der Konfigurationsdatei von init gibt es so einen Eintrag: si::sysinit:/etc/rc.d/rc.sysinit/etc/rc.d/rc.sysinit, und rc.sysinit ist ein bash-Skript, das hauptsächlich die Systeminitialisierung durchführt. rc.sysinit ist ein wichtiger Skript, das in jeder Laufebene zuerst ausgeführt werden muss.
Es erledigt hauptsächlich die folgenden Aufgaben: Aktivierung des Swap-Partitions, Überprüfung der Festplatte, Laden von Hardware-Modulen und andere Aufgaben, die priorisiert ausgeführt werden müssen.
l5:5:wait:/etc/rc.d/rc 5
Diese Zeile bedeutet, dass5mit dem Parameter ausgeführt wird/etc/rc.d/rc/etc/rc.d/rc ist ein Shell-Skript, das5Als Parameter, um auszuführen/etc/rc.d/rc5.d/Verzeichnis./etc/rc.d/rc5.d/Verzeichnis sind diese Startskripte tatsächlich Verknüpfungsdateien und keine echten rc-Startskripte. Die echten rc-Startskripte sind tatsächlich in/etc/rc.d/init.d/Verzeichnis.
Diese rc-Startskripte haben ähnliche Verwendungen und können in der Regel Parameter wie start, stop, restart, status akzeptieren.
/etc/rc.d/rc5.d/Startskripte im rc normalerweise mit K oder S beginnen. Für Startskripte, die mit S beginnen, wird der Parameter start verwendet.
Wenn festgestellt wird, dass es auch entsprechende Skripte mit K-Buchstabenbeginn gibt und diese bereits im laufenden Zustand sind (mit/var/lock/subsys/Dateien als Zeichen verwendet werden, dann werden diese bereits gestarteten Dienste zunächst mit dem Parameter stop gestoppt und dann neu gestartet.
Dies geschieht, um sicherzustellen, dass alle relevanten Dienste neugestartet werden, wenn init den Laufebene ändert.
Was für Dienste in jeder Laufebene ausgeführt werden sollen, kann der Benutzer über chkconfig oder "Systemdienste" in setup selbst einstellen.
rc-Programm nach Abschluss des rc-Programms zurück an init übergeben. Zu diesem Zeitpunkt sind die grundlegenden Systemumgebungen bereits eingerichtet und alle Dienste sind gestartet.
init wird das6Terminals, um die Anmeldung des Benutzers ins System zu ermöglichen. In den folgenden6Diese Zeile definiert6Terminalen:
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
Aus dem obigen Beispiel geht hervor, dass in2345alle Betriebsebenen mit dem Modus respawn das Programm mingetty ausführen, das Terminals öffnen und den Modus einstellen kann.
Es wird auch eine Textanmeldeoberfläche angezeigt, die wir oft als Anmeldeoberfläche sehen. In dieser Anmeldeoberfläche wird dem Benutzer angezeigt, dass er den Benutzernamen eingeben soll, und der vom Benutzer eingegebene Benutzername wird als Parameter an das login-Programm übergeben, um die Identität des Benutzers zu überprüfen.
Im Allgemeinen gibt es drei Arten der Anmeldung des Benutzers:
(1Kommandozeilen-Anmeldung
(2ssh-Anmeldung
(3) grafische Anmeldung
Für den Laufebene5Für Benutzer in der grafischen Weise, ihre Anmeldung erfolgt durch eine grafische Login-Oberfläche. Nach dem Erfolg des Logins können sie direkt in KDE, Gnome und andere Fenstermanager eintreten.
Dieser Artikel behandelt hauptsächlich den Textmodus der Anmeldung: Wenn wir die Login-Oberfläche von mingetty sehen, können wir Benutzername und Passwort eingeben, um uns in das System einzuloggen.
Das Konto-Authentifizierungsprogramm von Linux ist login, login empfängt den Benutzernamen von mingetty als Benutzername-Parameter.
Dann analysiert login den Benutzernamen: Wenn der Benutzername nicht root ist und es /etc/nologin-Datei, login gibt den Inhalt der nologin-Datei aus und beendet sich.
Dies wird in der Regel verwendet, um den Zugang von nicht-root-Benutzern während der Systemwartung zu verhindern. Nur/etc/Nur die in securetty eingetragenen Terminals erlauben den Root-Benutzeranmeldung, wenn diese Datei nicht existiert, kann der Root-Benutzer sich auf jedem Terminal anmelden.
/etc/usertty-Datei wird verwendet, um zusätzliche Zugriffsbeschränkungen für den Benutzer zu setzen, wenn diese Datei nicht existiert, gibt es keine anderen Beschränkungen.
Nachdem der Benutzername analysiert wurde, sucht login /etc/passwd und /etc/shadow, um das Passwort zu überprüfen und andere Informationen des Kontos zu setzen, wie z.B.: Was ist der Hauptverzeichnis, welche Shell wird verwendet. Wenn das Hauptverzeichnis nicht angegeben ist, wird es standardmäßig das Wurzelverzeichnis sein; wenn die Shell nicht angegeben ist, wird standardmäßig /bin/bash.
Linux bietet sechs Kommandozeilen-Terminals an, um uns zu ermöglichen, uns anzumelden.
Standardmäßig ist es der erste Fenster, der tty1, diese sechs Fenster sind tty1,tty2 … tty6, Sie können Ctrl + Alt + F1 ~ F6 um sie zu wechseln.
Wenn Sie ein grafisches Interface installiert haben, ist dies in der Regel der Fall, Sie können dann Ctrl + Alt + F1 ~ F6um in eines der Befehlsfenster-Interfaces zu gelangen.
Wenn Sie in das Befehlsfenster-Interface eintreten, kehren Sie in das grafische Interface, indem Sie nur Ctrl + Alt + F7 wird zurückgekehrt.
Wenn Sie einen VMware-Virtualmachine verwenden, ist der Befehlsfenster-Wechsel mit Alt + Space + F1~F6. Wenn Sie im grafischen Interface sind, drücken Sie Alt + Shift + Ctrl + F1~F6 Wechseln Sie zum Befehlsfenster.
In der Linux-Branche wird dies hauptsächlich auf Servern verwendet, es gibt selten Shutdown-Operationen. Schließlich läuft ein Service auf einem Server endlos, es sei denn, es handelt sich um Ausnahmefälle, in denen der Shutdown unumgänglich ist.
Der richtige Shutdown-Workflow ist: sync > shutdown > reboot > halt
Der Shutdown-Befehl lautet: shutdown, Sie können mit man shutdown die Hilfedokumentation anzeigen.
例如你可以运行如下命令关机:
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。