Frage Ist es möglich, ein Linux-Betriebssystem neu zu starten, ohne die Hardware neu zu starten?


Gibt es eine Möglichkeit, ein Linux-System (insbesondere Debian) neu zu starten, ohne die Hardware neu zu starten?

Ich habe einen RAID-Controller, der ein wenig dauert, bis er selbst läuft, bevor das Betriebssystem startet, und ich würde es gerne sehen, wenn es eine Möglichkeit gäbe, das Linux-Betriebssystem schnell neu zu starten, ohne den gesamten Neustartprozess des RAID-Controllers durchlaufen zu müssen. usw.


81
2018-03-24 23:35


Ursprung


Alle UEFI-basierten Systeme können das Betriebssystem ohne Neustart wechseln. Sie haben auchkexec()was ist wieexec(), aber für Unix-Kernel. - user2284570


Antworten:


ich benutze kexec-Neustart auf fast allen meinen Produktionssystemen.

Es funktioniert unglaublich gut und erlaubt mir, die lange POST-Zeit auf HP ProLiant Servern und reduzieren Sie den Boot-Zyklus von 5 Minuten auf ~ 45 Sekunden.

Sehen: https://github.com/error10/kexec-reboot

Der einzige Nachteil ist, dass es auf RHEL / CentOS 6.x-Systemen, die UEFI starten, nicht zu funktionieren scheint. Aber die meisten gesunden OS / Hardware-Kombinationen funktionieren.


94
2018-03-25 00:05



Ich habe das geschrieben! Aber es funktioniert immer noch ziemlich gut ... - Michael Hampton♦
Faszinierend. Wie sieht der eigentliche Prozess aus? Laut einem Artikel von Hariprasad Nellitheertha (verlinkt mit der Wikipedia-Seite von kexec): "Im Gegensatz zum normalen Neustart führt Kexec vor dem Neustart kein sauberes Herunterfahren des Systems durch. Es liegt an Ihnen, alle Anwendungen zu beenden und Dateisysteme zu deaktivieren bevor Sie einen kexec-Neustart versuchen. " Ich bemerke einige fragwürdige Dinge, zum Beispiel sagt Wim Coekaerts, dass "sync; umount -a; kexec -e" einen sehr schnellen Neustart durchführen wird. Aber Sie können ein ausgelastetes Dateisystem nicht umounten. Wenn man das Web durchschaut, scheint es, dass viele den Teil "alle Anwendungen töten" ignorieren. - Mike S
@MikeS Das ist nicht kexec. Es ist das kexec-reboot Nützlichkeit. Die Github-Beschreibung umreißt den Unterschied und was das Dienstprogramm dem Prozess hinzufügt. - ewwhite
@MikeS Nachdem du Kexec inszeniert hast, machst du einfach ein shutdown -r. Ihre Systemskripte werden bemerken, dass kexec inszeniert wurde und das Richtige tun. Wie sieht es aus? Drei oder vier oder fünfzehn Minuten kürzer. Ich habe ein sehr schreckliches Qualitätsvideo, das ich von der iDRAC-Konsole genommen habe, aber du willst wirklich nicht durch leiden ... Das kexec-reboot Skript soll den Prozess automatisieren, um die richtigen Befehlszeilenargumente für kexec zu bekommen, was schwierig sein kann. - Michael Hampton♦
@ Michael Hampton - cool. Ich sehe auf CentOS 6.5 kurz vor dem Ende von /etc/rc3d/rc6.d/S01reboot: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null . Also, wenn ein Kernel von kexec -l geladen wird, wird das System neu starten ohne einen kompletten / sbin / neustart ... kexec ist eingebacken! Das wusste ich nicht, danke. Ich denke, modernere Distributionen haben es auch abgedeckt. Übrigens, wenn kexec vorher nicht mit -l ausgeführt wurde, wird das Neustart-Skript "Nichts wurde geladen!" Aus diesem Grund wird die Ausgabe an / dev / null gesendet, und deshalb wurde mir diese Möglichkeit nie bewusst. - Mike S


Ja, es ist möglich. Kexec ermöglicht es einem Linux-Kernel, direkt von Linux gebootet zu werden, ohne den BIOS-Startprozess durchlaufen zu müssen.


17
2018-03-24 23:51



Außerdem ermöglicht das UEFI, das Betriebssystem ohne Neustart zu wechseln. - user2284570


Ja. Sie müssen kexec-tools verwenden. Um das Leben leichter zu machen, benutze ich kexec-Neustart.

$sudo apt-get install kexec-tools
$wget https://raw.githubusercontent.com/vadmium/kexec-reboot/master/kexec-reboot
$chmod +x kexec-reboot
$sudo mv kexec-reboot /usr/local/sbin/kexec-reboot
$sudo /usr/local/sbin/kexec-reboot

13
2018-03-26 04:04



Damit es keine Verwirrung gibt, habe ich das nicht geschrieben. - Michael Hampton♦
Dies ist wahrscheinlich Ubuntu / Debian-only, oder? - ewwhite
@ewwhite Es würde wahrscheinlich Ich arbeite an RHEL / CentOS, aber beim Lesen des Codes habe ich mehrere Problemstellen gefunden, bei denen Randfälle dazu führen könnten, dass sie fehlschlagen. Und die Quelle scheint dies mit einem Kommentar zu bestätigen: # The error checking is very basic. - Michael Hampton♦