Summary:With the new Linux 4.0 kernel, you'll need to reboot Linux less often than ever.
One reason to love Linux on your servers or in your data-center is that you so seldom needed to reboot it. True, critical patches require a reboot, but you could go months without rebooting. Now, with the latest changes to the Linux kernel you may be able to go years between reboots.
With Linux 4.0, you may never need to reboot your operating system again.
One reason to love Linux on your servers or in your data-center is that you so seldom needed to reboot it. True, critical patches require a reboot, but you could go months without rebooting. Now, with the latest changes to the Linux kernel you may be able to go years between reboots.
This is actually a feature that was available in Linux in 2009 thanks to a program called Ksplice. This program compares the original and patched kernels and then uses a customized kernel module to patch the new code into the running kernel. Each Ksplice-enabled kernel comes with a special set of flags for each function that will be patched. The Ksplice process then watches for a moment when the code for the function being patched isn't in use, and ta-da, the patch is made and your server runs on.
Oracle acquired Ksplice in 2011, and kept it just for its own Oracle Linux, a Red Hat Enterprise Linux (RHEL) clone, and as a RHEL subscription service. That left all the other enterprise and server Linux back where they started.
Then KernelCare released a service that could provide bootless patches for most enterprise Linux distros. This program use proprietary software and is only available as a service with a monthly fee. That was a long way from satisfying many Linux system administrators.
So, Red Hat and SUSE both started working on their own purely open-source means of giving Linux the ability to keep running even while critical patches were being installed. Red Hat's program was named kpatch, while SUSE' is named kGraft.
The two companies took different approaches. Kpatch issues a stop_machine() command. After that it looks at the stack of existing processes using ftrace and, if the patch can be made safely, it redirects the running code to the patched functions and then removes the now outdated code.
Source: