<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Компания Red Hat открыла код kpatch для обновления на лету ядра Linux]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=34097&amp;type=atom" />
	<updated>2014-03-05T06:56:02Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=34097</id>
		<entry>
			<title type="html"><![CDATA[Re: Компания Red Hat открыла код kpatch для обновления на лету ядра Linux]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=398192#p398192" />
			<content type="html"><![CDATA[<p><strong>alexfinn</strong>, да не, тогда была новость о создании репы для ядерных разработок.</p>]]></content>
			<author>
				<name><![CDATA[Wolfenberg]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9425</uri>
			</author>
			<updated>2014-03-05T06:56:02Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=398192#p398192</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Компания Red Hat открыла код kpatch для обновления на лету ядра Linux]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=398191#p398191" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Wolfenberg пишет:</cite><blockquote><p>Вроде бы RHEL открыл свой патч ещё несколько недель назад</p></blockquote></div><p>тогда был анонс, если мне память не изменяет</p>]]></content>
			<author>
				<name><![CDATA[alexfinn]]></name>
				<uri>https://linuxforum.ru/profile.php?id=25867</uri>
			</author>
			<updated>2014-03-05T06:53:19Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=398191#p398191</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Компания Red Hat открыла код kpatch для обновления на лету ядра Linux]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=398167#p398167" />
			<content type="html"><![CDATA[<p><strong>verg</strong>, на opennet тормозят? <img src="https://linuxforum.ru/img/smilies/ai.gif" alt="ai" /> <br />Вроде бы RHEL открыл свой патч ещё несколько недель назад, если мне не изменяет память.</p>]]></content>
			<author>
				<name><![CDATA[Wolfenberg]]></name>
				<uri>https://linuxforum.ru/profile.php?id=9425</uri>
			</author>
			<updated>2014-03-05T01:02:26Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=398167#p398167</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Компания Red Hat открыла код kpatch для обновления на лету ядра Linux]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=398153#p398153" />
			<content type="html"><![CDATA[<p>Компания Red Hat <a href="http://rhelblog.redhat.com/2014/02/26/kpatch/">открыла</a> под лицензией GPLv2 наработки проекта <a href="https://github.com/dynup/kpatch">kpatch</a>, в рамках которого подготовлена система динамического применения патчей к работающему ядру Linux. По своему назначению kpatch напоминает развиваемую компанией Oracle систему <a href="http://www.ksplice.com/">KSplice</a> и анонсированный компанией SUSE проект <a href="http://www.opennet.ru/opennews/art.shtml?num=38994">kGraft</a>, и также позволяет администраторам на лету устранять уязвимости и некоторые типы ошибок в ядре, без перезагрузки и остановки работы системы.</p><p>Принцип организации обновления ядра в kpatch напоминает kGraft и основывается за замене функций в ядре целиком, используя штатные средства подсистемы ftrace для перенаправления на новую функцию. Методы формирования и загрузки патча более близки к ksplice и также основаны на сравнении бинарных сборок и использовании отдельного базового модуля для координации наложения изменений. Отмечается, что реализация kpatch ещё до конца не стабилизирована, поэтому систему динамического обновления ядра пока не стоит использовать для промышленного применения. Инструкция по сборке и экспериментах с kpatch <a href="https://github.com/dynup/kpatch">подготовлена</a> для Fedora 20 (см. <a href="http://www.youtube.com/watch?v=WeSmG-XirC4">видеодемонстрацию</a>). Горячие обновления могут быть сформированы для ядер Linux, начиная с выпуска 3.7.</p><p>После открытия кода kGraft, которое запланировано на март, между системами динамического обновления ядра от Red Hat и SUSE разразится конкурентная борьба по продвижению в состав основного ядра Linux. Не вызовет удивления, если компания Oracle откроет свежий исходный код KSplice и также подключится к борьбе за upstream. В настоящее время Ksplice является <a href="https://www.ksplice.com/uptrack/dist/">проприетарной</a> разработкой. Ранний вариант Ksplice был <a href="https://github.com/CentOS/ksplice">открыт</a>, но очень давно не обновлялся.</p><p>В состав kpatch входят следующие компоненты:<br /></p><ul><li><p>kpatch-build - набор утилит для преобразования патча к исходным текстам ядра, созданного утилитой diff, в специализированный модуль ядра, осуществляющий наложение изменений на работающее ядро. Для оценки подлежащих замене компонентов осуществляется сборка двух бинарных образов ядра (vmlinux), один для состояния до наложения патча на код ядра, а второй - после наложения патча. Далее выявляются отличия между бинарными сборками и генерируется модуль горячего обновления ядра.</p></li><li><p>Модуль горячего обновления ядра представляет собой обычный модуль ядра (файл с разрешением.ko), содержащий бинарные варианты изменённых функций ядра и метаданные об размещении оригинальных функций, подлежащих замене. Для применения патча нужно загрузить в ядро соответствующий модуль горячего обновления, для отката изменения и возвращения к исходному состоянию функций достаточно выгрузить модуль горячего обновления из ядра;</p></li><li><p>Базовый модуль kpatch - модуль ядра, предоставляющий интерфейс для регистрации новых функций, определённых в модуле горячего обновления ядра. Для перенаправления вызова на новую функцию используется подсистема ftrace, при помощи которой ставится хук на инструкцию вызова старой функции для перенаправления обращения на новую функцию.</p></li><li><p>Утилита kpatch с интерфейсом командной строки для управления коллекцией модулей горячего обновления ядра. Один или более подобных модулей могут быть настроены для применения в процессе загрузки, что позволяет системе сохранить работоспособность применённых в процессе работы горячих патчей, даже в случае перезагрузки сервера. </p></li></ul><p>Основные ограничения:<br /></p><ul><li><p>kpatch не может отслеживать изменение патчем динамически выделяемых структур данных, вся работа по анализу возможного пересечения с подобными структурами ложится на пользователя;</p></li><li><p>Пока не поддерживаются патчи, затрагивающие статически определённые структуры данных. Присутствие подобных структур в патче определяется и приводит к выводу ошибки;</p></li><li><p>Патчи не могут применяться к постоянно вызванным функциям ядра, таким как schedule(), а также к функциям, вызываемым только на стадии инициализации ядра;</p></li><li><p>Пока не поддерживаются патчи к функциям модулей ядра (поддерживаются только патчи к функциям в его базовом образе). </p></li></ul><p>Источник: <a href="http://www.opennet.ru/opennews/art.shtml?num=39235">http://www.opennet.ru/opennews/art.shtml?num=39235</a></p>]]></content>
			<author>
				<name><![CDATA[verg]]></name>
				<uri>https://linuxforum.ru/profile.php?id=10709</uri>
			</author>
			<updated>2014-03-04T19:52:31Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=398153#p398153</id>
		</entry>
</feed>
