Pregunta ¿Es posible reiniciar un sistema operativo Linux sin reiniciar el hardware?


¿Hay una manera de reiniciar un sistema Linux (Debian en particular) sin reiniciar el hardware?

Tengo un controlador RAID que tarda un poco en ponerse en marcha antes de que se inicie el sistema operativo, y me gustaría que hubiera una forma de reiniciar rápidamente el sistema operativo Linux sin tener que pasar por todo el proceso de reinicio del reinicio del controlador RAID. etc.


81
2018-03-24 23:35


origen


Todos los sistemas basados ​​en UEFI pueden cambiar el sistema operativo mientras se reinician. Tu también tieneskexec()que es comoexec(), pero para los núcleos de Unix. - user2284570


Respuestas:


yo suelo kexec-reiniciar en casi todos mis sistemas de producción.

Funciona increíblemente bien, permitiéndome eludir la tiempo POST largo en los servidores HP ProLiant y reduzca el ciclo de inicio de 5 minutos a ~ 45 segundos.

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

La única advertencia es que parece que no funciona en los sistemas RHEL / CentOS 6.x que arrancan UEFI. Pero la mayoría de las combinaciones sanas de SO / hardware funcionan.


94
2018-03-25 00:05



¡Yo escribí esa! Pero todavía funciona bastante bien ... - Michael Hampton♦
Fascinante. Entonces, ¿cómo se ve el proceso real? De acuerdo con un artículo de Hariprasad Nellitheertha (vinculado a desde la página de wikipedia de kexec), "A diferencia del proceso de reinicio normal, kexec no realiza un cierre limpio del sistema antes de reiniciar. Queda a su cargo el eliminar todas las aplicaciones y desmontar los sistemas de archivos. antes de intentar un reinicio de kexec ". Noté algunas cosas cuestionables, por ejemplo, Wim Coekaerts dice que "sync; umount -a; kexec -e" hará un reinicio muy rápido. Pero no se puede desmontar un sistema de archivos ocupado. Al leer la web, parece que muchos ignoran la parte de "eliminar todas las aplicaciones". - Mike S
@MikeS Esto no es kexec. Es el kexec-reboot utilidad. La descripción de Github describe la diferencia y lo que la utilidad agrega al proceso. - ewwhite
@MikeS Después de montar kexec, simplemente haga una shutdown -r. Los scripts de su sistema notarán que kexec se ha preparado y hará lo correcto. ¿Cómo se ve? Tres o cuatro o quince minutos más cortos. Tengo un video de muy mala calidad que saqué de la consola iDRAC, pero realmente no quieres sufrir por eso ... kexec-reboot el script está destinado a automatizar el proceso de obtención de los argumentos de línea de comando correctos para kexec, lo que puede ser complicado. - Michael Hampton♦
@MichaelHampton - genial Veo que en CentOS 6.5 cerca del final de /etc/rc3d/rc6.d/S01reboot hay: [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null . Por lo tanto, si kexel carga un kernel -l, el sistema se reiniciará en él sin un / sbin / reboot completo ... ¡kexec está integrado! No lo sabía, gracias. Supongo que las distribuciones más modernas también lo tienen cubierto. Por cierto, si kexec no se ejecutó previamente con -l, el script de reinicio dirá "¡No se ha cargado nada!" por lo que la salida se envía a / dev / null, y por eso nunca tuve conocimiento de esta instalación. - Mike S


Sí, es posible. kexec permitirá que un kernel de Linux se arranque directamente desde Linux sin pasar por el proceso de arranque del BIOS.


17
2018-03-24 23:51



Además, la UEFI permite cambiar el sistema operativo sin reiniciar. - user2284570


Sí. Debes usar las herramientas kexec. Para hacer la vida más fácil, yo uso kexec-reiniciar.

$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



Para que no haya confusión, no escribí esto. - Michael Hampton♦
Esto es probable Ubuntu / Debian solo, ¿verdad? - ewwhite
@ewwhite lo haría probablemente trabajo en RHEL / CentOS, pero en una lectura del código encontré varios puntos problemáticos donde los casos de borde pueden causar que falle. Y la fuente parece reconocer esto con un comentario: # The error checking is very basic. - Michael Hampton♦