Kpatch - kpatch

kpatch
Разработчики)Красная шляпа
изначальный выпуск26 февраля 2014 г. (2014-02-26)[1]
Стабильный выпуск
0.9.2[2] / 15 сентября 2020; 3 месяца назад (15 сентября 2020 г.)
Репозиторий Отредактируйте это в Викиданных
Операционная системаLinux
ТипРасширение ядра
ЛицензияGNU GPL версия 2
Интернет сайтgithub.com/ dynup/ kpatch

kpatch это особенность Ядро Linux что реализует живое исправление бега ядро, что позволяет ядру патчи для применения, пока ядро ​​все еще работает. Избегая необходимости перезагружать систему с новым ядром, содержащим желаемые исправления, kpatch стремится максимизировать систему. время безотказной работы и доступность. В то же время kpatch позволяет применять обновления безопасности, связанные с ядром, не откладывая их на запланированные простои.[1][3] Внутри kpatch позволяет функции в работающем ядре должны быть заменены их исправленными версиями, делая это безопасно, останавливая все запущенные процессы, пока выполняется оперативное исправление.[4]

kpatch разработан Красная шляпа, с этими исходный код лицензировано в соответствии с условиями Стандартная общественная лицензия GNU версии 2 (GPLv2).[1] В мае 2014 года kpatch был отправлен на включение в Основная линия ядра Linux,[5] а минималистичные основы для живых исправлений были объединены в основную линию ядра Linux в версии ядра 4.0, выпущенной 12 апреля 2015 года.[6]

Внутренности

При установке исправлений в реальном времени вызовы исправленных функций ядра вызывают их заменяющие аналоги.[7]:2:07

Внутренне kpatch состоит из двух частей - ядра модуль ядра выполняет живой механизм исправления, изменяя внутреннюю работу ядра, в то время как набор пространство пользователя ЖКХ готовит индивидуальные горячий патч модули ядра из исходные различия и управляет их приложением. Исправление живого ядра выполняется на функция level, что означает, что kpatch может заменять целые функции в работающем ядре на их исправленные версии, используя средства, предоставляемые ftrace «обходить» старые версии функций; Таким образом, горячие пятна также можно будет легко удалить. Никаких изменений во внутреннем ядре структуры данных возможны; тем не мение, патчи безопасности, которые являются одними из естественных кандидатов для использования с kpatch, редко содержат изменения в структурах данных ядра.[4][5][7]

kpatch обеспечивает применение горячих заплат атомарно и безопасно, остановив все работающие процессы пока применяется горячий патч, и гарантируя, что ни один из остановленных процессов не работает внутри функций которые должны быть исправлены. Такой подход упрощает весь механизм исправления в реальном времени и предотвращает определенные проблемы, связанные со способом использования структур данных исходными и исправленными версиями функций. В качестве недостатка этот подход также оставляет возможность сбоя горячего исправления и вводит небольшую задержку, необходимую для остановки всех запущенных процессов.[4][5][7]

История

Красная шляпа анонсировал и публично выпустил kpatch в феврале 2014 года в соответствии с условиями Стандартной общественной лицензии GNU версии 2 (GPLv2 ),[1] незадолго до SUSE выпустила собственную реализацию исправления ядра под названием kGraft.[8] kpatch был объединен с основной веткой ядра Linux и был отправлен на включение в мае 2014 года.[5][9]

kpatch был включен в Red Hat Enterprise Linux 7.0, выпущенный 10 июня 2014 г., как превью технологии.[10][11]

Минималистичные основы для исправлений в реальном времени были объединены с основной веткой ядра Linux в версии ядра 4.0, которая была выпущена 12 апреля 2015 года. Эти основы, в основном, основаны на ядре ftrace функциональность, образуют общее ядро, способное поддерживать горячее исправление как kpatch, так и kGraft, предоставляя интерфейс прикладного программирования (API) для модулей ядра, содержащих горячие исправления и двоичный интерфейс приложения (ABI) для утилит управления пользовательским пространством. Однако общее ядро, включенное в ядро ​​Linux 4.0, поддерживает только x86 архитектура и не предоставляет никаких механизмов для обеспечения согласованности на уровне функций, пока применяются горячие исправления.[6][12][13]

С апреля 2015 г. непрерывный работать над переносом kpatch на общее ядро ​​динамического исправления, предоставляемое основной веткой ядра Linux.[13] Однако реализация необходимых механизмов согласованности на уровне функций была отложена, поскольку стеки вызовов предоставляемые ядром Linux могут быть ненадежными в ситуациях, связанных с код сборки без надлежащего кадры стека; в результате работы по переносу продолжаются по состоянию на сентябрь 2015 г.. В попытке повысить надежность стеков вызовов ядра была проведена специализированная проверка работоспособности. stacktool Также была разработана утилита пользовательского пространства.[14][15]

Смотрите также

  • Динамическое обновление ПО, область исследований, направленная на обновление программ во время их работы
  • kexec, метод загрузки полностью нового ядра Linux из работающей системы.
  • Ksplice и KernelCare, другие технологии оперативного исправления ядра Linux, разработанные Ksplice, Inc. (позже приобретенной Oracle) и CloudLinux соответственно

Рекомендации

  1. ^ а б c d Джош Поимбёф; Сет Дженнингс (26 февраля 2014 г.). «Представляем kpatch: динамическое исправление ядра». redhat.com. Получено 23 июля, 2014.
  2. ^ «Выпуск 0.9.2». 15 сентября 2020 г.. Получено 14 октября, 2020.
  3. ^ Шон Майкл Кернер (6 июня 2014 г.). «Обновление ядра Linux становится динамическим». ServerWatch. Получено 23 июля, 2014.
  4. ^ а б c Джонатан Корбет (7 мая 2014 г.). "Первое представление kpatch". LWN.net. Получено 23 июля, 2014.
  5. ^ а б c d Джош Поимбёф (1 мая 2014 г.). "kpatch: динамическое исправление ядра". LWN.net. Получено 23 июля, 2014.
  6. ^ а б «Ядро Linux 4.0, Раздел 1.2. Исправления в реальном времени». kernelnewbies.org. 26 апреля 2015 г.. Получено 27 апреля, 2015.
  7. ^ а б c Сет Дженнингс; Джош Поимбёф (10 июня 2014 г.). «Динамическое исправление ядра». Красная шляпа. Получено 23 июля, 2014.
  8. ^ «SUSE выпускает kGraft для оперативного обновления ядра Linux». SUSE. 27 марта 2014 г.. Получено 11 февраля, 2015.
  9. ^ Майкл Ларабель (1 мая 2014 г.). "SUSE размещает kGraft, Red Hat размещает патчи Kpatch". Фороникс. Получено 23 июля, 2014.
  10. ^ «Примечания к выпуску Red Hat Enterprise Linux 7.0, глава 5. Ядро». Красная шляпа. 15 июля 2014 г.. Получено 23 июля, 2014.
  11. ^ Карлос Санчес (26 июня 2014 г.). «Red Hat выпускает Red Hat Enterprise Linux 7 с расширенной поддержкой контейнеров Linux». infoq.com. Получено 23 июля, 2014.
  12. ^ Джонатан Корбет (25 февраля 2015 г.). «Грубый патч для живого исправления». LWN.net. Получено 27 апреля, 2015.
  13. ^ а б "Дерево исходных кодов ядра Linux: kernel / git / torvalds / linux.git: получить живую инфраструктуру исправлений от Иржи Косины". kernel.org. 11 февраля 2015 г.. Получено 27 апреля, 2015.
  14. ^ Джонатан Корбет (30 сентября 2015 г.). "Проверка стека во время компиляции". LWN.net. Получено Второе октября, 2015.
  15. ^ Джош Поимбёф (24 сентября 2015 г.). «Документация ядра Linux: Documentation / stack-validation.txt (из патча v13)». LWN.net. Получено Второе октября, 2015.

внешняя ссылка