Jump to content

кграфт

кграфт
Разработчик(и) СУЗЕ
Первоначальный выпуск 27 марта 2014 г. ( 27.03.2014 ) [1]
Стабильная версия
5.12 [2] / 25 апреля 2021 г .; 3 года назад ( 25 апреля 2021 )
Репозиторий
Операционная система Линукс
Тип Расширение ядра
Лицензия GNU GPL версий 2 и 3
Веб-сайт www .suse /продукты /живое исправление

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

kGraft разработан компанией SUSE , а его исходный код лицензируется на условиях второй и третьей версий GNU General Public License (GPL). [3] [5] В апреле 2014 года kGraft был представлен для включения в основную ветку ядра Linux . [4] а минималистичные основы оперативного исправления были объединены в основную ветку ядра Linux в версии ядра 4.0, выпущенной 12 апреля 2015 года. [6]

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

[ редактировать ]

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

При применении горячих патчей kGraft не требует остановки работающего ядра для внедрения в него исправленных версий функций. Вместо атомарной замены функций kGraft предоставляет согласованные «мировоззрения» (или «юниверсы») для пользовательского пространства процессов , потоков ядра и обработчиков прерываний , которые отслеживаются во время их выполнения, поэтому можно продолжать использовать исходные версии исправленных функций ядра. Для этого kGraft поддерживает исходные версии исправленных функций в режиме чтения-копирования-обновления (RCU) и динамически выбирает между исходной и исправленной версиями в зависимости от того, какой процесс, поток ядра или обработчик прерываний их выполняет. Точнее, оригинальные версии функций продолжают использоваться — «во время применения горячего патча» — для процессов, выполняющихся в данный момент в пространстве ядра , для потоков ядра, пока они не достигнут точек завершения, и для выполняющихся в данный момент обработчиков прерываний. [3] [4] [8] [9]

Благодаря своей конструкции kGraft не создает дополнительных задержек при применении «горячих» патчей. Обратной стороной является то, что оригинальные версии исправленных функций ядра могут потребоваться поддерживать в течение продолжительных периодов времени на случай, если есть процессы, которые слишком долго остаются в пространстве ядра; например, процесс может ожидать ввода-вывода в сетевом сокете . Кроме того, поскольку как исходные, так и исправленные версии функций могут выполняться параллельно, могут возникнуть проблемы, если они по-разному используют внутренние структуры данных ядра. [4] [9]

«Мировоззрения» или «вселенные», поддерживаемые kGraft в чтения-копирования-обновления . режиме [3] : 14, 15, 17 
Без дополнительной логики отсутствие атомарной замены исправленных функций может привести к несогласованности.
Каждый процесс контролируется, поэтому он последовательно выполняет исправленную функцию в рамках одного системного вызова .
После того, как все перенесется в новую «вселенную», проверки в стиле батута больше не нужны.

SUSE анонсировала kGraft в январе 2014 года. [10] и выпустил его публично в марте 2014 года на условиях GNU General Public License версии 2 ( GPLv2 ) для части ядра и на условиях версии 3 ( GPLv3 ) для части пользовательского пространства. [1] [5] Он был выпущен вскоре после того, как Red Hat выпустила собственную реализацию исправлений ядра под названием kpatch . [11] kGraft стремится быть объединенным с основной веткой ядра Linux, и он был представлен для включения в апреле 2014 года. [4] [9]

kGraft стал доступен для SUSE Linux Enterprise Server 12 18 ноября 2014 г. в качестве дополнительной функции под названием SUSE Linux Enterprise Live Patching . [12] [13]

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

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

См. также

[ редактировать ]
  • Динамическое обновление программного обеспечения — область исследований, направленная на обновление программ во время их работы.
  • kexec — метод загрузки совершенно нового ядра Linux из работающей системы.
  • Ksplice и KernelCare , другие технологии оперативного исправления ядра Linux, разработанные Ksplice, Inc. (позже приобретенная Oracle) и CloudLinux соответственно.
  1. ^ Перейти обратно: а б с «SUSE выпускает kGraft для оперативного исправления ядра Linux» . СУЗЕ . 27 марта 2014 года . Проверено 7 ноября 2014 г.
  2. ^ «Релиз 5.12» . 25 апреля 2021 г. . Проверено 14 мая 2021 г.
  3. ^ Перейти обратно: а б с д и Войтех Павлик (28 марта 2014 г.). «kGraft: живое исправление ядра Linux» (PDF) . linuxfoundation.org . Проверено 7 ноября 2014 г.
  4. ^ Перейти обратно: а б с д и ж Джонатан Корбет (30 апреля 2014 г.). «Первоначальное представление kGraft» . LWN.net . Проверено 7 ноября 2014 г.
  5. ^ Перейти обратно: а б Крис Дакетт (4 февраля 2014 г.). «KGraft от Suse надеется вернуть живое исправление ядра в Linux» . ЗДНет . Проверено 11 февраля 2020 г.
  6. ^ Перейти обратно: а б «Ядро Linux 4.0, раздел 1.2. Оперативное обновление» . kernelnewbies.org . 26 апреля 2015 года . Проверено 27 апреля 2015 г.
  7. ^ Войтех Павлик (31 января 2014 г.). «kGraft: живое исправление ядра» . suse.com . Проверено 7 ноября 2014 г.
  8. ^ Либби Кларк (4 марта 2014 г.). «Директор лаборатории SUSE рассказывает о реальном обновлении ядра с помощью kGraft» . Linux.com . Архивировано из оригинала 10 марта 2016 года . Проверено 7 ноября 2014 г.
  9. ^ Перейти обратно: а б с Майкл Ларабель (1 мая 2014 г.). «SUSE публикует kGraft, Red Hat публикует патчи Kpatch» . Фороникс . Проверено 7 ноября 2014 г.
  10. ^ «SUSE разрабатывает kGraft для оперативного исправления ядра Linux» . СУЗЕ . 31 января 2014 года . Проверено 28 декабря 2014 г.
  11. ^ Джош Пуамбёф; Сет Дженнингс (26 февраля 2014 г.). «Представляем kpatch: динамическое исправление ядра» . redhat.com . Проверено 11 февраля 2020 г.
  12. ^ «Сейчас доступно обновление SUSE Linux Enterprise Live» . СУЗЕ . 18 ноября 2014 года . Проверено 23 ноября 2014 г.
  13. ^ Шон Майкл Кернер (18 ноября 2014 г.). «SUSE внедряет Live Patching и Ceph Storage в свой корпоративный Linux» . serverwatch.com . Проверено 23 ноября 2014 г.
  14. ^ Джонатан Корбет (25 февраля 2015 г.). «Черновой патч для живого исправления» . LWN.net . Проверено 27 апреля 2015 г.
  15. ^ Перейти обратно: а б «Дерево исходного кода ядра Linux: kernel/git/torvalds/linux.git: получить инфраструктуру оперативного исправления от Иржи Косина» . ядро.орг . 11 февраля 2015 года . Проверено 27 апреля 2015 г.
  16. ^ Джонатан Корбет (30 сентября 2015 г.). «Проверка стека во время компиляции» . LWN.net . Проверено 2 октября 2015 г.
  17. ^ Джош Пуамбеф (24 сентября 2015 г.). «Документация ядра Linux: Documentation/stack-validation.txt (из патча v13)» . LWN.net . Проверено 2 октября 2015 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1090bda583019ab57a611840fcee0d2e__1712212380
URL1:https://arc.ask3.ru/arc/aa/10/2e/1090bda583019ab57a611840fcee0d2e.html
Заголовок, (Title) документа по адресу, URL1:
kGraft - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)