top
logo


Компания Red Hat открыла код kpatch для организации обновления на лету ядра Linux PDF Печать E-mail
04.03.14 16:34

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

Принцип организации обновления ядра в kpatch напоминает kGraft и основывается на замене функций в ядре целиком, используя штатные средства подсистемы ftrace для перенаправления на новую функцию. Методы формирования и загрузки патча более близки к ksplice и также основаны на сравнении бинарных сборок. Отмечается, что реализация kpatch ещё до конца не стабилизирована, поэтому систему динамического обновления ядра пока не стоит использовать для промышленного применения. Инструкция по сборке и экспериментах с kpatch подготовлена для Fedora 20 (см. видеодемонстрацию). Горячие обновления могут быть сформированы для ядер Linux, начиная с выпуска 3.7.

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

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

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

Основные ограничения:

  • kpatch не может отслеживать изменение патчем динамически выделяемых структур данных, вся работа по анализу возможного пересечения с подобными структурами ложится на пользователя;
  • Пока не поддерживаются патчи, затрагивающие статически определённые структуры данных. Присутствие подобных структур в патче определяется и приводит к выводу ошибки;
  • Патчи не могут применяться к постоянно вызванным функциям ядра, таким как schedule(), а также к функциям, вызываемым только на стадии инициализации ядра;
  • Пока не поддерживаются патчи к функциям модулей ядра (поддерживаются только патчи к функциям в его базовом образе).

Дополнение: интервью с руководителем SUSE Labs по поводу разработки kGraft.

  1. Главная ссылка к новости (http://rhelblog.redhat.com/2014/02/26/kp...)
  2. OpenNews: Компания SUSE развивает свободную систему для обновления ядра без перезагрузки
  3. OpenNews: Компания Oracle представила сервис для проверки необходимости обновления ядер произвольных дистрибутивов
  4. OpenNews: Oracle поглотил компанию Ksplice, развивающую технологию обновления Linux-ядра без перезагрузки
  5. OpenNews: Выпуск CRIU 1.0, системы для заморозки и восстановления состояния процессов в Linux
  6. OpenNews: Компания Red Hat работает над собственной технологией обновления ядра Linux на лету
Тип: Интересно / Программы
Ключевые слова: ksplice, kpatch, patch, linux, kernel, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
id=adv>
    2.14, FractalizeR, 23:26, 04/03/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору] +6 +/
Патчи гениальны. Они изменят судьбу мира Linux.
 
  3.17, pavlinux, 23:41, 04/03/2014 [^] [ответить] [смотреть все]     [к модератору] –3 +/
Ты как большой специалист знаешь же, где найти руткит на неправильные спецификат... весь текст скрыт [показать]
 
  4.23, анонимус, 01:07, 05/03/2014 [^] [ответить] [смотреть все]    [к модератору]  +2 +/
руткит — это немного не о том, наверное эксплойт
 
  5.46, pavlinux, 17:09, 05/03/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
руткит - это цель, эксплойт - это инструмент, как черепно-мозговая травма тупым предметом и молоток.
 
2.29, Аноним, 03:56, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  –6 +/ 2.31, Аноним, 06:24, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +5 +/ 
1.2, umbr, 21:19, 04/03/2014 [ответить] [смотреть все]    [к модератору]  +/ Новые фичи - новые дыры.
Вопрос к специалистам: не повлияет-ли это на совместимость ядер?
Компания Red Hat открыла код kpatch для организации обновления на лету ядра Linux  
  2.3, pavlinux, 21:34, 04/03/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +/
 
  3.5, umbr, 21:58, 04/03/2014 [^] [ответить] [смотреть все]     [к модератору]  +5 +/
Теперь бэкдоры можно пихать прямо в работающее ядро И никаких следов, разве что... весь текст скрыт [показать]
image
 
3.21, pavlinux, 00:38, 05/03/2014 [^] [ответить] [смотреть все]     [к модератору]  +/
А с этой фичей, оверхед проца-то вырос, прим на 10 C В общем, поюзал глюкало... весь текст скрыт [показать]
 
    5.33, Anonymus, 08:41, 05/03/2014 [^] [ответить] [смотреть все]    [к модератору]  +2 +/
тщательнее надо проектировать, остановка сервера не должна приводить к остановке сервиса
 
  6.39, Маленькая Серая Мышка, 13:54, 05/03/2014 [^] [ответить] [смотреть все]    [к модератору]  +3 +/
То есть вы предлагаете перепроектировать этот мир вместо того чтобы использовать kpatch, я так понимаю.
Ну что ж, предложение интересное, практичное.
 
1.8, Аноним, 22:05, 04/03/2014 [ответить] [смотреть все]     [к модератору]  +4 +/
Господа, а как на счет безопасности для параноикрв ... весь текст скрыт [показать]
 
  2.25, Аноним, 01:48, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  +6 +/
Для параноиков ее нет.
 
2.43, Нанобот, 15:33, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  +1 +/ для параноиков ничего не изменилось - всё как было опасно, так и остаётся
 
1.12, AlexAT, 22:40, 04/03/2014 [ответить] [смотреть все]    [к модератору]  +1 +/ >>> Не вызовет удивления, если компания Oracle откроет свежий исходный код KSplice и также подключится к борьбе за upstream

Поздновато. У редхата большой опыт по пропихиванию разработок в апстрим. В отличие от.

image   1.13, AlexAT, 22:43, 04/03/2014 [ответить] [смотреть все]    [к модератору]  +1 +/ Блин, в который раз редхату эпическое шпасибо за следование GPL. У меня даже есть место для применения этой штуки, весьма специфичное, но реальное.
image  
  2.18, pavlinux, 00:06, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  –1 +/
# This script currently only works on Fedora and will need to be adapted to
# work on other distros.
 
  3.24, anonymous, 01:38, 05/03/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
Да там три с половиной строки поправить. Кто не сможет - тому рано пока это использовать.
 
2.26, Аноним, 02:08, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  +1 +/ 
  3.32, AlexAT, 08:36, 05/03/2014 [^] [ответить] [смотреть все]    [к модератору]  +/
> секретничает, какое?

Есть определенная операторская сетевая платформа, которой возможность проапдейтить ядро (особенно собственные модули, например, для добавления мелкофич или затыкания мелкобагов) на ходу очень даже пригодится. Цена останова - обрыв всех абонентских сеансов в случае PPPoE/PPTP. Даже если есть резерв. Но это применение скорее типовое.

И при разработке оной иметь такую штуку тоже очень даже неплохо, ибо можно не перегружая тестовую площадку и не выгружая/перезагружая модулей (т.е. с сохранением состояния) проапдейтить кусок ядра (если не меняются структуры данных и API/ABI), и сразу на живую посмотреть, как оно работает. Это как раз "специфичное" применение.

image
 
1.22, Аноним, 01:01, 05/03/2014 [ответить] [смотреть все]     [к модератору]  –1 +/
delirium Ага, значит наклепали за 5 минут, дабы пропихнуть побыстрее своё, чтоб... весь текст скрыт [показать]
 
  2.30, Мегазаычы, 05:22, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  +/
5 лет не уходили (см. ksplice) а тут вдруг подорвались.
 
1.34, Anonymus, 08:42, 05/03/2014 [ответить] [смотреть все]    [к модератору]  +/ неужто великим умищам нечем боле заняться чем костыли клепать?
 
  2.35, AlexAT, 08:45, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  +/
> неужто великим умищам нечем боле заняться чем костыли клепать?

Это очень нужные и важные костыли, которые могут в отдельных случаях сократить даунтайм критичных систем до минимума. В кровавом энтерпрайзе вряд ли нужно - там и часовой простой может быть нормой, бизнес от одной системы не встанет. В облаках и им подобных (фейсбуки, вконтакты и прочие гуглы) - тоже вряд ли пригодятся. А вот в телекоме, допустим, выведение из строя любой системы даже при наличии дублирующих - все равно нештатная ситуация. В биржевых системах, думается, тоже.

image
 
 
 
Часть нити удалена модератором

4.50, Аноним, 21:59, 05/03/2014 [^] [ответить] [смотреть все]     [к модератору]  
+/
И что делать если даунтайм запланирован на следующей неделе, а проблему надо исп... весь текст скрыт [показать]
 

Ваш комментарий  

Read more http://www.opennet.ru/opennews/art.shtml?num=39235

 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика