<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF77:sysfs - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF77:sysfs&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 23:58:32 GMT</lastBuildDate>
		<item>
			<title>Yaleks: викификация</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF77:sysfs&amp;diff=6572&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF77:sysfs&amp;amp;diff=6572&amp;amp;oldid=6571&quot;&gt;(Различия между версиями)&lt;/a&gt;</description>
			<pubDate>Fri, 16 Jan 2009 12:18:10 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF77:sysfs</comments>		</item>
		<item>
			<title>Yaleks в 12:17, 16 января 2009</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF77:sysfs&amp;diff=6571&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 12:17, 16 января 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 58:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 58:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Устройства Linux ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Устройства Linux ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Заголовок=udev&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Содержание=Основной автор и популяризатор udev – Грег&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Кроах-Хартман (Greg Kroah-Hartman). По его замыслу udev должен:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* выполняться в пространстве пользователя;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* динамически формировать /dev;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* генерировать произвольные и непротиворечивые имена устройств;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* обеспечить пользователя API доступа к информации об устройствах системы.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Едва ли не самым замечательным было то, что&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;первая реализация udev представляла собой всего&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;6Kb откомпилированного кода: можно понять интерес производителей гаджетов...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Как это ни странно, но управление статическими узлами («нодами») устройств в /dev, основанное на информации ядра – лишь «сопутствующая&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;выгода» использования udev. Разрабатывался-то&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;он прежде всего для того, чтобы избавиться от&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;ответственности за назначение major/minor номеров&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;и получить возможность произвольного именования устройств. Первое достигается тем, что udev,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;в отличие от devfsd только «наследует» major/minor, отвечает же за них исключительно ядро.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;А механизм управления именованием получился&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;настолько удачным, что подобным образом, в конце&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;концов, стали создавать символические ссылки и&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;запускать скрипты. В конечном счёте, оказалось,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;что такой «вооружённый» скриптами udev вполне&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;может обойтись без /sbin/hotplug и такой подход&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;становится в последнее время доминирующим.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;По крайней мере, он уже принят на вооружение&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Mandriva, Ubuntu, Arch Linux...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Ширина=300px}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux, как известно, унаследовал от UNIX представление устройств в&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux, как известно, унаследовал от UNIX представление устройств в&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;виде файлов, находящихся в каталоге /dev и характеризующихся уникальным идентификаторами – числами minor и major. Существование&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;виде файлов, находящихся в каталоге /dev и характеризующихся уникальным идентификаторами – числами minor и major. Существование&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 158:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 186:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Что из этого следует? ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Что из этого следует? ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Заголовок=Драйвера от производителей для Linux&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Содержание=Не нужно думать, что производители оборудования не делают драйвера для Linux «из вредности».&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Просто поставка драйвера в форме двоичного&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;модуля для «константного» ядра XP и предоставление спецификации, достаточной для построения&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;модуля для произвольного ядра Linux – совершенно&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;разные вещи. Существует, однако, компромисс в&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;форме драйвера, часть из которого предоставляется в двоичном виде (и «закрыта», таким образом, от&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;потенциальных конкурентов), а часть – в виде&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;исходных текстов. Причём, именно вторая часть&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;обеспечивает возможность «подгонки» создаваемого модуля к любому ядру. В таком виде предоставляет драйвера NVIDIA, за что мы ей весьма&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;благодарны. К сожалению, сказать, что её примеру&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;последовали многие, нельзя.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Ширина=250px}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Из того факта, что существование sysfs, в принципе, может быть&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Из того факта, что существование sysfs, в принципе, может быть&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;проигнорировано «простым» пользователем, совершенно не следует, что новая драйверная модель не отражается на «повседневном»&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;проигнорировано «простым» пользователем, совершенно не следует, что новая драйверная модель не отражается на «повседневном»&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 194:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 236:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Практикум ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Практикум ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Заголовок=PnP ОС – а хорошо бы ...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Содержание=Есть, однако, функции PnP ОС&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;(ОС с централизованной системой&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Plag-n-Play), которые хотелось бы&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;увидеть в Linux:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* распределение ресурсов при их дефиците (утрачивает актуальность с каждым годом);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* выбор драйвера при наличии альтернативы для одного и того же устройства;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* поиск драйвера вместо ожидания реакции программы, ответственной за его загрузку;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* дальнейшее облегчение работы разработчиков драйверов.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Перспектива роста – налицо.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Подождём...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Ширина=200px}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В качестве практикума предлагаю посредством анализа /sys рассмотреть программную поддержку ide-устройств. Наиболее полно дерево&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В качестве практикума предлагаю посредством анализа /sys рассмотреть программную поддержку ide-устройств. Наиболее полно дерево&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;устройств представлено, как уже говорилось, в каталоге /sys/devices.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;устройств представлено, как уже говорилось, в каталоге /sys/devices.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 282:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 338:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Выводы ===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=== Выводы ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Врезка&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Заголовок=Использование NDIS -драйверов&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Содержание=Покупая сетевую карту вы, как&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;правило, оплачиваете и прилагаемый драйвер. Вот только&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;драйвер этот – ndis, т.е. для MS&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Windows. Иногда, однако, и эти&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;драйвера удаётся успешно&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;использовать в Linux. Лучшие&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;примеры – это DriverLoader&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;(http://www.linuxant.com/driverloader/) и ndiswrapper&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;(http://ndiswrapper.sourceforge.net/), успешно применяемые&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;для множества Wi-Fi адаптеров.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Это – второй известный мне&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;случай использования в Linux&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;проприетарного ПО, написанного для MS Windows. Первый –&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;видео кодеки в MPlayer.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|Ширина=300px}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Драйверная модель ядра Linux версии 2.6.х предоставляет, без сомнения, новые возможности для определения оборудования. В некоторых&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Драйверная модель ядра Linux версии 2.6.х предоставляет, без сомнения, новые возможности для определения оборудования. В некоторых&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;случаях можно говорить о новом подходе к написанию инсталляторов&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;случаях можно говорить о новом подходе к написанию инсталляторов&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 16 Jan 2009 12:17:16 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF77:sysfs</comments>		</item>
		<item>
			<title>Yaleks: Новая: == Оборудование и Linux Новая страница: sysfs == ''Нам часто приходится слышать, что Linux «недостаточно хорошо ...</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF77:sysfs&amp;diff=6570&amp;oldid=prev</link>
			<description>&lt;p&gt;Новая: == Оборудование и Linux Новая страница: sysfs == ''Нам часто приходится слышать, что Linux «недостаточно хорошо ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Оборудование и Linux Новая страница: sysfs ==&lt;br /&gt;
''Нам часто приходится слышать, что Linux «недостаточно хорошо поддерживает современное оборудование». '''Владимир Попов''' хочет привести пару подкрепленных примерами доводов в защиту открытой ОС.''&lt;br /&gt;
&lt;br /&gt;
Вам никогда не казалось парадоксальным, что Linux, который используется в мобильных телефонах и на суперкомпьютерах, пользователи IBM PC часто упрекают в том, что&lt;br /&gt;
он «плохо поддерживает оборудование»? Не будем вспоминать, что&lt;br /&gt;
для Microsoft (а ведь именно с Windows сравнивают Linux на персональных компьютерах) львиную долю работы по поддержке оборудования выполняют производители этого самого оборудования, просто&lt;br /&gt;
попытаемся проанализировать, есть ли реальные основания для таких&lt;br /&gt;
упрёков.&lt;br /&gt;
&lt;br /&gt;
Настоящая статья представляет собой попытку «защиты» Linux,&lt;br /&gt;
опирающуюся на информацию о новой драйверной модели, ставшей&lt;br /&gt;
частью ядра версии 2.6&lt;br /&gt;
&lt;br /&gt;
=== IBM PC: что внутри? ===&lt;br /&gt;
Для начала об оборудовании, непосредственно контактирующем с&lt;br /&gt;
внутренними шинами IBM PC. Это те самые карты, которые раньше во&lt;br /&gt;
множестве вставлялись непосредственно в слоты материнской платы.&lt;br /&gt;
На настоящий момент большая часть этих устройств находится «на&lt;br /&gt;
борту» – в составе микросхем, расположенных на материнской плате,&lt;br /&gt;
но сути это не меняет. Каждое такое устройство использует определённые ресурсы – адреса памяти и портов ввода/вывода (о линиях прерывания и каналах прямого доступа к памяти (DMA) упоминать не будем,&lt;br /&gt;
поскольку шина ISA усилиями Intel таки похоронена окончательно).&lt;br /&gt;
Казалось бы: устройство скорее предоставляет ресурсы, чем использует&lt;br /&gt;
их. Но поскольку адресное пространство у компьютера одно, то получается, что предоставляя ячейки памяти или регистры портов ввода/вывода, устройство использует именно адреса компьютера.&lt;br /&gt;
&lt;br /&gt;
И хотя вышеупомянутых карт в составе IBM PC с каждым годом&lt;br /&gt;
становилось всё меньше, количество устройств неизменно возрастало,&lt;br /&gt;
и каждому требовались ресурсы. Совершенно очевидно, что нужен был&lt;br /&gt;
механизм, который бы эти ресурсы распределял (хотя бы для того, что-бы обеспечить возможность работы в составе компьютера двух одинаковых устройств, требующих, естественно, одинаковых ресурсов). Такой&lt;br /&gt;
механизм существует, и называется он – Plug-and-Play. Это может&lt;br /&gt;
показаться странным, но такое несколько «игривое» название получило именно распределение ресурсов устройствам, а не подключение&lt;br /&gt;
устройства к компьютеру без перезагрузки последнего, как можно было&lt;br /&gt;
бы предположить. Для такого «горячего» подключения используется&lt;br /&gt;
совсем иной термин – hotplug. Первоначально о hotplug можно было&lt;br /&gt;
говорить только в применении к USB и PCMCIA/Cardbus. Потом этот&lt;br /&gt;
список был дополнен устройствами Firewire и CompactPCI, а в настоящее время hotplug возможен для «нормальных» PCI-устройств (посредством специальных hotplug-контроллеров), IDE (некоторые RAID&lt;br /&gt;
контроллеры), SCSI, модулей памяти и, наконец, CPU. Вот уж, воистину:&lt;br /&gt;
«всё смешалось в доме Облонских», как справедливо заметил великий&lt;br /&gt;
русский писатель.&lt;br /&gt;
&lt;br /&gt;
Основной шиной, посредством которой обмениваются информацией&lt;br /&gt;
все устройства современного IBM PC, является PCI. Пользователи Linux&lt;br /&gt;
могут легко в этом убедиться, набрав в командной строке lspci, lspci&lt;br /&gt;
-vv или scanpci -v. Остальные шины, будь-то AGP или USB, получают&lt;br /&gt;
доступ к PCI посредством контроллеров, называемых мостами. События,&lt;br /&gt;
происходящие на этих «прочих» шинах, в принципе, не интересуют&lt;br /&gt;
систему управления Plug-and-Play, поскольку не влекут за собой&lt;br /&gt;
перераспределения шинных ресурсов. Так бы и сосуществовали мирно&lt;br /&gt;
разные устройства: Plug-and-Play контролировал бы распределение&lt;br /&gt;
внутренних ресурсов вычислительной системы, hotplug реагировал бы&lt;br /&gt;
на подключения к шинам USB и PCMCIA, пока «горячее» подключение&lt;br /&gt;
не стали использовать для PCI-устройств.&lt;br /&gt;
&lt;br /&gt;
Кроме того, есть ещё одно обстоятельство, подталкивающее разработчиков Linux к пересмотру принципов работы с оборудованием. Дело&lt;br /&gt;
в том, что, с точки зрения ОС, принципиально различным образом&lt;br /&gt;
подключенные устройства, в общем-то, очень похожи. И тем, и другим&lt;br /&gt;
требуется драйвер, да и представлены они, в конечном счёте, одинаково.&lt;br /&gt;
Однако об этом – ниже.&lt;br /&gt;
&lt;br /&gt;
=== Устройства Linux ===&lt;br /&gt;
Linux, как известно, унаследовал от UNIX представление устройств в&lt;br /&gt;
виде файлов, находящихся в каталоге /dev и характеризующихся уникальным идентификаторами – числами minor и major. Существование&lt;br /&gt;
таких файлов – абсолютно необходимое условие доступности устройств,&lt;br /&gt;
и не так давно общепринятой практикой было их «заблаговременное»&lt;br /&gt;
создание. В настоящий момент каталог /dev, заполненный подобным образом, выглядит просто необъятным, что, по меньшей мере,&lt;br /&gt;
раздражает.&lt;br /&gt;
&lt;br /&gt;
Кроме того, поскольку под номера minor и major изначально было&lt;br /&gt;
выделено всего по байту, и в скором времени их перестанет хватать.&lt;br /&gt;
Одним словом, изменения назрели, и, забегая вперёд, скажем, что&lt;br /&gt;
udev, опирающийся на данные новой драйверной модели, доступные&lt;br /&gt;
через sysfs, является очередной (после devfs) попыткой решения проблемы неуправляемого роста /dev.&lt;br /&gt;
&lt;br /&gt;
Ещё одно условие использования устройства – это существование&lt;br /&gt;
и загрузка соответствующего модуля ядра – драйвера. Модуль этот&lt;br /&gt;
может быть включён в состав ядра во время компиляции последнего, но&lt;br /&gt;
сути это не меняет: нет модуля – нет работоспособного устройства. Вот&lt;br /&gt;
теперь картина получается вполне законченной:&lt;br /&gt;
* система Plug-and-Play (а в случае Linux это BIOS) обнаруживает устройство, конфигурирует его и выделяет ему необходимые ресурсы c учётом «пожеланий» всех остальных устройств;&lt;br /&gt;
* драйвер находит «своё» устройство, читает его конфигурацию, и после этого готов выполнять свои коммуникативные функции;&lt;br /&gt;
* драйвер должен быть «ассоциирован» с файлом устройства (а последний, в свою очередь, должен существовать), и только после этого обращение к файлу в /dev, фактически, станет обращением к устройству.&lt;br /&gt;
Для виртуальных устройств, каковыми являются сетевые адаптеры ethN, достаточно последовательно загружать командой modprobe&lt;br /&gt;
module_name модули из каталога /lib/modules/version/kernel/drivers/net, пока вывод команды cat /proc/net/dev не укажет на&lt;br /&gt;
то, что устройство eth0 появилось. Именно так некоторые live-cd и&lt;br /&gt;
поступают.&lt;br /&gt;
&lt;br /&gt;
Для устройств, нуждающихся в наличии «своего» файла в /dev,&lt;br /&gt;
потребуется наличие devfs и соответствующего демона devfsd, реагирующего на подключение устройства загрузкой соответствующего&lt;br /&gt;
драйвера и созданием файла в /dev. Так, для звукового PCI-адаптера&lt;br /&gt;
модули нужно брать из /lib/modules/version/kernel/sound/pci, а&lt;br /&gt;
результат оценивать по по наличию устройства /dev/dsp.&lt;br /&gt;
&lt;br /&gt;
Разумеется, существовали и более интеллектуальные способы&lt;br /&gt;
поиска нужного драйвера для устройства, основанные на сопоставлении&lt;br /&gt;
идентификаторов оборудования (cat /proc/bus/pci/devices) и наличия аналогичных данных модулей из файла /lib/modules/version/kernel/modules.pcimap, только то, что подходит для сетевого адаптера или звуковой карты, трудно приложить к неизвестному оборудованию: драйвер, положим, нашли и загрузили, а какой файл устройства&lt;br /&gt;
создавать? Да и принципы работы devfs оказались не без изъяна. Чего&lt;br /&gt;
стоило только «размножение» устройств при многократном подключении одного и того же USB-накопителя...&lt;br /&gt;
&lt;br /&gt;
=== Новая драйверная модель Linux ===&lt;br /&gt;
Довольно серьёзные проблемы в работе с PnP устройствами преодолены в Linux к середине 2004-го года. Из не-PnP системы Linux&lt;br /&gt;
превратился в систему с децентрализованным механизмом PnP: Plug-and-Play реализуется для каждого отдельного устройства. Теперь&lt;br /&gt;
драйвер, обнаружив «своё» устройство, запрашивает закреплённые за&lt;br /&gt;
ним ресурсы и, как правило, «соглашается» с таким распределением.&lt;br /&gt;
Драйвер, используя функции ядра, может попытаться переопределить&lt;br /&gt;
ресурсы устройства. В этом случае за отсутствие возможных конфликтов отвечает ядро – оно просто не принимает адреса, конфликтующие с&lt;br /&gt;
другими устройствами.&lt;br /&gt;
&lt;br /&gt;
Драйверная модель требовала изменений. Прежде всего, устранению подлежали следующие недостатки ядра 2.4:&lt;br /&gt;
* отсутствие единого метода представления связей между драйверами (модулями ядра) и устройствами;&lt;br /&gt;
* отсутствие общего hotplug-механизма, единого для PnP-конфигурируемых устройств и устройств, подключаемых к независимым шинам, таким как USB или PCMCIA;&lt;br /&gt;
* загромождение procfs информацией, не имеющей отношения к процессам. Фактически такой, для хранения которой она изначально не предназначалась.&lt;br /&gt;
Вообще-то, говорить следовало бы прежде всего об изменениях в&lt;br /&gt;
архитектуре ядра и появлении новых объектов подсистемы обслуживания&lt;br /&gt;
устройств (kobjects), но это всё «дела ядерные». Для большинства же&lt;br /&gt;
пользователей наиболее заметным следствием внедрения новой драйверной модели стало появление sysfs – виртуальной файловой системы,&lt;br /&gt;
экспортирующей в пространство пользователя информацию ядра о присутствующих в системе устройствах и драйверах. Автором sysfs (ранее&lt;br /&gt;
именовавшейся driverfs) является Патрик Мошель (Patrick Mochel), а для&lt;br /&gt;
больших систем ее дорабатывал Маниш Сони (Maneesh Sony).&lt;br /&gt;
&lt;br /&gt;
Если вернуться к вышеперечисленным недостаткам ядра 2.4, то&lt;br /&gt;
можно сказать, что первые два устраняются благодаря тому, что информация как об устройствах, так и о загруженных драйверах, представляется в рамках одной файловой системы. Причём в список устройств включаются устройства на всех шинах IBM PC. procfs же разгружается потому, что sysfs монтируется не как подкаталог /proc, а как каталог /sys.&lt;br /&gt;
&lt;br /&gt;
sysfs не может быть модулем, она всегда – часть ядра. Для обеспечения доступа к ней нужно выполнить команду mount -t sysfs sysfs /sys. Обычно это монтирование выполняется первым же стартовым&lt;br /&gt;
скриптом.&lt;br /&gt;
&lt;br /&gt;
Существует непосредственная связь между sysfs и объектами инфраструктуры ядра. Всем зарегистрированным системой объектам инфраструктуры (тем самым kobjects) в /sys соответствуют свои каталоги.&lt;br /&gt;
Форма дерева каталогов, берущего своё начало в /sys, максимально&lt;br /&gt;
точно соответствует соотношению между объектами. Активно используемые символические ссылки делают это дерево несколько «развесистым», но зато отражают отношения наследования и связи между&lt;br /&gt;
объектами в максимальной степени.&lt;br /&gt;
&lt;br /&gt;
Если каждое устройство или драйвер – каталог, то файлы каталогов – атрибуты этих объектов. Таким образом, sysfs превращает операции ввода/вывода для этих файлов в методы атрибутов объектов ядра.&lt;br /&gt;
Операции записи/чтения атрибутов kobjects становятся такими же&lt;br /&gt;
доступными, как операции записи и чтения файлов.&lt;br /&gt;
&lt;br /&gt;
Файлы атрибутов – текстовые. Существует правило, в соответствии&lt;br /&gt;
с которым одному атрибуту соответствует один файл. Поскольку хранение по одному значению в файле может оказаться неэффективным, то&lt;br /&gt;
«на будущее» приветствуется выражение атрибутов в форме массива&lt;br /&gt;
значений одного типа. Нужно сказать, что sysfs родилась не на пустом&lt;br /&gt;
месте, и если информация о связях объектов ядра – это, действительно,&lt;br /&gt;
новость, то большую часть атрибутов устройств можно было получить и&lt;br /&gt;
в «старой» /proc/sys. Файлы атрибутов в /sys, однако, существенно&lt;br /&gt;
отличаются от файлов procfs, синтаксический анализ содержимого&lt;br /&gt;
которых мог быть довольно сложным.&lt;br /&gt;
&lt;br /&gt;
Структура sysfs выражает соотношения структур данных ядра.&lt;br /&gt;
Названия подкаталогов /sys говорят сами за себя:&lt;br /&gt;
* devices/ – полностью соответствует внутреннему дереву устройств ядра, а символические ссылки в подкаталогах (когда они есть, разумеется) указывают на шину устройства, принадлежность его к определённому классу, соответствующий загруженный драйвер и т.п. Дерево может быть достаточно сложным и отражает связь между устройствами;&lt;br /&gt;
* bus/ – представляет собой перечень шин, зарегистрированных в ядре. Каталог каждой шины содержит подкаталоги devices/ и drivers/. Причём,&lt;br /&gt;
* devices/ – это символические ссылки на каталоги устройств, описанных в системе (реально расположенных в /sys/devices/...);&lt;br /&gt;
* drivers/ – каталоги драйверов, загруженных для устройств, подключенных к данной шине. Каждый такой каталог содержит, как минимум, пару файлов-атрибутов bind и unbind, предназначенных для управления драйвером (см. [[LXF73:Вскрываем ядро|LXF73]]), а когда драйвер обнаруживает «своё» устройство, то в каталоге появляется символическая ссылка на каталог этого устройства.&lt;br /&gt;
* block/ содержит каталоги всех блочных устройств, присутствующих в настоящее время в системе. В данном случае под устройством понимается совокупность физического устройства и драйвера. То есть, если при подключении USB-накопителя некоторое новое устройство в /sys/devices/ появится всегда (можно говорить о наличии физического устройства), то появление каталога /sys/block/sda зависит ещё и от наличия в памяти необходимых драйверов (usb-storage, sd_mod и т.д. – включая все драйвера, необходимые для поддержки usb);&lt;br /&gt;
* class/ – отражает группировку устройств в классы. Всякое подключенное устройство создаст новый подкаталог в дереве /sys/class. Как и в предыдущем случае, подразумевается наличие и устройства, и его драйвера;&lt;br /&gt;
* остальные каталоги могут быть очень полезны. Так, в module/ можно узнать атрибуты, а в некоторых случаях даже изменить параметры загруженных модулей. Через файлы power/ осуществляется перевод системы в режим suspend, но к определению оборудования содержимое остальных каталогов отношения уже не имеет.&lt;br /&gt;
Более детальную информацию об особенностях модели драйверов при желании можно найти в файлах каталога /usr/src/linux/&lt;br /&gt;
Documentation/driver-model. Обширной, однако, её пока не&lt;br /&gt;
назовёшь. Да и вообще, нельзя сказать, что информация в /sys предназначена для «простых пользователей». Sysfs используется системными утилитами, такими, как udev и HAL, обеспечивая их доступом к&lt;br /&gt;
информации об устройствах и их драйверах. Модифицируя атрибуты&lt;br /&gt;
устройств и драйверов, udev и HAL теперь могут даже изменять конфигурацию последних.&lt;br /&gt;
&lt;br /&gt;
=== Что из этого следует? ===&lt;br /&gt;
Из того факта, что существование sysfs, в принципе, может быть&lt;br /&gt;
проигнорировано «простым» пользователем, совершенно не следует, что новая драйверная модель не отражается на «повседневном»&lt;br /&gt;
использовании Linux. Окончательный переход на ядро 2.6 влечёт за&lt;br /&gt;
собой неминуемое изменение архитектуры дистрибутивов, предлагаемых их разработчиками. Внешние изменения в системе управления&lt;br /&gt;
загрузкой модулей (новые расширения файлов модулей, modprobe.&lt;br /&gt;
conf вместо modules.conf) отнюдь не случайны: они введены для&lt;br /&gt;
обеспечения возможности временного сосуществования старой и новой&lt;br /&gt;
моделей.&lt;br /&gt;
&lt;br /&gt;
Вслед за вышеупомянутыми udev и HAL (ближайшими к драйверной модели ядра утилитами), изменения косаются определителей оборудования, инсталляторов, LiveCD – всех, кому приходится заниматься&lt;br /&gt;
конфигурацией системы.&lt;br /&gt;
&lt;br /&gt;
На настоящий момент загрузка драйверов для постоянно присутствующего в системе оборудования обеспечивается либо командами&lt;br /&gt;
«modprobe module_name» в стартовых скриптах, либо строками&lt;br /&gt;
«alias string module_name» в modprobe.conf, либо принудительным запуском hotplug (т.наз. coldplug, когда hotplug-события синтезируются в ходе загрузки системы), либо комбинацией всех трёх способов. За загрузку драйверов для подключаемых «на ходу» устройств,&lt;br /&gt;
отвечает, обычно, hotplug. Тот же hotplug генерирует события для&lt;br /&gt;
udev, заставляя последний создавать для вновь появившегося устройства файл в /dev. Всё это, разумеется, происходит при участии ядра.&lt;br /&gt;
Интерфейсом же между ядром и утилитами является, как вы, наверное,&lt;br /&gt;
догадываетесь, sysfs.&lt;br /&gt;
&lt;br /&gt;
Новая драйверная модель и рост вычислительных возможностей&lt;br /&gt;
IBM PC делают возможным упрощение этой схемы. Судите сами: что&lt;br /&gt;
такое десяток-другой килобайт модуля драйвера для ЭВМ с гигабайтом&lt;br /&gt;
памяти? Так почему бы не загрузить модули «с запасом»? udev/HAL&lt;br /&gt;
останется только создавать в /dev соответствующий файл при подключении устройства, hotplug же, таким образом, становится вообще&lt;br /&gt;
не нужен.&lt;br /&gt;
&lt;br /&gt;
Ещё один вариант: возложить на udev обработку hotplug-событий.&lt;br /&gt;
Почему бы не устранить промежуточное звено, тем более, что стиль&lt;br /&gt;
управления работой udev представляется более гибким? Очевидно, всё&lt;br /&gt;
определяется назначением целевой системы. Так, домашний компьютер&lt;br /&gt;
стоит настроить «вручную», поскольку потеря времени на определение&lt;br /&gt;
устройств при каждой загрузке раздражает («ну что ты там ищешь?&lt;br /&gt;
ничего нового за ночь не выросло»), а LiveCD должен определять оборудование «с нуля».&lt;br /&gt;
&lt;br /&gt;
=== Практикум ===&lt;br /&gt;
В качестве практикума предлагаю посредством анализа /sys рассмотреть программную поддержку ide-устройств. Наиболее полно дерево&lt;br /&gt;
устройств представлено, как уже говорилось, в каталоге /sys/devices.&lt;br /&gt;
Однако полнота представления может быть и утомительной. Поэтому,&lt;br /&gt;
оставив в стороне каталоги /sys/block и /sys/class (их содержимое&lt;br /&gt;
зависит как от наличия собственно устройств, так и от присутствия&lt;br /&gt;
драйверов, а хотелось бы пройти весь путь исключительно от «железа»),&lt;br /&gt;
сосредоточимся на /sys/bus.&lt;br /&gt;
&lt;br /&gt;
Переходим в подкаталог ide/. Поскольку управлять контроллерами&lt;br /&gt;
через sysfs мы не планируем, то интересовать нас будут исключительно каталоги. Набираем: tree -d (ключ -d отфильтровывает файлы) – и&lt;br /&gt;
вот, что мы имеем:&lt;br /&gt;
&amp;lt;pre&amp;gt;.&lt;br /&gt;
|-- devices&lt;br /&gt;
| |-- 0.0 -&amp;gt; ../../../devices/pci0000:00/0000:00:1f.1/ide0/0.0&lt;br /&gt;
| `-- 0.1 -&amp;gt; ../../../devices/pci0000:00/0000:00:1f.1/ide0/0.1&lt;br /&gt;
`-- drivers&lt;br /&gt;
    |-- ide-cdrom&lt;br /&gt;
    |-- ide-disk&lt;br /&gt;
    | `-- 0.0 -&amp;gt; ../../../../devices/pci0000:00/0000:00:1f.1/ide0/0.0&lt;br /&gt;
    `-- ide-scsi&lt;br /&gt;
      `-- 0.1 -&amp;gt; ../../../../devices/pci0000:00/0000:00:1f.1/ide0/0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
«Стрелочки», как вы, вероятно, догадались, обозначают символические ссылки. Анализ прост до примитивности: имеем два ide-устройства и три драйвера. О том, что одно из устройств – диск, а второе – CDROM,&lt;br /&gt;
также говорить излишне. То, что драйвер ide-disk обслуживает&lt;br /&gt;
винчестер – естественно, а вот то, что CD-ROM обслуживается драйвером ide-scsi, уже представляет некоторый интерес. И не потому, что CDROM&lt;br /&gt;
на самом деле подключен к шине IDE (cdrecord рекомендует эмулировать ide-cdrom как scsi-устройство), а потому, что, если память не&lt;br /&gt;
изменяет, ядро 2.6 советует от этой эмуляции уже отказаться. Отметим&lt;br /&gt;
это обстоятельство (нужно будет попробовать) и отправимся по ссылке ../../../devices/pci0000:00/0000:00:1f.1/ide0/0.0, поскольку&lt;br /&gt;
в /sys/bus/ide ничего интересного больше нет. «По пути» к этому&lt;br /&gt;
каталогу советую внимательно «смотреть по сторонам». Так мы узнаем, что контроллер ide «сидит» на шине PCI (о чём и так можно было&lt;br /&gt;
догадаться) и имеет идентификатор 0000:00:1f.1. Способ формирования&lt;br /&gt;
идентификатора особого интереса не представляет, да и потребуется&lt;br /&gt;
он только в том случае, если мы захотим сопоставить наблюдаемые&lt;br /&gt;
данные с результатом вывода упоминавшейся выше lspci. В каталоге&lt;br /&gt;
/sys/devices/pci0000:00/0000:00:1f.1/ исследовав символические&lt;br /&gt;
ссылки, можно узнать, что драйвер, используемый PCI-контроллером, –&lt;br /&gt;
PIIX_IDE. Спустившись в ide0, увидим, что контроллер этот обслуживает два устройства, младшее из которых (0.0) и является винчестером.&lt;br /&gt;
Символические ссылки указывают на то, что устройство идентифицируется в системе как /dev/hda, принадлежит шине ide и обслуживается&lt;br /&gt;
драйвером ide-disk. Последовав по символической ссылке block/,&lt;br /&gt;
можно получить данные о разметке диска.&lt;br /&gt;
&lt;br /&gt;
Аналогичный поход для CD-ROM приведёт нас к устройству&lt;br /&gt;
ide0/0.1, которое окажется scsi (а что ещё можно было ожидать от&lt;br /&gt;
драйвера ide-scsi?). В соответствии с архитектурой scsi, мы обнаружим host0 (принадлежащий классу scsi_host, разумеется). host0, в&lt;br /&gt;
свою очередь, содержит target0:0:0, единственное устройство которого (0:0:0:0) и является нашим CD-ROM. Он принадлежит шине scsi,&lt;br /&gt;
идентифицируется в системе как /dev/sr0, обслуживается драйвером&lt;br /&gt;
sr и входит в класс scsi_generic с именем sg0. Перебрав атрибуты,&lt;br /&gt;
можно найти и модель, и тип, и производителя привода. Пожалуй, этого достаточно. Прошу прощения, если утомил. Зато, надеюсь, убедил&lt;br /&gt;
в том, что sysfs предоставляет предостаточно информации для того,&lt;br /&gt;
чтобы идентифицировать устройство, определить модули, которые&lt;br /&gt;
обеспечивают его программную поддержку и определить положение в&lt;br /&gt;
дереве устройств.&lt;br /&gt;
&lt;br /&gt;
И ещё один пример для самых любознательных. На сей раз – более&lt;br /&gt;
полезный.&lt;br /&gt;
&lt;br /&gt;
Предлагаю попытаться подключить, скажем, USB-IrDA Bridge&lt;br /&gt;
неизвестного производителя из одной большой восточной страны. USBIrDA&lt;br /&gt;
Bridge – это такая штуковина, которая, будучи подключенной к&lt;br /&gt;
USB-разъёму, эмулирует ИК-порт. Для связи с мобильным телефоном,&lt;br /&gt;
например. Ни о каком драйвере производителя и речи быть не может,&lt;br /&gt;
да и опознавательных знаков всего два: «IrDA» и «Made in China».&lt;br /&gt;
Итак...&lt;br /&gt;
&lt;br /&gt;
Начать, как и в предыдущем случае, предлагаю с /sys/bus.&lt;br /&gt;
Интересующий каталог, разумеется – usb/. Поскольку драйвер для&lt;br /&gt;
моего «подопытного» в системе заведомо отсутствует, то переходим&lt;br /&gt;
сразу в каталог devices/. USB-контроллеры, коих у меня обнаружилось&lt;br /&gt;
целых пять, представляют из себя эдакие «дуальные» устройства: с&lt;br /&gt;
одной стороны это мосто между шинами PCI и USB, а с другой – первое&lt;br /&gt;
устройство на USB-шине, называемое, обычно, корневым концентратором (root hub). Оба «лица» представлены в каталоге /sys/bus/usb/devices/ в виде символических ссылок. Мосты имеют «собственные»&lt;br /&gt;
имена (usb1..usb5), а все hub-ы (как, впрочем и остальные устройства, подключаемые к usb-шине) представлены численными идентификаторами вида N-P:С.I, где N – номер моста (он же – номер hub-а),&lt;br /&gt;
P – номер порта hub-а, вообще-то соответствующий определённому&lt;br /&gt;
usb-разъёму, а для самого hub-а всегда равный нулю. C – номер конфигурации и I – номер интерфейса. Мосты обнаруживаются драйвером&lt;br /&gt;
usb, hub-ы – драйвером hub.&lt;br /&gt;
&lt;br /&gt;
Любое подключение usb-устройства приводит к появлению в каталоге новых ссылок. Так, в частности, подключение «подопытного»&lt;br /&gt;
устройства привело к появлению ссылки 2-1:1.0, что означает: к первому порту второго hub-а подключено устройство, конфигурация – 1,&lt;br /&gt;
интерфейс – 0. Переход в каталог этого устройства подтвердит, что&lt;br /&gt;
нужный драйвер не загружен – ссылки driver не существует. Теперь&lt;br /&gt;
попытаемся применить подход, описанный для сетевых карт: командой modprobe последовательно загружаем модули из каталога /lib/modules/2.6.15/kernel/drivers/net/irda, благо их там пока всего 12.&lt;br /&gt;
Если повезёт, то после загрузки очередного модуля (в моём случае это&lt;br /&gt;
оказался stir4200) ссылка driver появится. Более того, в моём случае&lt;br /&gt;
появилась ссылка net:irda0, что говорит о том, что в системе обнаружено устройство класса net с именем irda0. С чем себя и поздравляю.&lt;br /&gt;
Это, правда, не означает, что вы тут же сможете подключить и&lt;br /&gt;
мобильный телефон: пока это только основание для уверенности, что&lt;br /&gt;
связь по ИК-каналу между телефоном и вашей Linux-системой возможна. Однако, это уже совсем другая история...&lt;br /&gt;
&lt;br /&gt;
=== Выводы ===&lt;br /&gt;
Драйверная модель ядра Linux версии 2.6.х предоставляет, без сомнения, новые возможности для определения оборудования. В некоторых&lt;br /&gt;
случаях можно говорить о новом подходе к написанию инсталляторов&lt;br /&gt;
и LiveCD. Можно также рассчитывать на увеличение количества модулей поддержки оборудования в составе ядра, поскольку одной из целей&lt;br /&gt;
внедрения модели было упрощение разработки драйверов.&lt;br /&gt;
&lt;br /&gt;
С другой стороны, мне кажется, что в данном случае, вслед за разработчиками ядра, приверженцы Linux выбирают «не Windows-way». С&lt;br /&gt;
новыми возможностями ядра специалист получит дополнительные возможности для оптимизации системы, а «простой пользователь» опять&lt;br /&gt;
станет заложником создателей дистрибутивов – как скоро (и насколько&lt;br /&gt;
успешно) они интегрируют эти самые возможности.&lt;br /&gt;
&lt;br /&gt;
Иными словами, Linux продолжает развиваться в направлении предоставления больших возможностей для создания систем различного&lt;br /&gt;
назначения и сложности, а не как система, ориентированная на конечного пользователя офисного или домашнего компьютера. Последнего,&lt;br /&gt;
будем надеяться, порадуют своими разработками составители «пользователь-ориентированных» дистрибутивов – ведь расширение возможностей системы означает и большие возможности для создания идеального настольного компьютера. Но не будем требовать от них слишком&lt;br /&gt;
многого: динамично развивающееся ядро в который раз заставляет&lt;br /&gt;
пересматривать архитектуру системы.&lt;/div&gt;</description>
			<pubDate>Fri, 16 Jan 2009 11:49:16 GMT</pubDate>			<dc:creator>Yaleks</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF77:sysfs</comments>		</item>
	</channel>
</rss>