С выходом ядра Linux 4.0 пропадает последний повод выполнять перезагрузку рабочих станций или серверов. Среди иных, внедрённых в новое ядро, функций, — фича «горячей» установки заплаток (patch-ей) без необходимости перезагрузки, т.е. накатывание обновлений на работающую ОС, что даёт возможность годами поддерживать непрерывную работу.
Подобная методика для обновления Linux была изобретена компанией Ksplice (Oracle Ksplice - https://www.ksplice.com/) ещё в 2009 году, которая в 2011 году была куплена компанией Oracle. Эта функция входила в состав платного пакета подписки Red Hat Enterprise Linux (RHEL), а также была и в Oracle Linux. Разработчикам же всех прочих дистрибутивов Linux оставалось лишь смотреть и сгорать от зависти.
Процесс Ksplice сверяет новую и старую и версии ядра, а затем, дабы имплементировать новый код прямо в работающем ядре, применяет специфический модуль. Дабы операция прошла гладко, обновления для каждой обновляемой функции помечаются специфическими флагами. Ksplice дожидается мгновения, когда помеченная для обновления функция не используется, и только тогда выполняет обновление.
Над созданием свободной версии подобного процесса, независимо друг от друга трудились программисты из компании SUSE и Red Hat, в результате чего возникло две альтернативы, - одна из которых носит название kpatch (от Red Hat - http://www.zdnet.com/article/no-reboot-patching-comes-to-linux-4-0/ - https://github.com/dynup/kpatch), а вторая — kGraft (от SUSE - http://www.zdnet.com/article/suse-gets-live-patching/ - https://www.suse.com/promo/kgraft.html), при этом методы реализации у них разные.
kpatch использует команду stop_machine(), потом исследует перечень процессов при помощи ftrace (http://elinux.org/Ftrace) и, в если есть шансы безопасно установить заплатки (patch), применяет патч и переводит процесс на уже новый код, после чего удаляет старый.
Процесс обновления при помощи kpatch занимает в пределах от 1 до 40 миллисекунд, а kGraft может понадобиться пару минут, но при этом kGraft не допускает ни миллисекунды отключки (даунтайм, downtime).
Начиная с октября 2014 года SUSE и Red Hat совместно работали над интегрированной системой, которая бы совмещала в себе все положительные качества kGraft и kpatch. Управились они как раз к выходу первого релиз-кандидата Linux 4.0, который вышел пару дней назад. Исходный код можно получить по этой ссылке: https://kernel.googlesource.com/pub/scm/linux/kernel/git/jikos/livepatching/+/9ec0de0ee0c9f0ffe4f72da9158194121cc22807

