Привіт, я Kernelka! Якщо ви адмініструєте сервер Linux і хочете отримувати критичні оновлення без перезавантаження, livepatch — саме те, що треба. Це технологія «гарячого» виправлення вразливостей ядра, яка зменшує простої сервісів і ризики під час оновлення Linux. Нижче — дружній гайд із трьома популярними інструментами: Canonical Livepatch, kpatch та KernelCare, плюс тестування і безпечний відкат. Поїхали ⚙️

Основний How‑to: як обрати інструмент і швидко стартувати

Оберіть рішення під вашу дистрибуцію та політику підтримки:

  • Ubuntu LTS (18.04+): Canonical Livepatch (через Ubuntu Pro).
  • RHEL/AlmaLinux/Rocky Linux: kpatch (Red Hat екосистема).
  • Змішані середовища або потреба у широкій підтримці: KernelCare (TuxCare).

Перед стартом підготуйте термінал Linux з доступом root (sudo), перевірте інтернет-доступ і зафіксуйте поточну версію ядра:

uname -r

Рекомендую спершу спробувати на staging‑віртуалці або копії VM, а вже потім — у проді. Це зменшує ризики під час встановлення ядра Linux у бойовому середовищі.

Canonical Livepatch на Ubuntu LTS

Вимоги

  • Ubuntu LTS 18.04+ (amd64/arm64), ядро з офіційних репозиторіїв (GA/HWE).
  • Ubuntu Pro обліковий запис і токен.

Увімкнення

# Переконайтесь, що клієнт встановлено (на сучасних LTS вже є)
sudo pro status

# Прив'язка до вашого Ubuntu Pro (замініть на ваш токен)
sudo pro attach <UBUNTU_PRO_TOKEN>

# Ввімкнення Livepatch
sudo pro enable livepatch

# Перевірка статусу
pro status | grep -i Livepatch
canonical-livepatch status --verbose || true

# Додаткова діагностика служби
systemctl status snap.canonical-livepatchd.service --no-pager
journalctl -u snap.canonical-livepatchd -n 50 --no-pager

Тестування

  • На staging: відтворіть ваші ключові навантаження, зберіть метрики (latency, CPU sys time) до/після.
  • Перевірте, що версія ядра не змінилась (livepatch не змінює uname -r), але патчі застосовані: canonical-livepatch status --verbose.

Відкат

Canonical Livepatch не передбачає «живого» відкату конкретного патча. Варіанти:

  • Тимчасово вимкнути livepatch і перезавантажити сервер, щоб повернутись до стану без патчів цього сеансу:
sudo pro disable livepatch
sudo reboot

Або зверніться до підтримки Canonical, якщо потрібен таргетований відкат у рамках контракту.

kpatch на RHEL/AlmaLinux/Rocky Linux

Встановлення та запуск

# Встановити kpatch
yum -y install kpatch || dnf -y install kpatch

# Увімкнути службу kpatch
sudo systemctl enable --now kpatch

# Налаштувати автооновлення (де доступно)
sudo kpatch auto on || true

# Поставити патч-пакет, якщо він доступний для вашого ядра
sudo dnf -y install kpatch-patch-$(uname -r) || sudo yum -y install kpatch-patch-$(uname -r) || true

# Перевірити застосовані патчі
sudo kpatch list

Заувага: доступність пакетів kpatch-patch-$(uname -r) залежить від підписки Red Hat/вендора. На сумісних дистрибутивах використовуйте їхні репозиторії відповідно до документації.

Тестування

  • Порівняйте kpatch list до/після.
  • Перевірте журнали ядра: journalctl -k -n 100.

Відкат

kpatch дозволяє вивантажити конкретний модуль патча без перезавантаження:

# Подивитись назви завантажених патчів
sudo kpatch list

# Вивантажити конкретний патч (підставте ім'я з попередньої команди)
sudo kpatch unload <patch-name>

# Опційно видалити RPM патча
sudo dnf remove -y kpatch-patch-$(uname -r) || sudo yum remove -y kpatch-patch-$(uname -r)

Якщо щось пішло зовсім не так — плановий перезапуск також поверне вас у чистий стан відповідно до встановленого ядра.

KernelCare (TuxCare) для різних дистрибутивів

Встановлення та активація

# Інсталяція KernelCare (офіційний інсталер)
curl -s https://repo.cloudlinux.com/kernelcare/kernelcare_install.sh | sudo bash

# Реєстрація ліцензійного ключа
sudo kcarectl --register <LICENSE_KEY>

# Перевірка стану та застосування патчів
sudo kcarectl --info
sudo kcarectl --update

Тестування

  • kcarectl --info має показати завантажені патчі та дату.
  • Моніторте логи: journalctl -u kcare -n 50 (якщо служба присутня), або загальний journalctl -k.

Відкат

KernelCare дозволяє тимчасово зняти патчі до наступного оновлення або перезавантаження:

sudo kcarectl --unload   # знімає поточні live‑патчі
sudo kcarectl --update   # повторно застосувати останні патчі

# За потреби відв'язати сервер від ліцензії
sudo kcarectl --unregister

Альтернативні способи

  • SUSE Live Patching (kGraft) — комерційне рішення для SLES, тісно інтегроване з їхнім саппортом.
  • Oracle Ksplice — livepatch для Oracle Linux/Ubuntu з власною інфраструктурою оновлень.

Якщо у вас гетерогенний парк серверів Linux, зважайте на підтримку ядра та SLA вендора.

GUI‑спосіб (коли це доречно)

  • Ubuntu Desktop 22.04+: «Software & Updates» → вкладка «Ubuntu Pro» → увійти/додати токен → увімкнути Livepatch. На сервері зазвичай робимо те саме через термінал Linux.
  • TuxCare ePortal — веб‑портал для керування ключами KernelCare і моніторингу стану хостів.

Тестування і відкат: надійний план

  1. Staging спершу: клон VM, snapshot диска або LVM snapshot перед змінами.
  2. Фіксуємо базову лінію: версію ядра та сервіси.
    uname -r
    systemd-analyze blame | head
    ss -lntp | head
    
  3. Застосовуємо livepatch відповідним інструментом.
  4. Валідація:
    # Canonical
    canonical-livepatch status --verbose || true
    
    # kpatch
    kpatch list || true
    
    # KernelCare
    kcarectl --info || true
    
    # Перевірка ядра/журналів
    dmesg | tail -n 50
    journalctl -k -n 100 --no-pager
    
  5. Функціональні тести: ваші сервіси, запити, навантаження.
  6. План відкату:
    • Canonical: pro disable livepatch і керований reboot.
    • kpatch: kpatch unload <patch-name>.
    • KernelCare: kcarectl --unload або повний reboot.

FAQ

Чи впливає livepatch на продуктивність?
Зазвичай оверхед мінімальний (частки відсотка). Перевіряйте власними бенчмарками під свої профілі навантаження.

Чи можна використовувати livepatch у контейнерах/Kubernetes?
Livepatch застосовується на вузлі (хості), а не всередині контейнера. Оновіть нод — і всі поди отримають захищене ядро.

Потрібен інтернет‑доступ?
Так, інструменти тягнуть патчі з хмарних репозиторіїв. Для ізольованих середовищ є дзеркала/репозиторії та офлайн‑репліка (залежно від вендора).

Чи замінює livepatch класичні оновлення ядра?
Ні. Він закриває критичні CVE між повними оновленнями. Планові перезавантаження після оновлення Linux ядра все одно потрібні.

Що, якщо у мене нестандартне (self‑compiled) ядро?
Canonical Livepatch і kpatch зазвичай не підтримують кастомні ядра з‑поза підтримки вендора. KernelCare має ширший список, але перевіряйте сумісність.

Як зрозуміти, що патч справді застосований?
Використовуйте рідні команди: canonical-livepatch status --verbose, kpatch list, kcarectl --info, а також перевіряйте журнали ядра.

Порада від Kernelka

Заведіть простий чек‑лист для продакшн‑вікна: «snapshot → застосувати livepatch → smoke‑тести → перевірка логів → оновити документування → план на відкат». І автоматизуйте перевірки невеликими bash‑скриптами — так стабільніше і спокійніше ✨

Підсумок

  • Canonical Livepatch — ідеальний для Ubuntu LTS із Ubuntu Pro; увімкнення через pro enable livepatch.
  • kpatch — нативне рішення для RHEL/Alma/Rocky; підтримує вибірковий відкат модулів.
  • KernelCare — крос‑дистрибутивне, гнучке керування та швидкий відкат через kcarectl --unload.
  • Тестуйте на staging, моніторте логи, тримайте під рукою план відкату.
  • Livepatch зменшує простої, але не відміняє планових перезавантажень після повних оновлень ядра.