我有一个RAID控制器,它需要一些时间才能在操作系统启动之前自动运行,我想如果有一种方法可以快速重新启动Linux OS,而不必完成重新启动RAID控制器等的整个重新启动过程。
#1 楼
我几乎在所有生产系统上都使用kexec-reboot。它的运行非常出色,使我能够绕过HP ProLiant服务器上的较长POST时间,并将启动周期从5分钟减少到约45秒。
请参阅:https://github.com/error10/kexec-reboot
唯一的警告是它似乎无法在RHEL / CentOS 6.x上运行系统启动UEFI。但是大多数理智的OS /硬件组合都可以使用。
评论
我写的!但它仍然运作良好...
–迈克尔·汉普顿
15 Mar 25 '15 at 0:27
迷人。那么实际过程看起来如何?根据Hariprasad Nellitheertha的一篇文章(从kexec Wikipedia页面链接到),“与正常的重新引导过程不同,kexec不会在重新引导之前对系统进行干净的关闭。您必须杀死所有应用程序并卸载文件系统。尝试重新启动kexec之前。”我注意到一些可疑的事情,例如,Wim Coekaerts说“ sync; umount -a; kexec -e”将执行非常快速的重新引导。但是您不能卸载繁忙的文件系统。仔细浏览网络,似乎许多人忽略了“杀死所有应用程序”部分。
– Mike S
2015年3月25日14:12
@MikeS这不是kexec。这是kexec-reboot实用程序。 Github描述概述了差异以及实用程序为流程添加的内容。
–ewwhite
15年3月25日在16:42
@MikeS登台kexec之后,您只需执行shutdown -r。您的系统脚本会注意到kexec已经上演并且可以正确执行。看起来如何?缩短三,四或十五分钟。我从iDRAC控制台上获得了一个非常糟糕的视频质量,但是您真的不想受此困扰... kexec-reboot脚本旨在自动化将正确的命令行参数传递给kexec的过程,可能很棘手。
–迈克尔·汉普顿
2015年3月25日在16:46
@MichaelHampton-太好了。我看到在/etc/rc3d/rc6.d/S01reboot结束附近的CentOS 6.5上有:[-n“ $ kexec_command”] && $ kexec_command -e -x>&/ dev / null。因此,如果内核由kexec -l加载,则系统将在没有完整的/ sbin / reboot的情况下重新引导进入内核... kexec诞生了!我不知道,谢谢。我想也涵盖了更多现代发行版。顺便说一句,如果kexec先前未与-l一起运行,则重新引导脚本将显示“尚未加载任何内容!”。这就是为什么将输出发送到/ dev / null的原因,也是为什么我从未意识到此功能的原因。
– Mike S
15 Mar 25 '15 at 18:01
#2 楼
对的,这是可能的。 kexec将允许直接从Linux引导Linux内核,而无需执行BIOS引导过程。评论
此外,UEFI允许切换操作系统而无需重新启动。
–user2284570
2015年3月25日,3:09
@ user2284570据我所知,UEFI没有提供这种机制。
–乔纳森·莱因哈特(Jonathon Reinhart)
19 Mar 3 '19 at 17:43
#3 楼
是。您必须使用kexec-tools。为了使生活更轻松,我使用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
评论
这样就不会造成混乱,我没有写这个。
–迈克尔·汉普顿
15年3月26日在4:06
这可能仅适用于Ubuntu / Debian,对吗?
–ewwhite
15年3月26日在22:09
@ewwhite它可能可以在RHEL / CentOS上运行,但是在阅读代码时,我发现了几个问题点,这些情况下边缘情况可能会导致它失败。消息人士似乎对此发表了评论:#错误检查是非常基本的。
–迈克尔·汉普顿
15年3月26日在23:23
评论
所有基于UEFI的系统都可以切换操作系统而无需重新启动。您还拥有exec(),就像exec()一样,但是用于Unix内核。