Jump to content

Кпатч

Кпатч
Разработчик(и) Красная шляпа
Первоначальный выпуск 26 февраля 2014 г. ( 26 февраля 2014 г. ) [1]
Стабильная версия
0.9.9 [2] / 28 июля 2023 г .; 12 месяцев назад ( 28 июля 2023 г. )
Репозиторий
Операционная система Линукс
Тип Расширение ядра
Лицензия GNU GPL версия 2
Веб-сайт github /динап /кпатч

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

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

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

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

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

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

Red Hat анонсировала и публично выпустила kpatch в феврале 2014 года на условиях GNU General Public License версии 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, так и с помощью kpatch. и kGraft, предоставляя интерфейс прикладного программирования (API) для модулей ядра, содержащих «горячие» исправления, и двоичный интерфейс приложений (ABI) для утилит управления пользовательским пространством. Однако общее ядро, входящее в ядро ​​Linux 4.0, поддерживает только архитектуру x86 и не предоставляет никаких механизмов для обеспечения согласованности на уровне функций во время применения горячих исправлений. [6] [12] [13]

С апреля 2015 года продолжается работа по переносу kpatch на общее ядро ​​оперативного исправления, предоставляемое основной веткой ядра Linux. [13] Однако реализация необходимых механизмов согласованности на уровне функций была отложена, поскольку стеки вызовов, предоставляемые ядром Linux, могут быть ненадежными в ситуациях, когда ассемблерный код не содержит надлежащих кадров стека ; в результате работы по переносу продолжаются по состоянию на сентябрь 2015 г. . In an attempt to improve the reliability of kernel's call stacks, a specialized sanity-check stacktool . Также была разработана утилита пользовательского пространства [14] [15]

См. также

[ редактировать ]
  • Динамическое обновление программного обеспечения — область исследований, направленная на обновление программ во время их работы.
  • kexec — метод загрузки совершенно нового ядра Linux из работающей системы.
  • Ksplice и KernelCare , другие технологии оперативного исправления ядра Linux, разработанные Ksplice, Inc. (позже приобретенная Oracle) и CloudLinux соответственно.
  1. ^ Jump up to: а б с д Джош Пуамбёф; Сет Дженнингс (26 февраля 2014 г.). «Представляем kpatch: динамическое исправление ядра» . redhat.com . Проверено 23 июля 2014 г.
  2. ^ «Релиз 0.9.9» . 28 июля 2023 г. . Проверено 18 сентября 2023 г.
  3. ^ Шон Майкл Кернер (6 июня 2014 г.). «Исправление ядра Linux становится динамичным» . СерверВотч . Проверено 23 июля 2014 г.
  4. ^ Jump up to: а б с Джонатан Корбет (7 мая 2014 г.). «Первая подача kpatch» . LWN.net . Проверено 23 июля 2014 г.
  5. ^ Jump up to: а б с д Джош Пуамбёф (1 мая 2014 г.). «kpatch: динамическое исправление ядра» . LWN.net . Проверено 23 июля 2014 г.
  6. ^ Jump up to: а б «Ядро Linux 4.0, раздел 1.2. Оперативное обновление» . kernelnewbies.org . 26 апреля 2015 года . Проверено 27 апреля 2015 г.
  7. ^ Jump up to: а б с Сет Дженнингс; Джош Пуамбеф (10 июня 2014 г.). «Динамическое исправление ядра» . Красная шляпа . Проверено 23 июля 2014 г.
  8. ^ «SUSE выпускает kGraft для оперативного исправления ядра Linux» . СУЗЕ . 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. ^ Jump up to: а б «Дерево исходного кода ядра Linux: kernel/git/torvalds/linux.git: получить инфраструктуру оперативного исправления от Иржи Косина» . ядро.орг . 11 февраля 2015 года . Проверено 27 апреля 2015 г.
  14. ^ Джонатан Корбет (30 сентября 2015 г.). «Проверка стека во время компиляции» . LWN.net . Проверено 2 октября 2015 г.
  15. ^ Джош Пуамбеф (24 сентября 2015 г.). «Документация ядра Linux: Documentation/stack-validation.txt (из патча v13)» . LWN.net . Проверено 2 октября 2015 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cf0a570f8d64f8b8caa803e44a1f6392__1712212380
URL1:https://arc.ask3.ru/arc/aa/cf/92/cf0a570f8d64f8b8caa803e44a1f6392.html
Заголовок, (Title) документа по адресу, URL1:
kpatch - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)