Vraag Is het mogelijk om een ​​Linux OS opnieuw op te starten zonder de hardware opnieuw op te starten?


Is er een manier om een ​​Linux-systeem opnieuw op te starten (met name Debian) zonder de hardware opnieuw op te starten?

Ik heb een RAID-controller die een beetje nodig heeft om zichzelf te laten draaien voordat het besturingssysteem opstart, en ik zou het leuk vinden als er een manier was om het Linux-besturingssysteem snel opnieuw op te starten zonder het hele herstartproces van het opnieuw opstarten van de RAID-controller te hoeven doorlopen, enz.


81
2018-03-24 23:35


oorsprong


Alle op UEFI gebaseerde systemen kunnen overschakelen van besturingssysteem zonder opnieuw op te starten. Je hebt ookkexec()wat lijkt opexec(), maar voor Unix-kernels. - user2284570


antwoorden:


ik gebruik kexec-reboot op bijna al mijn productiesystemen.

Het werkt ongelooflijk goed, waardoor ik het kan omzeilen lange POST-tijd op HP ProLiant-servers en verkort de opstartcyclus van 5 minuten tot ~ 45 seconden.

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

Het enige nadeel is dat het niet lijkt te werken op RHEL / CentOS 6.x-systemen die UEFI opstarten. Maar de meeste verstandige OS / hardware-combinaties werken.


94
2018-03-25 00:05



Ik schreef dat! Maar het werkt nog steeds redelijk goed ... - Michael Hampton♦
Fascinerend. Dus hoe ziet het proces eruit? Volgens een artikel van Hariprasad Nellitheertha (gelinkt naar van de kexec wikipedia-pagina): "In tegenstelling tot het normale reboot-proces voert kexec geen schone shutdown uit van het systeem voordat het opnieuw wordt opgestart. Het is aan jou om alle applicaties te doden en bestandssystemen te ontkoppelen voordat je een kexec reboot start. " Ik merk een aantal dubieuze dingen, bijvoorbeeld, Wim Coekaerts zegt dat "sync; umount -a; kexec -e" een zeer snelle herstart zal doen. Maar u kunt niet een bezet bestandssysteem opzoeken. Als we het web doorlezen, lijkt het erop dat velen het gedeelte 'Alle toepassingen overnemen' negeren. - Mike S
@MikeS Dit is het niet kexec. Het is de kexec-reboot nut. De Github-beschrijving schetst het verschil en wat het hulpprogramma toevoegt aan het proces. - ewwhite
@MikeS Na het organiseren van kexec doe je gewoon een shutdown -r. Je systeemscripts zullen opmerken dat Kexec is geënsceneerd en het juiste doet. Hoe ziet het eruit? Drie of vier of vijftien minuten korter. Ik heb een heel vreselijke kwaliteitsvideo die ik van de iDRAC-console heb gehaald, maar daar wil je echt niet onder lijden ... kexec-reboot script is bedoeld om het proces van het verkrijgen van de juiste opdrachtregelargumenten voor kexec te automatiseren, wat lastig kan zijn. - Michael Hampton♦
@MichaelHampton - cool. Ik zie dat op CentOS 6.5 aan het einde van /etc/rc3d/rc6.d/S01reboot er is: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null . Dus als een kernel wordt geladen door kexec -l, zal het systeem opnieuw opstarten zonder een volledige / sbin / reboot ... kexec is ingebakken! Dat wist ik niet, bedankt. Ik veronderstel dat meer moderne distributies dit ook hebben gedekt. Trouwens, als kexec niet eerder werd uitgevoerd met -l, zal het reboot-script zeggen "Niets is geladen!" dat is de reden waarom de uitvoer naar / dev / null wordt verzonden, en waarom ik nooit van deze mogelijkheid op de hoogte was. - Mike S


Ja, het is mogelijk. kexec zorgt ervoor dat een Linux-kernel direct vanaf Linux kan worden opgestart zonder het BIOS-opstartproces te doorlopen.


17
2018-03-24 23:51



Ook staat de UEFI toe om van besturingssysteem te wisselen zonder opnieuw op te starten. - user2284570


Ja. U moet kexec-tools gebruiken. Om het leven gemakkelijker te maken, gebruik ik kexec-reboot.

$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



Zodat er geen verwarring is, heb ik dit niet geschreven. - Michael Hampton♦
Dit is waarschijnlijk alleen Ubuntu / Debian, toch? - ewwhite
@ewwhite Het zou waarschijnlijk werk aan RHEL / CentOS, maar bij het lezen van de code vond ik verschillende probleempunten waar randgevallen het kunnen laten mislukken. En de bron lijkt dit te erkennen met een opmerking: # The error checking is very basic. - Michael Hampton♦