LFCS Managing System Startup Process and Services (Sysvinit, Systemd und Upstart) - Teil 7
- 1254
- 43
- Levke Harnapp
Vor ein paar Monaten kündigte die Linux Foundation die an LFCS (Linux Foundation Certified Sysadmin) Zertifizierung, ein aufregendes neues Programm, dessen Ziel es Einzelpersonen aus allen Bereichen der Welt ermöglicht, zertifiziert zu werden, um Grund- bis Zwischensystemverwaltungsaufgaben unter Linux -Systemen auszuführen. Dies beinhaltet die Unterstützung bereits laufender Systeme und Dienste sowie die Problemfindung und -analyse aus erster Hand sowie die Möglichkeit, zu entscheiden, wann Probleme an technische Teams aufgewendet werden sollen.
Linux Foundation Certified Sysadmin - Teil 7Das folgende Video beschreibt eine kurze Einführung in das Linux Foundation -Zertifizierungsprogramm.
Dieser Beitrag ist Teil 7 einer 10-Tutorial-Serie. Hier in diesem Teil werden wir erläutern.
Verwalten des Linux -Startprozesses
Der Startprozess eines Linux -Systems besteht aus mehreren Phasen, die jeweils durch eine andere Komponente dargestellt werden. Das folgende Diagramm fasst den Startvorgang kurz zusammen und zeigt alle beteiligten Hauptkomponenten an.
Linux -Boot -ProzessWenn Sie die drücken Leistung Taste auf Ihrem Computer, die Firmware, die in a gespeichert ist Eeprom Chip im Motherboard initialisiert die POST (Einschalttest) Um den Status der Hardware -Ressourcen des Systems zu überprüfen. Wenn das POST ist fertig, die Firmware sucht und lädt die 1. Stufe Bootlader, befindet sich in der Mbr oder in der Efi Partition der ersten verfügbaren Festplatte und gibt die Kontrolle darüber.
MBR -Methode
Der Mbr befindet sich im ersten Sektor der Festplatte, das als bootfähig in der markiert ist BIOS Einstellungen und ist 512 Bytes in Größe.
- Erste 446 Bytes: Der Bootloader enthält sowohl ausführbarer Code als auch Fehlermeldungstext.
- Nächste 64 Bytes: Die Partitionstabelle enthält einen Datensatz für jede von vier Partitionen (primär oder erweitert). Jeder Datensatz gibt unter anderem den Status (aktiv / nicht aktiv), Größe und Start- / Endsektoren jeder Partition an.
- Letzte 2 Bytes: Die magische Nummer dient als Validierungsprüfung des MBR.
Der folgende Befehl führt eine Sicherung des Mbr (In diesem Beispiel, /dev/sda ist die erste Festplatte). Die resultierende Datei, mbr.BKP kann sich nützlich erweisen, falls die Partitionstabelle beschädigt wird, zum Beispiel das System unbemerkenswert macht.
Natürlich müssen wir es speichern und woanders speichern (wie a USB Antrieb zum Beispiel). Diese Datei hilft uns dabei.
Backup MBR
# dd if =/dev/sda von = mbr.BKP BS = 512 count = 1Backup MBR in Linux
Wiederherstellung von MBR
# dd if = mbr.bkp von =/dev/sda bs = 512 count = 1MBR in Linux wiederherstellen
EFI/UEFI -Methode
Für Systeme verwenden die Efi/Uefi Methode, die UEFI -Firmware liest ihre Einstellungen, um zu bestimmen, welche UEFI -Anwendung gestartet werden soll, und von wo (i).e., in welchem Festplatten und Partition sich die EFI -Partition befindet).
Als nächstes die 2. Stufe Der Bootloader (auch bekannt als Boot Manager) wird geladen und ausgeführt. RODEN [Grand Unified Boot] ist der am häufigsten verwendete Boot -Manager unter Linux. Eine von zwei unterschiedlichen Versionen finden Sie in den meisten heute verwendeten Systemen.
- Grub Legacy -Konfigurationsdatei:/boot/grub/Menü.LST (ältere Ausschüttungen, nicht von EFI/UEFI -Firma) unterstützt).
- GRUB2 -Konfigurationsdatei: höchstwahrscheinlich,/etc/Standard/grub.
Obwohl die Ziele der LFCS Die Prüfung fordert nicht ausdrücklich Kenntnisse darüber an RODEN Interna, wenn Sie mutig sind und es sich leisten können, Ihr System durcheinander zu bringen (Sie möchten es vielleicht zuerst auf einer virtuellen Maschine versuchen), müssen Sie ausführen.
# Update-Grub
Als Wurzel Nach der Änderung der GRUB -Konfiguration, um die Änderungen anzuwenden.
Grundsätzlich, RODEN lädt die Standardeinstellung Kernel und das initrd oder Initramfs Bild. In wenigen Worten helfen initrd oder initramfs bei der Durchführung der Hardwareerkennung, des Kernel -Modul -Ladens und der Geräteerkennung erforderlich, um das reale Root -Dateisystem zu montieren.
Sobald das reale Root -Dateisystem abgelaufen ist, führt der Kernel den System- und Service -Manager aus (ausdrin oder systemd, deren Prozessidentifikation oder PID immer 1) mit dem normalen Benutzer-Raum-Boot-Prozess beginnen, um eine Benutzeroberfläche zu präsentieren.
Beide drin Und systemd sind Dämonen (Hintergrundprozesse), die andere Daemons verwalten, als erster Dienst, der (während des Starts) und der letzte Dienst zum Kündigen (während des Herunterfahrens) zu starten ist, (während des Herunterfahrens).
Systemd und initStartdienste (sysvinit)
Das Konzept von Runlevels In Linux gibt verschiedene Möglichkeiten zur Verwendung eines Systems an, indem Sie die Dienste kontrollieren. Mit anderen Worten, ein Runlevel steuert, welche Aufgaben im aktuellen Ausführungsstatus = Runlevel erledigt werden können (und welche nicht können).
Traditionell wurde dieser Start -up -Prozess auf der Grundlage von Kongressen durchgeführt, die entstanden sind System v Unix, Mit dem System, das ausführte Sammlungen von Skripten, die Dienste starten und stoppen, während die Maschine einen bestimmten Runlevel eingab (was mit anderen Worten eine andere Art des Ausführens des Systems ist).
Innerhalb jedes Runlevel können einzelne Dienste so eingestellt werden, dass sie ausgeführt werden oder beim Ausführen geschlossen werden. Die neuesten Versionen einiger großer Verteilungen entfernen sich von der weg System v Standard zugunsten eines eher neuen Service- und Systemmanagers namens systemd (was für System Daemon steht), aber normalerweise unterstützen sysv Befehle für Kompatibilitätszwecke. Dies bedeutet, dass Sie den größten Teil des Bekannten laufen können sysv Init-Tools in einer systemd-basierten Verteilung.
Lesen Sie auch: Warum 'systemd' 'Init' in Linux ersetzt
Neben dem Systemprozess starten Sie nicht nur den Systemprozess, drin schaut auf die /etc/inittab Datei, um zu entscheiden, welche Runlevel eingegeben werden muss.
Runlevel | Beschreibung |
0 | Halten Sie das System an. Runlevel 0 ist ein spezieller Übergangszustand, der zum schnellen Herunterfahren des Systems verwendet wird. |
1 | Diese Runlevel wird auch als Wartungsmodus als Wartungsmodus bezeichnet. Welche Dienste, falls vorhanden, an diesem Runlevel begonnen werden. Es wird in der Regel für die Wartung von Systemen auf niedrigem Niveau verwendet, die durch den normalen Systembetrieb beeinträchtigt werden können. |
2 | Multiuser. Auf Debian -Systemen und Derivaten ist dies der Standard -Runlevel und enthält - Wenn verfügbar - ein grafisches Login. Auf rot-hut basierten Systemen ist dies der Multiuser-Modus ohne Netzwerk. |
3 | Auf rothass basierten Systemen ist dies der Standardmultiuser-Modus, in dem alles außer der grafischen Umgebung ausgeführt wird. Diese Runlevel und Level 4 und 5 werden normalerweise nicht auf Debian-basierten Systemen verwendet. |
4 | In der Regel standardmäßig nicht genutzt und daher zur Anpassung verfügbar. |
5 | Auf rot-hut basierten Systemen, vollem Multiuser-Modus mit GUI-Login. Dieser Runlevel ist wie Level 3, aber mit einem GUI -Login verfügbar. |
6 | Starten Sie das System neu. |
Um zwischen Runlevels zu wechseln, können wir einfach eine Runlevel -Änderung mit dem ausstellen drin Befehl: init N (wobei N einer der oben aufgeführten Runlevels ist). Bitte beachten Sie, dass dies nicht die empfohlene Methode ist, um ein laufendes System zu einem anderen Runlevel zu bringen, da es den vorhandenen angemeldeten Benutzern nicht warnt (damit sie die Arbeit und Prozesse verlieren, um abnormal zu kündigen).
Stattdessen die abschalten Der Befehl sollte verwendet werden, um das System neu zu starten (das zuerst eine Warnmeldung an alle angemeldeten Benutzer sendet und weitere Anmeldungen blockiert. Anschließend signalisiert es init, Runlevels zu wechseln). Der Standard -Runlevel (das, auf das das System booten wird) muss jedoch in der bearbeitet werden /etc/inittab Datei zuerst.
Aus diesem Grund befolgen Sie die folgenden Schritte, um die folgenden Zeile in die folgende Zeile in den Runlevels zu wechseln /etc/inittab.
ID: 2: InitDefault:
und ändern Sie die Nummer 2 Für den gewünschten Runlevel mit Ihrem bevorzugten Texteditor wie VIM (beschrieben in der Verwendung von VI/VIM -Editor unter Linux - Teil 2 dieser Serie).
Als nächstes laufen als Root.
# Herunterfahren -r jetzt
Das zuletzt Der Befehl startet das System neu, wodurch es während des nächsten Starts in der angegebenen Runlevel beginnt und die Skripte in der ausführt /etc/rc [Runlevel].D Verzeichnis, um zu entscheiden, welche Dienste gestartet werden sollen und welche nicht. Zum Beispiel für Runlevel 2 im folgenden System.
Wechseln Sie Runlevels unter LinuxVerwalten Sie Dienste mit ChkConfig
Um Systemdienste auf dem Boot zu aktivieren oder zu deaktivieren, verwenden wir den Befehl chkconfig in CentOS / openSuse und werden sysv-rc-conf in Debian und Derivaten. Dieses Tool kann uns auch zeigen.
Lesen Sie auch: So stoppen und deaktivieren Sie unerwünschte Dienste unter Linux
Auflistung der Runlevel -Konfiguration für einen Dienst.
# Chkconfig -List [Service Name] # Chkconfig -List Postfix # Chkconfig -List MySQLDListing Runlevel -Konfiguration
Im obigen Bild können wir das sehen Postfix ist so eingestellt, dass das System in Runlevels eintritt 2 durch 5, wohingegen Mysqld wird standardmäßig für Runlevels ausgeführt 2 durch 4. Nehmen wir nun an, dass dies nicht das erwartete Verhalten ist.
Zum Beispiel müssen wir einschalten Mysqld für Runlevel 5 Auch und schalten Sie Postfix für Runlevels 4 und 5 aus. Folgendes würden wir jeweils tun (führen Sie die folgenden Befehle als Stamm aus) aus.
Aktivieren eines Dienstes für einen bestimmten Runlevel
# chkconfig -Level [Level (s)] Service auf # chkconfig -Level 5 MySQLD on
Deaktivieren eines Dienstes für bestimmte Runlevels
# chkconfig -Level [Level (s)] Service off # chkconfig -Level 45 Postfix offAktivieren Sie Deaktivierungsdienste
Wir werden jetzt ähnliche Aufgaben in a ausführen Debianbasiert System verwendet sysv-rc-conf.
Verwalten Sie Dienste mithilfe der SYSV-RC-Conf
Konfigurieren eines Dienstes so automatisch auf einem bestimmten Runlevel und verhindern, dass er mit allen anderen beginnt.
1. Verwenden wir den folgenden Befehl, um zu sehen, was die Runlevels wo sind mdadm ist für den Start konfiguriert.
# ls -l /etc /rc [0-6].d | grep -e 'rc [0-6] | mdadm'Überprüfen Sie die Running of Service Laufen
2. Wir werden verwenden sysv-rc-conf Um zu verhindern, dass MDADM mit Ausnahme aller Runlevels beginnt 2. Überprüfen Sie einfach oder deaktivieren Sie (mit der Space -Leiste) wie gewünscht (Sie können mit den Pfeiltasten nach oben, unten, links und rechts gehen).
# sysv-rc-confSysv runlelevel config
Dann drücken Q beenden.
3. Wir werden das System neu starten und den Befehl von erneut ausführen SCHRITT 1.
# ls -l /etc /rc [0-6].d | grep -e 'rc [0-6] | mdadm'Überprüfen Sie den Service Runlevel
Im obigen Bild können wir das sehen mdadm ist so konfiguriert, dass er nur auf Runlevel startet 2.
Was ist mit Systemd??
systemd ist ein weiterer Service- und Systemmanager, der von mehreren wichtigen Linux -Verteilungen übernommen wird. Ziel ist es, mehr Verarbeitung während des Systemstarts parallel zu ermöglichen (im Gegensatz zu sysvinit, Was immer langsamer ist, da es nacheinander verarbeitet, prüft, ob einer von einem anderen abhängt, und wartet darauf, dass Dämonen starten, damit mehr Dienste starten können) und als dynamisches Ressourcenmanagement für ein laufendes System dienen.
Daher werden die Dienste bei Bedarf gestartet (um den Konsum von Systemressourcen zu vermeiden), anstatt während des Bootes ohne einen soliden Grund gestartet zu werden.
Betrachten Sie den Status aller in Ihrem System ausgeführten Prozesse beides, beide systemd Eingeborener und Sysv Dienste, den folgenden Befehl ausführen.
# SystemCTLÜberprüfen Sie alle laufenden Prozesse
Der BELASTUNG Die Spalte zeigt, ob die Einheitdefinition (siehe die EINHEIT Spalte, die den Dienst oder irgendetwas zeigt, das von systemd gewartet wird) wurde ordnungsgemäß geladen, während die AKTIV Und Sub Spalten zeigen den aktuellen Status dieser Einheit.
Anzeigen von Informationen zum aktuellen Status eines Dienstes
Wenn das AKTIV Die Spalte zeigt an, dass der Status eines Geräts anders als aktiv ist. Wir können überprüfen, was passiert ist.
# Systemctl Status [Einheit]
Zum Beispiel im Bild oben im Bild, Mediensamba.montieren ist im gescheiterten Zustand. Lass uns rennen.
# Systemctl Status Media-Samba.montierenService Status überprüfen
Wir können das sehen Mediensamba.montieren fehlgeschlagen, weil der Mountsprozess auf Host Dev1 konnte den Netzwerkanteil nicht finden // 192.168.0.10/Gacanepa.
Dienste starten oder gestoppt werden
Sobald der Netzwerkfreigabe ist // 192.168.0.10/Gacanepa Wird verfügbar, versuchen wir zu starten, dann stoppen und schließlich das Gerät neu starten Mediensamba.montieren. Lassen Sie uns nach der Ausführung jeder Aktion den System-Samba des SystemCTL-Status ausführen.Mount, um den Status zu überprüfen.
# Systemctl Start Media-Samba.Mount # SystemCtl Status Media-Samba.Mount # systemctl stop media-samba.Mount # systemctl neu starten Sie Media-Samba neu.Mount # SystemCtl Status Media-Samba.montierenStarten von Stoping Services
Aktivieren oder Deaktivieren eines Dienstes, der während des Starts startet,
Unter systemd Sie können einen Service aktivieren oder deaktivieren, wenn er startet.
# SystemCTL Aktivieren [Service] # Aktivieren Sie einen Service # SystemCTL Deaktivieren [Service] # Verhindern Sie, dass ein Dienst beim Start beginnt
Der Prozess der Aktivierung oder Deaktivierung eines Dienstes zum automatischen Start des BOOT besteht darin, symbolische Links in die hinzuzufügen oder zu entfernen /etc/systemd/system/multi-user.Ziel.will Verzeichnis.
Aktivieren von DeaktivierungsdienstenAlternativ können Sie den aktuellen Status eines Dienstes (aktiviert oder deaktiviert) mit dem Befehl herausfinden.
# SystemCTL IS-fähig [Service]
Zum Beispiel,
# SystemCTL IS-fähiges Postfix.Service
Darüber hinaus können Sie das System neu starten oder herunterfahren.
# SystemCTL Neustart # SystemCTL Shutdown
Emporkömmling
Emporkömmling ist ein ereignisbasierter Ersatz für die /sbin/init Daemon und wurde aus der Notwendigkeit von Startdiensten entstand.
Es wurde ursprünglich für die Ubuntu -Verteilung entwickelt, wird jedoch in Red Hat Enterprise Linux 6 verwendet.0. Obwohl es für die Bereitstellung in allen Linux -Verteilungen als Ersatz für die Bereitstellung geeignet sein sollte sysvinit, mit der Zeit wurde es von überschattet von systemd. Am 14. Februar 2014 Mark Shuttleworth (Gründer von Canonical Ltd.) kündigte an, dass zukünftige Veröffentlichungen von Ubuntu Systemd als Standard -Init -Daemon verwenden würden.
Weil das Sysv Das Startskript für System ist so lange so häufig, dass eine große Anzahl von Softwarepaketen SYSV -Start -Skripte enthalten. Um solche Pakete aufzunehmen, bietet UPStart einen Kompatibilitätsmodus: Es führt SYSV -Start -Skripte an den üblichen Orten aus (aus/etc/rc.d/rc?.D, /etc/init.d/rc?.D, /etc/rc?.D, oder ein ähnlicher Ort). Wenn wir also ein Paket installieren, das noch kein Upstart -Konfigurationsskript enthält, sollte es weiterhin auf die übliche Weise gestartet werden.
Wenn wir Versorgungsunternehmen wie CHKConfig installiert haben, sollten Sie in der Lage sein, Ihre SYSV-basierten Dienste genauso zu verwalten, wie wir es auf sysvinit-basierten Systemen tun würden.
Upstart -Skripte unterstützen auch das Starten oder Stoppen von Diensten auf der Grundlage einer größeren Vielfalt von Aktionen als SYSV -Start -Skripte. Zum Beispiel kann UPStart einen Dienst starten, wenn ein bestimmtes Hardware -Gerät angehängt ist.
Ein System, das UPStart und seine nativen Skripte verwendet /etc/inittab Datei und Runlevel-spezifisch Sysv Start -Skript -Verzeichnisse mit .Conf Skripte in der /etc/init Verzeichnis.
Diese *.Conf Skripte (auch als Jobdefinitionen bezeichnet) besteht im Allgemeinen aus folgenden:
- Beschreibung des Prozesses.
- Runlevels, bei denen der Prozess ausgeführt werden soll, oder Ereignisse, die ihn auslösen sollten.
- Runlevels, bei denen der Prozess gestoppt werden sollte, oder Ereignisse, die ihn stoppen sollten.
- Optionen.
- Befehl zum Start des Prozesses.
Zum Beispiel,
# Mein Testdienst - Upstart -Skript -Demo Beschreibung "Hier wird die Beschreibung von" My Test Service "" Autor "Dave Null besucht <[email protected]>" # Strophe # # Strophe definieren, wann und wie ein Prozess gestartet wird, und siehe eine Liste von Strophen hier: http: // upstart.Ubuntu.com/wiki/sterzas # respawn # Wenn Sie den Service beginnen, starten Sie auf Runlevel [2345] # Wenn Sie den Service Stopp auf Runlevel [016] # den Prozess automatisch neu starten MyFiles # Geben Sie den Prozess/den Befehl an (fügen Sie bei Bedarf Argumente hinzu), um die Exec -Bash -Sicherung auszuführen.sh arg1 arg2
Um Änderungen anzuwenden, müssen Sie UPStart anweisen, seine Konfiguration neu zu laden.
# Initctl Reload-Konfiguration
Starten Sie dann Ihren Job, indem Sie den folgenden Befehl eingeben.
$ sudo starten Sie Ihren Jobnamen
Wo Ihr Jobname ist der Name des Jobs, der früher mit dem hinzugefügt wurde Ihr Jobname.Conf Skript.
Eine vollständigere und detailliertere Referenzhandbuch für Upstart ist auf der Website des Projekts unter dem Menü „Kochbuch“ verfügbar.
Zusammenfassung
Ein Wissen über den Linux -Boot -Prozess ist erforderlich, um Ihnen bei der Fehlerbehebung auf Aufgaben sowie bei der Anpassung der Leistung des Computers und der Ausführung von Diensten an Ihre Anforderungen zu helfen.
In diesem Artikel haben wir analysiert, was von dem Moment an passiert, wenn Sie die drücken Leistung Wechseln Sie, um die Maschine einzuschalten, bis Sie eine voll funktionsfähige Benutzeroberfläche erhalten. Ich hoffe, Sie haben gelernt, es so viel zu lesen wie ich, während Sie es zusammengestellt haben. Fühlen Sie sich frei, Ihre Kommentare oder Fragen unten zu hinterlassen. Wir freuen uns immer darauf, von unseren Lesern zu hören!
Werden Sie ein Linux -zertifizierter Systemadministrator- « 5 Befehlszeilen -Tools, um Dateien schnell unter Linux zu finden
- LFCS So installieren und verwenden Sie VI/VIM als Volltext -Editor - Teil 2 »