Компания Red Hat открыла код kpatch для организации обновления на лету ядра Linux

Компания Red Hat открыла под лицензией GPLv2 наработки проекта kpatch, в рамках которого подготовлена система динамического применения патчей к работающему ядру Linux. По своему назначению kpatch напоминает развиваемую компанией Oracle систему KSplice и анонсированный компанией SUSE проект kGraft, и также позволяет администраторам на лету устранять уязвимости и некоторые типы ошибок в ядре, без перезагрузки и остановки работы системы.

Принцип организации обновления ядра в kpatch напоминает kGraft и основывается за замене целиком функций в ядре, используя для перенаправления на новую функцию штатные средства подсистемы ftrace. Методы формирования и загрузки патча более близки к ksplice и также основаны на сравнении бинарных сборок и использовании отдельного базового модуля для координации наложения изменений.

Отмечается, что реализация kpatch ещё до конца не стабилизирована, поэтому систему динамического обновления ядра пока не стоит использовать для промышленного применения. Инструкция по сборке и экспериментах с kpatch подготовлена для Fedora 20. После открытия кода kGraft, которое запланировано на март, между системами динамического обновления ядра от Red Hat и SUSE разразится конкурентная борьба по продвижению в состав основного ядра Linux. Не вызовет удивления, если компания Oracle откроет свежий исходный код KSplice и также подключится к борьбе за upstream. В настоящее время Ksplice является проприетарной разработкой. Ранний вариант Ksplice был открыт, но очень давно не обновлялся.

В состав kpatch входят следующие компоненты:

  • kpatch-build - набор утилит для преобразования патча к исходным текстам ядра, созданного утилитой diff, в специализированный модуль ядра, осуществляющий наложение изменений на работающее ядро. Для оценки подлежащих замене компонентов осуществляется сборка двух бинарных образов ядра, один для состояния до наложения патча на код ядра, а второй - после наложения патча. Далее выявляются отличия между бинарными сборками и генерируется модуль горячего обновления ядра.
  • Модуль горячего обновления ядра представляет собой обычный модуль ядра (файл с разрешением.ko), содержащий бинарные варианты изменённых функций ядра и метаданные об размещении оригинальных функций, подлежащих замене.
  • Базовый модуль kpatch - модуль ядра, предоставляющий интерфейс для регистрации новых функций, определённых в модуле горячего обновления ядра. Для перенаправления вызова на новую функцию используется подсистема ftrace, при помощи которой ставится хук на инструкцию вызова старой функции для перенаправления обращения на новую функцию.
  • Утилита kpatch с интерфейсом командной строки для управления коллекцией модулей горячего обновления ядра. Один или более подобных модулей могут быть настроены для применения в процессе загрузки, что позволяет системе сохранить работоспособность применённых в процессе работы горячих патчей, даже в случае перезагрузки сервера.


Источник:
http://www.opennet.ru/opennews/art.shtml?num=39235

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>