| |
Компания 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. |
|
- Главная ссылка к новости (http://rhelblog.redhat.com/2014/02/26/kp...)
- OpenNews: Компания SUSE развивает свободную систему для обновления ядра без перезагрузки
- OpenNews: Компания Oracle представила сервис для проверки необходимости обновления ядер произвольных дистрибутивов
- OpenNews: Oracle поглотил компанию Ksplice, развивающую технологию обновления Linux-ядра без перезагрузки
- OpenNews: Выпуск CRIU 1.0, системы для заморозки и восстановления состояния процессов в Linux
- OpenNews: Компания Red Hat работает над собственной технологией обновления ядра Linux на лету
| Тип: Интересно / Программы | Ключевые слова: ksplice, kpatch, patch, linux, kernel, (найти похожие документы) | При перепечатке указание ссылки на opennet.ru обязательно | Реклама |
id=adv>
| |
| 2.29, Аноним, 03:56, 05/03/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] [ к модератору] –6 +/– 2.31, Аноним, 06:24, 05/03/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] [ к модератору] +5 +/–
1.2, umbr, 21:19, 04/03/2014 [ответить] [смотреть все] [к модератору] +/–
Новые фичи - новые дыры.
Вопрос к специалистам: не повлияет-ли это на совместимость ядер?
1.8, Аноним, 22:05, 04/03/2014 [ответить] [смотреть все] [к модератору] +4 +/–Господа, а как на счет безопасности для параноикрв ... весь текст скрыт [ показать]
1.12, AlexAT, 22:40, 04/03/2014 [ответить] [смотреть все] [к модератору] +1 +/–
>>> Не вызовет удивления, если компания Oracle откроет свежий исходный код KSplice и также подключится к борьбе за upstream
Поздновато. У редхата большой опыт по пропихиванию разработок в апстрим. В отличие от.
1.13, AlexAT, 22:43, 04/03/2014 [ответить] [смотреть все] [к модератору] +1 +/–
Блин, в который раз редхату эпическое шпасибо за следование GPL. У меня даже есть место для применения этой штуки, весьма специфичное, но реальное.
2.26, Аноним, 02:08, 05/03/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] [ к модератору] +1 +/– |
3.32, AlexAT, 08:36, 05/03/2014 [^] [ответить] [смотреть все] [к модератору] | +/– |
> секретничает, какое?
Есть определенная операторская сетевая платформа, которой возможность проапдейтить ядро (особенно собственные модули, например, для добавления мелкофич или затыкания мелкобагов) на ходу очень даже пригодится. Цена останова - обрыв всех абонентских сеансов в случае PPPoE/PPTP. Даже если есть резерв. Но это применение скорее типовое.
И при разработке оной иметь такую штуку тоже очень даже неплохо, ибо можно не перегружая тестовую площадку и не выгружая/перезагружая модулей (т.е. с сохранением состояния) проапдейтить кусок ядра (если не меняются структуры данных и API/ABI), и сразу на живую посмотреть, как оно работает. Это как раз "специфичное" применение.
|
| |
1.22, Аноним, 01:01, 05/03/2014 [ответить] [смотреть все] [к модератору] –1 +/– delirium Ага, значит наклепали за 5 минут, дабы пропихнуть побыстрее своё, чтоб... весь текст скрыт [ показать]
1.34, Anonymus, 08:42, 05/03/2014 [ответить] [смотреть все] [к модератору] +/–
неужто великим умищам нечем боле заняться чем костыли клепать?
|
2.35, AlexAT, 08:45, 05/03/2014 [^] [ответить] [смотреть все] [показать ветку] [к модератору] | +/– |
> неужто великим умищам нечем боле заняться чем костыли клепать?
Это очень нужные и важные костыли, которые могут в отдельных случаях сократить даунтайм критичных систем до минимума. В кровавом энтерпрайзе вряд ли нужно - там и часовой простой может быть нормой, бизнес от одной системы не встанет. В облаках и им подобных (фейсбуки, вконтакты и прочие гуглы) - тоже вряд ли пригодятся. А вот в телекоме, допустим, выведение из строя любой системы даже при наличии дублирующих - все равно нештатная ситуация. В биржевых системах, думается, тоже.
|
| |
Ваш комментарий
Read more |