The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

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

Компания 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/201...)
  2. OpenNews: Компания SUSE развивает свободную систему для обновления ядра без перезагрузки
  3. OpenNews: Компания Oracle представила сервис для проверки необходимости обновления ядер произвольных дистрибутивов
  4. OpenNews: Oracle поглотил компанию Ksplice, развивающую технологию обновления Linux-ядра без перезагрузки
  5. OpenNews: Выпуск CRIU 1.0, системы для заморозки и восстановления состояния процессов в Linux
  6. OpenNews: Компания Red Hat работает над собственной технологией обновления ядра Linux на лету
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: ksplice, kpatch, patch, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, pavlinux (ok), 21:05, 04/03/2014 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Опердили SuSE :)

    ---
    Пара патчей

    https://github.com/pavlinux/kpatch/commit/041c7ccae68e36b771156896776ccbb3b862
    https://github.com/pavlinux/kpatch/commit/db9c6e989b7c1a5005633291f7bb2eebd949
    ---

     
     
  • 2.14, FractalizeR (ok), 23:26, 04/03/2014 [^] [ответить]    [к модератору]
  • +8 +/
    Патчи гениальны. Они изменят судьбу мира Linux.
     
     
  • 3.17, pavlinux (ok), 23:41, 04/03/2014 [^] [ответить]    [к модератору]
  • –3 +/
    Ты как большой специалист знаешь же, где найти руткит на неправильные спецификаторы printf/scanf
     
     
  • 4.23, анонимус (??), 01:07, 05/03/2014 [^] [ответить]    [к модератору]
  • +2 +/
    руткит — это немного не о том, наверное эксплойт
     
     
  • 5.46, pavlinux (ok), 17:09, 05/03/2014 [^] [ответить]    [к модератору]
  • +/
    руткит - это цель, эксплойт - это инструмент, как черепно-мозговая травма тупым предметом и молоток.
     
  • 2.29, Аноним (-), 03:56, 05/03/2014 [^] [ответить]    [к модератору]  
  • –6 +/
    Нафиг нужны твои патчи?
     
     
  • 3.42, pavlinux (ok), 14:25, 05/03/2014 [^] [ответить]    [к модератору]  
  • –1 +/
    > Нафиг нужны твои патчи?

    лохов раздражать

     
  • 2.31, Аноним (-), 06:24, 05/03/2014 [^] [ответить]    [к модератору]  
  • +5 +/
    Так вот ты какой, северный pavlinux https://identicons.github.com/35a2ad62b28e3c7cf02bdc9d1c2932a6.png
     
  • 2.36, qwerty (??), 08:45, 05/03/2014 [^] [ответить]    [к модератору]  
  • +/
    >Type coeection

    *facepalm*

     
     
  • 3.47, pavlinux (ok), 17:10, 05/03/2014 [^] [ответить]    [к модератору]  
  • +1 +/
    >>Type coeection
    > *facepalm*

    Да, вот так,... не хватило сил дотянуть палец до соседней кнопки. :-P

     
  • 1.2, umbr (ok), 21:19, 04/03/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Новые фичи - новые дыры.
    Вопрос к специалистам: не повлияет-ли это на совместимость ядер?
     
     
  • 2.3, pavlinux (ok), 21:34, 04/03/2014 [^] [ответить]     [к модератору]  
  • +/
    Кроме как CONFIG_FTRACE и CONFIG_FUNCTION_TRACER вроде ничего волшебного не прос... весь текст скрыт [показать]
     
     
  • 3.5, umbr (ok), 21:58, 04/03/2014 [^] [ответить]    [к модератору]  
  • +5 +/
    Теперь бэкдоры можно пихать прямо в работающее ядро?
    И никаких следов, разве что оперативку сканировать.
     
     
  • 4.16, pavlinux (ok), 23:37, 04/03/2014 [^] [ответить]    [к модератору]  
  • +3 +/
    > Теперь бэкдоры можно пихать прямо в работающее ядро?

    Да, от рута всё можно.

     
  • 3.21, pavlinux (ok), 00:38, 05/03/2014 [^] [ответить]     [к модератору]  
  • +/
    А с этой фичей, оверхед проца-то вырос, прим на 10 C В общем, поюзал глюкало... весь текст скрыт [показать]
     
     
  • 4.28, Геннадий Кернес (?), 02:50, 05/03/2014 [^] [ответить]    [к модератору]  
  • +/
    >в 500 проще перекомпилить модуль, остановить сервис

    Что _проще_ - никто и не спорил.
    Только дороговато некоторые сервисы останавливать.

     
     
  • 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.11, backbone (ok), 22:17, 04/03/2014 [^] [ответить]    [к модератору]  
  • +2 +/
    Безопасности, в смысле, security или безопасности процесса применения патча?

    Ради 1-го и развиваются эти технологии. По поводу 2-го - в новости сказано, что не готово для production.

     
  • 2.25, Аноним (-), 01:48, 05/03/2014 [^] [ответить]    [к модератору]  
  • +6 +/
    Для параноиков ее нет.
     
  • 2.43, Нанобот (ok), 15:33, 05/03/2014 [^] [ответить]    [к модератору]  
  • +1 +/
    для параноиков ничего не изменилось - всё как было опасно, так и остаётся
     
  • 1.12, AlexAT (ok), 22:40, 04/03/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    >>> Не вызовет удивления, если компания Oracle откроет свежий исходный код KSplice и также подключится к борьбе за upstream

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

     
  • 1.13, AlexAT (ok), 22:43, 04/03/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Блин, в который раз редхату эпическое шпасибо за следование GPL. У меня даже есть место для применения этой штуки, весьма специфичное, но реальное.
     
     
  • 2.18, pavlinux (ok), 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 (ok), 08:36, 05/03/2014 [^] [ответить]     [к модератору]  
  • +/
    Есть определенная операторская сетевая платформа, которой возможность проапдейти... весь текст скрыт [показать]
     
  • 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 (ok), 08:45, 05/03/2014 [^] [ответить]     [к модератору]  
  • +/
    Это очень нужные и важные костыли, которые могут в отдельных случаях сократить д... весь текст скрыт [показать]
     
     
     
    Часть нити удалена модератором

  • 4.50, Аноним (50), 21:59, 05/03/2014 [^] [ответить]     [к модератору]  
  • +1 +/
    И что делать если даунтайм запланирован на следующей неделе, а проблему надо исп... весь текст скрыт [показать]
     
  • 3.40, Маленькая Серая Мышка (?), 13:56, 05/03/2014 [^] [ответить]    [к модератору]  
  • +2 +/
    > - там и часовой простой может быть нормой, бизнес от одной
    > системы не встанет.

    Ну да, помнится вот у Сбербанка "не встал".

     
  • 1.52, Аноним (-), 17:54, 07/03/2014 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    IBM K24 же
     
     
  • 2.53, Аноним (-), 17:55, 07/03/2014 [^] [ответить]    [к модератору]  
  • +/
    K42 (:
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor