在CentOS或RHEL 6上升级内核包时,是否可以在不重新启动的情况下加载新的内核?
我的直觉告诉我这不是,但是如果是这样的话,这会很方便 – 特别是在编译需要内核模块(比如VirtualBox)的应用程序时,会抱怨当“错误的”内核源可用时(例如运行的内核是2.6.2-100,但升级版本是2.6.2-152)。
没有。
kexec将允许您跳过标准重新启动的固件(BIOS / EFI)和引导加载程序步骤,但这不是同一件事(尽pipe如果您有一个缓慢加载的RAID卡)。
你可以得到最接近的加载和卸载内核模块。
Oracle Enterprise Linux可以通过KSplice来实现,但是您必须拥有Oracle ULN(支持)合同。 我相信他们大概是120美元。 http://www.ksplice.com/pricing
是的RHEL。 (自2012年2月22日起)
Oracle为红帽客户免费试用创新的Ksplice零宕机更新
要在30天的试用期后继续,您需要购买Oracle Linux Premier支持包 。
对于具有两个物理CPU的系统,起价为1,400美元;对于具有两个以上物理CPU的系统,起价为2300美元。 您可以将系统configuration为在更新可用时自动安装更新。
在2011年7月Oracle收购Ksplice之前,它已经提供给RHEL和CentOS(以及其他操作系统)。 以前的客户仍然支持。
甲骨文收购Ksplice
Ksplice代码是在GPL v2和其他开源许可下创build和发布的。 在Oracle收购Ksplice并限制Oracle Linux,Ubuntu Desktop和Fedora的可用性之后,有关于维护Ksplice的CentOS分支的讨论:
Ksplice和CentOS
也有人认为Ksplice违反了GPL:
Ksplice目前违反了GPL
没有人指出kpatch。 它不活内核重装,但针对相同的问题。
kpatch Red Hat技术将补丁应用于活内核。
关于粒度,kpatch在function级别上工作; 简而言之,旧function被replace为新function。 它有四个主要组成部分:
- kpatch-build :将源代码差异补丁转换为热补丁模块的工具集合。 他们通过编译内核,无论是否有源补丁,比较二进制文件,并生成一个热补丁模块,其中包括要replace的function的新的二进制版本。
- 热补丁模块 :一个内核模块(.ko文件),包含原始函数的replace函数和元数据。
- kpatch核心模块 :一个内核模块(.ko文件),为热补丁模块提供一个接口,用于注册新的函数进行replace。 它使用内核ftrace子系统挂接到原函数的mcount调用指令中,以便将对原函数的调用redirect到replace函数。
- kpatch实用程序 :一个命令行工具,允许用户pipe理一系列热补丁模块。 一个或多个热补丁模块可以configuration为在引导时加载,以便系统即使在重新引导到相同版本的内核之后也可以保持打补丁。
从RHEL 7支持
KExec声称你可以做到这一点。
其实我只是重新阅读这个Oracle博文:
https://blogs.oracle.com/wim/entry/fast_reboots_for_oracle_linux
因此,只要使用UEK内核,就可以在OEL5和OEL6上进行kexec快速重启。 这与ksplice(这是关于不重新启动!)无关,并不需要许可证或任何使用。