Всех с понедельником! Начнём с простого, а вечером обсудим «сосо́чки».

Вопрос от подписчика: а можно ли после обновления Linux-ядра сразу применить это ядро без перезагрузки машины?

Нууу… вообще не рекомендуется заниматься хуйнёй, лучше, конечно, ребутнуться. Но если очень хочется, то кое-что сделать можно, есть такие утилиты, но опять же всё на свой страх и риск.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
В продакшене такое делается так — поднимаешь параллельно новую машину с новым ядром и т. п. Если всё устраивает, переключаешь DNS, апстримы и т. п. на новую машину — и вуаля.

Теперь по утилитам. Из того, что вспомнил, это kexec. Позволяет загрузить новое ядро прямо из текущего работающего ядра.

Решение не является полной заменой перезагрузки, так как система всё равно перезапустится, но произойдёт это в разы быстрее, поскольку не происходит полная инициализация аппаратного обеспечения.

kexec -l /boot/vmlinuz-new-kernel --initrd=/boot/initrd-new-kernel --command-line="root=/dev/sda1"
kexec -e

Дальше существует Live Patching. Эта технология позволяет применять обновления ядра без перезагрузки.

  • kpatch от Red Hat;
  • kGraft от SUSE;
  • Kernel Live Patching (KLP) с версии ядра 4.0.

Live Patching позволяет вносить изменения в ядро, такие как исправления безопасности, без необходимости перезагрузки. Однако это подходит не для всех видов обновлений ядра, таких как смена версии или значительные изменения в функциональности.

Ну и KernelCare. Это коммерческое решение, которое предоставляет возможность обновлять ядро Linux без перезагрузки. Оно поддерживает различные дистрибутивы Linux и позволяет администраторам систем применять критические обновления безопасности на лету.

Таким образом, полностью избежать перезагрузки при обновлении ядра невозможно в случае, если требуется полная смена версии ядра.

Однако для большинства критических обновлений безопасности можно использовать технологии Live Patching, что позволяет поддерживать высокую доступность системы.

Такие дела.