Назад

2025/04/21

4. Вы когда-нибудь использовали Ksplice?

В этой статье мы представим Ksplice, одну из функций Oracle Linux. Ksplice — это система живого патчинга, которая позволяет применять патчи к ядру без перезагрузки операционной системы. Она существует уже более 10 лет и является уникальной функцией, не имеющей аналогов на данный момент. Однако даже среди пользователей Oracle Linux тех, кто использует Ksplice, может быть меньшинство. Поэтому в этой статье мы стремимся углубить ваше понимание Ksplice.

Что такое Ksplice?

Ksplice — это функция, которая позволяет применять патчи к ядру Linux и некоторым библиотекам пользовательского пространства без перезагрузки операционной системы. Например, если вы устанавливаете новое ядро, вам все равно нужно перезагрузить ОС, чтобы активировать его. Однако Ksplice позволяет включить последнее обновление без необходимости перезагрузки.

Другими словами, с Ksplice вы получаете следующие преимущества:

  • Минимизация времени простоя системы
  • Быстрое реагирование на уязвимости безопасности
  • Минимизация времени применения патчей

Возможность включать обновления без перезагрузки особенно важна для «внешне доступных серверов» и «хостов KVM с множеством работающих виртуальных машин». Внешне доступные серверы должны быстро реагировать на уязвимости безопасности. Кроме того, на хостах KVM работают несколько виртуальных серверов. Поэтому, когда требуется перезагрузка ОС, необходимы различные предварительные настройки, а также время на выполнение самой работы.

Другими словами, Ksplice — это функция, которая особенно эффективна в корпоративном использовании, помогая снизить эксплуатационные расходы и повысить безопасность.

Часто задаваемые вопросы о Ksplice

Чтобы помочь вам быстро понять Ksplice, мы дадим обзор в формате часто задаваемых вопросов о Ksplice.

Какие операционные системы поддерживает Ksplice?

На момент написания (сентябрь 2022 года) поддерживаются следующие операционные системы Linux. Ksplice также поддерживает как совместимое с Red Hat ядро, так и Unbreakable Enterprise Kernel для Oracle Linux.

  • Oracle Linux 6
  • Oracle Linux 7
  • Oracle Linux 8
  • Oracle Linux 9
  • CentOS и RHEL 7
  • CentOS и RHEL 8
  • Ubuntu 18.04
  • Ubuntu 20.04

Помимо Intel/AMD (x86_64), Ksplice также поддерживает 64-битный Arm. Однако для Arm поддерживается только Unbreakable Enterprise Kernel.

Нужно ли подключение к Интернету для использования Ksplice?

Ksplice имеет онлайн и оффлайн режимы. Онлайн-режим подключается к Unbreakable Linux Network (ULN), предоставляемой Oracle, поэтому требуется возможность подключения к Интернету (возможно, через интернет-прокси).

В оффлайн-режиме вы можете использовать Ksplice без подключения к Интернету, настроив зеркало Ksplice. Однако сервер, используемый в качестве зеркала Ksplice, должен иметь возможность подключения к Интернету.

Какие компоненты охватываются живым патчем Ksplice?

Помимо следующих двух ядер, Ksplice поддерживает пакеты пользовательского пространства glibc и openssl. Однако пакеты пользовательского пространства поддерживаются только в Oracle Linux.

  • Совместимое с Red Hat ядро
  • Unbreakable Enterprise Kernel
  • glibc
  • openssl

Есть ли плата за использование Ksplice?

Для использования Ksplice требуется платный контракт Oracle Linux Premier Support. Однако Ksplice доступен бесплатно в Oracle Linux на Oracle Cloud Infrastructure (настроен по умолчанию). Исключительно, его можно использовать бесплатно на Ubuntu.

Существует ли пробная программа для Ksplice?

Доступна 30-дневная пробная программа. Кроме того, если вы хотите легко попробовать Ksplice, мы рекомендуем использовать Always Free от Oracle Cloud Infrastructure. Образ Oracle Linux уже настроен с Ksplice, так что вы можете использовать его сразу.

Есть ли другие системы живого патчинга, подобные Ksplice?

Другие дистрибутивы Linux также имеют следующие системы живого патчинга. Однако все они были предоставлены только в последние годы и еще не доказали свою производительность.

  • kpatch для Linux на базе RHEL
  • SUSE KLP
  • Ubuntu Livepatch Service

Кроме того, в Windows есть функция под названием Windows hot patch. Однако она ограничена Windows Server 2022 Datacenter: Azure Edition.

Попробуем Ksplice

Чтобы понять Ksplice, лучше увидеть, как он работает на практике. В этой статье мы объясним использование Oracle Linux 8 на Oracle Cloud Infrastructure, что легко попробовать. Настройка и детали будут объяснены в следующей статье.

Кроме того, Oracle Linux 7 и Oracle Linux 9 почти идентичны, но могут быть небольшие различия в зависимости от версии используемого образа.

Проверка состояния настройки Ksplice

Для использования Ksplice требуется клиент Ksplice. Проверьте, установлен ли клиент Ksplice. Если вы выполните поиск пакета, вы обнаружите, что установлен пакет uptrack (= клиент Ksplice).

$ rpm -qa | grep -e ksplice -e uptrack | sort
ksplice-release-el8-1.0-4.el8.x86_64
ksplice-uptrack-release-1-5.noarch
uptrack-1.2.75-0.el8.noarch

Далее проверьте конфигурационный файл /etc/uptrack/uptrack.conf. Вы можете использовать Ksplice, если конфигурационный файл существует и настроен accesskey.

$ grep -v -e '^\s*#' -e '^\s*$' /etc/uptrack/uptrack.conf
[Auth]
accesskey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(Ключ для Ksplice Uptrack получен из ULN)
[Network]
https_proxy =
gconf_proxy_lookup = no
[Settings]
install_on_reboot = yes
autoinstall = no

Изучение основ Ksplice

Теперь, когда вы знаете, что Ksplice настроен, мы будем использовать его. Поскольку для большинства операций требуются привилегии root, мы будем использовать su. В качестве альтернативы вы можете добавлять sudo каждый раз.

$ sudo su -

Проверка версии ядра

Проверьте текущую включенную версию ядра Linux. Включено UEK6 “5.4.17-2136.306.1.3”.

# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

Если проверить последнюю версию в репозитории, это “5.4.17-2136.310.7.1”. Таким образом, видно, что была выпущена новая версия.

# yum check-update kernel-uek
kernel-uek.x86_64              5.4.17-2136.310.7.1.el8uek              ol8_UEKR6

Просмотр обновлений

В традиционном методе ядро обновляется и перезагружается следующим образом:

# yum update kernel-uek -y
# reboot

В Ksplice используется команда uptrack-upgrade. Вы можете просмотреть применимые обновления Ksplice, введя “uptrack-upgrade -n” следующим образом. Каждая строка — это отдельное обновление.

# uptrack-upgrade -n
Effective kernel version is 5.4.17-2136.306.1.3.el8uek
The following steps will be taken:
Install [n9kprcm6] Known exploit detection.
Install [qivpmdlu] Known exploit detection for CVE-2019-9213.
Install [50qj7qw1] Known exploit detection for CVE-2017-1000253.
Install [3iw8b16t] Known exploit detection for CVE-2016-5195.
Install [sgxyx32m] Known exploit detection for CVE-2021-27363.
Install [92k7sosn] Known exploit detection for CVE-2021-27364.
★Пропущено ниже

Применение обновления

Примените все эти обновления. Время применения варьируется в зависимости от количества обновлений и спецификаций машины, в этот раз это заняло около 1 минуты. Ключевой момент, на который следует обратить внимание, — это “5.4.17-2136.310.7” в последней строке. Благодаря Ksplice версия ядра совпадает с последней версией.

# uptrack-upgrade -y
The following steps will be taken:
Install [n9kprcm6] Known exploit detection.
Install [qivpmdlu] Known exploit detection for CVE-2019-9213.
Install [50qj7qw1] Known exploit detection for CVE-2017-1000253.
Install [3iw8b16t] Known exploit detection for CVE-2016-5195.
★Пропущено
Installing [dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Your kernel is fully up to date.
Effective kernel version is 5.4.17-2136.310.7.el8uek

Эффективная версия ядра, активированная обновлением Ksplice, может быть просмотрена с помощью команды uptrack-uname.

# uptrack-uname -r
5.4.17-2136.310.7.el8uek.x86_64

Обычная команда uname показывает установленную версию ядра.

# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

Список установленных UEK следующий. Последняя версия “5.4.17-2136.310.7” не установлена. Другими словами, установлено только инкрементное обновление Ksplice (патч).

# rpm -q kernel-uek | sort -n
kernel-uek-5.4.17-2102.201.3.el8uek.x86_64
kernel-uek-5.4.17-2136.304.4.1.el8uek.x86_64
kernel-uek-5.4.17-2136.306.1.3.el8uek.x86_64

Просмотр обновлений

Применяемые обновления Ksplice можно просмотреть с помощью команды uptrack-show.

# uptrack-show
Installed updates:
[n9kprcm6] Known exploit detection.
[qivpmdlu] Known exploit detection for CVE-2019-9213.
[50qj7qw1] Known exploit detection for CVE-2017-1000253.
★Пропущено
[fza3q2mo] CVE-2022-2153: Denial-of-service in Kernel-based Virtual Machine.
[4eaq3lov] CVE-2022-21505: Lockdown bypass in Integrity Measurement Architecture.
[dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Effective kernel version is 5.4.17-2136.310.7.el8uek

Удаление обновлений

Вы можете легко удалить примененные обновления с помощью команды uptrack-remove.

# uptrack-remove --all -y
The following steps will be taken:
Remove [dad581dd] CVE-2022-2588: Use-after-free in IP Route Classifier.
Remove [4eaq3lov] CVE-2022-21505: Lockdown bypass in Integrity Measurement Architecture.
Remove [jjafy1ef] CVE-2022-29582: Use-after-free in asynchronous io_uring API.
★Пропущено
Removing [qivpmdlu] Known exploit detection for CVE-2019-9213.
Removing [n9kprcm6] Known exploit detection.
Effective kernel version is 5.4.17-2136.306.1.3.el8uek

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

# uptrack-uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

# uname -r
5.4.17-2136.306.1.3.el8uek.x86_64

Напоминаем, что при просмотре примененных обновлений Ksplice вы ничего не увидите.

# uptrack-show
Installed updates:
None

Effective kernel version is 5.4.17-2136.306.1.3.el8uek

Заключение

Поняли ли вы, что такое Ksplice? Кроме того, мы считаем, что при реальном использовании вы увидите, что он очень прост в использовании. В следующей статье мы обсудим Ksplice более подробно.