OSDN Git Service

clfs-3.0.0-sysvinit.
[clfsja/cross-lfs-ja.git] / src / system-config / common / eudev.ch
1 %
2 % This is part of CLFSja package.
3 %
4 % This is a CTIE change file for the original XML source of the CLFSbook.
5 %
6 @x
7 <?xml version="1.0" encoding="ISO-8859-1"?>
8 @y
9 <?xml version="1.0" encoding="UTF-8"?>
10 @z
11
12 @x
13   <title>Device and Module Handling on a CLFS System</title>
14 @y
15   <title>デバイスとモジュールの扱いについて</title>
16 @z
17
18 @x
19     <secondary>usage</secondary>
20 @y
21     <secondary>利用方法</secondary>
22 @z
23
24 @x
25   <para>In <xref linkend="chapter-building-system"/>, we installed the Eudev
26   package. Before we go into the details regarding how this works,
27   a brief history of previous methods of handling devices is in
28   order.</para>
29 @y
30   <para>
31   <xref linkend="chapter-building-system"/>にて Eudev パッケージをインストールしました。
32   このパッケージがどのように動作するかの詳細を説明する前に、デバイスを取り扱うかつての方法について順を追って説明していきます。
33   </para>
34 @z
35
36 @x
37     <title>History</title>
38 @y
39     <title>開発経緯</title>
40 @z
41
42 @x
43       <title>Static Device Nodes</title>
44 @y
45       <title>スタティックデバイスノード</title>
46 @z
47
48 @x
49       <para>Linux systems in general traditionally use a static device creation
50       method, whereby a great many device nodes are created under <filename
51       class="directory">/dev</filename> (sometimes literally thousands of
52       nodes), regardless of whether the corresponding hardware devices actually
53       exist. This is typically done via a <command>MAKEDEV</command> script,
54       which contains a number of calls to the <command>mknod</command> program
55       with the relevant major and minor device numbers for every possible
56       device that might exist in the world.</para>
57 @y
58       <para>
59       Linux システムは一般に、スタティックなデバイス生成方法を採用していました。
60       この方法では <filename class="directory">/dev</filename> のもとに膨大な量の (場合によっては何千にもおよぶ) デバイスノードが生成されます。
61       現実に存在するハードウェアデバイスが存在するかどうかに関わらずです。
62       これは <command>MAKEDEV</command> スクリプトを通じて生成されます。
63       このスクリプトからは <command>mknod</command> プログラムが呼び出されますが、その呼び出しは、この世に存在するありとあらゆるデバイスのメジャー/マイナー番号を用いて行われます。
64       </para>
65 @z
66
67 @x
68       <title>Devfs</title>
69 @y
70       <title>Devfs ファイルシステム</title>
71 @z
72
73 @x
74       <para>In February 2000, a new filesystem called <systemitem
75       class="filesystem">devfs</systemitem>, which dynamically created device
76       nodes as devices were found by the kernel, was merged into the
77       2.3.46 kernel and was made available during the 2.4 series of stable
78       kernels. Although it was present in the kernel source itself, this method
79       of creating devices dynamically never received overwhelming support from
80       the core kernel developers.</para>
81 @y
82       <para>
83       2000年2月に新しいファイルシステム <systemitem
84       class="filesystem">devfs</systemitem> がカーネル 2.3.46 に導入され、2.4系の安定版カーネルにて利用できるようになりました。
85       このファイルシステムはカーネルのソース内に含まれ実現されていましたが、デバイスを動的に生成するこの手法は、主要なカーネル開発者の十分な支援は得られませんでした。
86       </para>
87 @z
88
89 @x
90       <para>The main problem with the approach adopted by <systemitem
91       class="filesystem">devfs</systemitem> was the way it handled device
92       detection, creation, and naming. The latter issue, that of device node
93       naming, was perhaps the most critical. It is generally accepted that if
94       device names are allowed to be configurable, then the device naming policy
95       should be up to a system administrator, not imposed on them by any
96       particular developer(s). The <systemitem
97       class="filesystem">devfs</systemitem> file system also suffered from race
98       conditions that were inherent in its design and could not be fixed without
99       a substantial revision to the kernel. It was marked deprecated with the
100       release of the 2.6 kernel series, and was removed entirely as of version
101       2.6.18.</para>
102 @y
103       <para>
104       <systemitem class="filesystem">devfs</systemitem> が採用した手法で問題になるのは、主にデバイスの検出、生成、命名の方法です。
105       特にデバイスの命名方法がおそらく最も重大な問題です。
106       一般的に言えることとして、デバイス名が変更可能であるならデバイス命名の規則はシステム管理者が考えることであって、特定の開発者に委ねるべきことではありません。
107       また <systemitem class="filesystem">devfs</systemitem> にはその設計に起因した競合の問題があるため、根本的にカーネルを修正しなければ解消できる問題ではありません。
108       そこでカーネル 2.6 系において保守されることがなかったために非推奨 (deprecated) として位置づけられ、最終的にカーネル 2.6.18 から取り除かれました。
109       </para>
110 @z
111
112 @x
113       <title>Sysfs</title>
114 @y
115       <title>Sysfs ファイルシステム</title>
116 @z
117
118 @x
119       <para>With the development of the unstable 2.5 kernel tree, later released
120       as the 2.6 series of stable kernels, a new virtual filesystem called
121       <systemitem class="filesystem">sysfs</systemitem> came to be. The job of
122       <systemitem class="filesystem">sysfs</systemitem> is to export a view of
123       the system's hardware configuration to userspace processes. Drivers that
124       have been compiled into the kernel directly register their objects with
125       <systemitem class="filesystem">sysfs</systemitem> as they are detected by
126       the kernel. For drivers compiled as modules, this registration will happen
127       when the module is loaded. Once the <systemitem
128       class="filesystem">sysfs</systemitem> filesystem is mounted (on <filename
129       class="directory">/sys</filename>), data which the built-in drivers
130       registered with <systemitem class="filesystem">sysfs</systemitem> are
131       available to userspace processes. With this userspace-visible
132       representation, the possibility of seeing a userspace replacement for
133       <systemitem class="filesystem">devfs</systemitem> became much more
134       realistic.</para>
135 @y
136       <para>
137       開発版の 2.5 系カーネルと、後にリリースされた安定版のカーネル 2.6 系を経て、新しい仮想ファイルシステム <systemitem
138       class="filesystem">sysfs</systemitem> が登場しました。
139       <systemitem class="filesystem">sysfs</systemitem> が実現したのは、システムのハードウェア設定をユーザー空間のプロセスとして表に出したことです。
140       カーネルに直接組み込まれて構築されたドライバーの場合は、対象のオブジェクトをカーネルが検出し、そのオブジェクトを <systemitem
141       class="filesystem">sysfs</systemitem> に登録します。
142       モジュールとしてコンパイルされたドライバーの場合は、その登録がモジュールのロード時に行われます。
143       <systemitem class="filesystem">sysfs</systemitem> ファイルシステムが (<filename
144       class="directory">/sys</filename> に) マウントされると、ドライバーによって <systemitem
145       class="filesystem">sysfs</systemitem> に登録されたデータは、ユーザー空間のプロセスにて利用可能となります。
146       ユーザー空間での設定を可視化したことによって <systemitem class="filesystem">devfs</systemitem> が為していたことを、ユーザー空間にて開発することが可能になったわけです。
147       </para>
148 @z
149
150 @x
151       <title>Udev Implementation</title>
152 @y
153       <title>Udev の実装</title>
154 @z
155
156 @x
157       <para>Shortly after the introduction of
158       <systemitem class="filesystem">sysfs</systemitem>, work began on a
159       program called Udev to advantage of it. The <command>udev</command>
160       daemon made calls to <function>mknod()</function> to create device nodes
161       in <filename class="directory">/dev</filename> dynamically, based on the
162       information from <systemitem class="filesystem">sysfs</systemitem>, in
163       <filename class="directory">/sys</filename>. For example,
164       <filename>/sys/class/tty/vcs/dev</filename> contains the string
165       <quote>7:0</quote>. This string was used by <command>udev</command>
166       to create a device node with major number <emphasis>7</emphasis> and
167       minor number <emphasis>0</emphasis>.</para>
168 @y
169       <!--
170       日本語訳註: matsuand
171       daemon made calls... の made はなぜ過去形?
172       -->
173       <para>
174       <systemitem class="filesystem">sysfs</systemitem> の概要を示しましたが、さっそくながら Udev の話に入ります。
175       Udev には優位な特徴があります。
176       <command>udev</command> デーモンが <function>mknod()</function> を呼び出すことによりファイルシステム <systemitem
177       class="filesystem">sysfs</systemitem> の <filename
178       class="directory">/sys</filename> ディレクトリにある情報に基づいて <filename
179       class="directory">/dev</filename> 内に動的にデバイスノードを生成します。
180       例えば <filename>/sys/class/tty/vcs/dev</filename> というファイルには<quote>7:0</quote>という文字列が含まれています。
181       この文字列を <command>udev</command> が読み取り、メジャー番号 <emphasis>7</emphasis> 、マイナー番号 <emphasis>0</emphasis> のデバイスノードを生成します。
182       </para>
183 @z
184
185 @x
186       <para>Linux kernel version 2.6.32 introduced a new virtual file system
187       called <systemitem class="filesystem">devtmpfs</systemitem>, an improved
188       replacement for <systemitem class="filesystem">devfs</systemitem>. This
189       allows device nodes to once again be dynamically created by the kernel,
190       without many of the problems of
191       <systemitem class="filesystem">devfs</systemitem>. As of version 176,
192       Udev no longer creates device nodes itself, instead relying on
193       <systemitem class="filesystem">devtmpfs</systemitem> to do so.</para>
194 @y
195       <para>
196       Linux カーネル 2.6.32 になって新たに仮想ファイルシステム <systemitem
197       class="filesystem">devtmpfs</systemitem> が導入されました。
198       これは <systemitem class="filesystem">devfs</systemitem> を改良したものです。
199       これによって数々の <systemitem
200       class="filesystem">devfs</systemitem> 上での問題は解消され、カーネルによって何度でもデバイスノードを再生成できるようにもなりました。
201       Udev 176 以降、Udev はデバイスノード自体は生成しなくなり、<systemitem
202       class="filesystem">devtmpfs</systemitem> がそれを行うようになりました。
203       </para>
204 @z
205
206 @x
207       <title>Systemd and Eudev</title>
208 @y
209       <title>Systemd と Eudev</title>
210 @z
211
212 @x
213         <para>In 2010, development began on systemd, an alternate
214         <command>init</command> implementation. Starting with Udev 183, Udev's
215         source tree was merged with systemd. Several Gentoo
216         developers who disagreed with this merge announced a project fork
217         called Eudev in December 2012, created by extracting the
218         Udev code from systemd. One of the goals of Eudev is to allow for
219         easier installation and usage of <command>udevd</command> without
220         the need for the rest of systemd.</para>
221 @y
222         <para>
223         2010年になると systemd が開発されるようになりました。
224         これは <command>init</command> に代わるものです。
225         Udev 183 からは、そのソースが systemd にマージされます。
226         Gentoo 開発者の中にこのマージに反対する方々がおり、2012年12月にプロジェクトをフォークして Eudev の開発に分かれました。
227         そこでは Systemd から Udev のコード部分を抜き出して開発が進められています。
228         Eudev の開発目標は <command>udevd</command> のインストールもその利用も簡易なものとすることです。
229         そしてそれが Systemd の他の機能部分の助けを得ることなく実現できることです。
230         </para>
231 @z
232
233 @x
234     <title>Device Node Creation</title>
235 @y
236     <title>デバイスノードの生成</title>
237 @z
238
239 @x
240     <para>By default, device nodes created by the kernel in a
241     <systemitem class="filesystem">devtmpfs</systemitem> are owned by
242     <emphasis>root:root</emphasis> and have <emphasis>600</emphasis>
243     permissions. <command>udevd</command> can modify ownership and permissions
244     of the nodes under the <filename class="directory">/dev</filename>
245     directory, and can also create additional symlinks, based on rules
246     specified in the files within the
247     <filename class="directory">/etc/udev/rules.d</filename>,
248     <filename class="directory">/lib/udev/rules.d</filename>,
249     and <filename class="directory">/run/udev/rules.d</filename> directories.
250     The names for these files start with a number, to indicate the order in
251     which they are run, and they have a <filename>.rules</filename>
252     extension (<command>udevd</command> will ignore files with any other
253     extension). All of the rules files from these directories are combined into
254     a single list, sorted by filename, and run in that order. In the event of
255     a conflict, where a rules file with the same name exists in two or more of
256     these directories, the rules in <filename class="directory">/etc</filename>
257     take the highest priority, followed by rules files in
258     <filename class="directory">/run</filename>, and finally
259     <filename class="directory">/lib</filename>. Any device for which a rule
260     cannot be found will just be ignored by <command>udevd</command>
261     and be left at the defaults defined by the kernel, as described above. <!-- For
262     more details about writing Udev rules, see
263     <command>man 7 udev</command>. --></para>
264 @y
265     <para>
266     デバイスノードはカーネルにより <systemitem
267     class="filesystem">devtmpfs</systemitem> ファイルシステム内に作り出されます。
268     デフォルトでデバイスノードの所有者は <emphasis>root:root</emphasis> でありパーミッションは <emphasis>600</emphasis> です。
269     <command>udevd</command> は <filename class="directory">/dev</filename> 内のノードについてその所有とパーミッションを変更できます。
270     また <filename class="directory">/etc/udev/rules.d</filename>,
271     <filename class="directory">/lib/udev/rules.d</filename>,
272     <filename class="directory">/run/udev/rules.d</filename> の各ディレクトリ内にあるファイルが示す規則に基づいて、シンボリックリンクを追加することができます。
273     この規則を示すファイルの名前は数字で始まります。
274     その数値が実行順を表わします。
275     そして <filename>.rules</filename> という拡張子を持ちます。
276     (Udev はこれ以外の拡張子は無視します。)
277     各ディレクトリ内のこの規則ファイルは名前順に並び替えられ一つのリストとして統合されて、その順に実行されます。
278     上記ディレクトリのいずれかにて同一名称の規則ファイルが存在した場合は <filename
279     class="directory">/etc</filename> にある規則ファイルが最優先に扱われます。
280     次に <filename class="directory">/run</filename> にあるファイル、最後に <filename
281     class="directory">/lib</filename> にあるファイルが採用されます。
282     規則ファイルが見つからなかったデバイスは <command>udevd</command> が無視します。
283     そして上に示したようにカーネルにより定義されたデフォルト値のままとなります。
284     </para>
285 @z
286
287 @x
288     <title>Module Loading</title>
289 @y
290     <title>モジュールのロード</title>
291 @z
292
293 @x
294     <para>Device drivers compiled as modules may have aliases built into them.
295     Aliases are visible in the output of the <command>modinfo</command>
296     program and are usually related to the bus-specific identifiers of devices
297     supported by a module. For example, the <emphasis>snd-fm801</emphasis>
298     driver supports PCI devices with vendor ID 0x1319 and device ID 0x0801,
299     and has an alias of <quote>pci:v00001319d00000801sv*sd*bc04sc01i*</quote>.
300     For most devices, the bus driver exports the alias of the driver that
301     would handle the device via <systemitem
302     class="filesystem">sysfs</systemitem>. E.g., the
303     <filename>/sys/bus/pci/devices/0000:00:0d.0/modalias</filename> file
304     might contain the string
305     <quote>pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</quote>.
306     The default rules provided by Eudev will cause <command>udevd</command>
307     to call out to <command>/sbin/modprobe</command> with the contents of the
308     <envar>MODALIAS</envar> uevent environment variable (that should be the
309     same as the contents of the <filename>modalias</filename> file in sysfs),
310     thus loading all modules whose aliases match this string after wildcard
311     expansion.</para>
312 @y
313     <para>
314     モジュールとしてコンパイルされたデバイスドライバーの場合、デバイス名の別名が作り出されています。
315     その別名は <command>modinfo</command> プログラムを使えば確認することができます。
316     そしてこの別名は、モジュールがサポートするバス固有の識別子に関連づけられます。
317     例えば <emphasis>snd-fm801</emphasis> ドライバーは、ベンダーID 0x1319 とデバイスID 0x0801 の PCI ドライバーをサポートします。
318     そして<quote>pci:v00001319d00000801sv*sd*bc04sc01i*</quote>というエイリアスがあります。
319     たいていのデバイスでは、<systemitem class="filesystem">sysfs</systemitem> を通じてドライバーがデバイスを扱うものであり、ドライバーのエイリアスをバスドライバーが提供します。
320     <filename>/sys/bus/pci/devices/0000:00:0d.0/modalias</filename> ファイルならば<quote>pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</quote>という文字列を含んでいるはずです。
321     Eudev が提供するデフォルトの生成規則によって <command>udevd</command> から <command>/sbin/modprobe</command> が呼び出されることになり、その際には uevent に関する環境変数 <envar>MODALIAS</envar> の設定内容が利用されます。
322     (この環境変数の内容は sysfs 内の <filename>modalias</filename> ファイルの内容と同じはずです。)
323     そしてワイルドカードが指定されているならそれが展開された上で、エイリアス文字列に合致するモジュールがすべてロードされることになります。
324     </para>
325 @z
326
327 @x
328     <para>In this example, this means that, in addition to
329     <emphasis>snd-fm801</emphasis>, the obsolete (and unwanted)
330     <emphasis>forte</emphasis> driver will be loaded if it is
331     available. See below for ways in which the loading of unwanted drivers can
332     be prevented.</para>
333 @y
334     <para>
335     上の例で <emphasis>forte</emphasis> ドライバーがあったとすると、<emphasis>snd-fm801</emphasis> の他にそれもロードされてしまいます。
336     これは古いものでありロードされて欲しくないものです。
337     不要なドライバーのロードを防ぐ方法については後述しているので参照してください。
338     </para>
339 @z
340
341 @x
342     <para>The kernel itself is also able to load modules for network
343     protocols, filesystems and NLS support on demand.</para>
344 @y
345     <para>
346     カーネルは、ネットワークプロトコル、ファイルシステム、NLS サポートといった各種モジュールも、要求に応じてロードすることもできます。
347     </para>
348 @z
349
350 @x
351     <title>Problems with Loading Modules and Creating Devices</title>
352 @y
353     <title>モジュールロードとデバイス生成の問題</title>
354 @z
355
356 @x
357     <para>There are a few possible problems when it comes to automatically
358     creating device nodes.</para>
359 @y
360     <para>
361     自動的にデバイスが生成される際には、いくつか問題が発生します。
362     </para>
363 @z
364
365 @x
366       <title>A kernel module is not loaded automatically</title>
367 @y
368       <title>カーネルモジュールが自動的にロードされない問題</title>
369 @z
370
371 @x
372       <para>Eudev will only load a module if it has a bus-specific alias and the
373       bus driver properly exports the necessary aliases to <systemitem
374       class="filesystem">sysfs</systemitem>. In other cases, one should
375       arrange module loading by other means. With Linux-&linux-version2;, Eudev
376       is known to load properly-written drivers for INPUT, IDE, PCI, USB, SCSI,
377       SERIO and FireWire devices.</para>
378 @y
379       <para>
380       Eudev がモジュールをロードできるためには、バス固有のエイリアスがあって、バスドライバーが <systemitem
381       class="filesystem">sysfs</systemitem> に対して適切なエイリアスを提供していることが必要です。
382       そうでない場合は、別の手段を通じてモジュールのロードを仕組まなければなりません。
383       Linux-&linux-version2; においての Eudev は、INPUT、IDE、PCI、USB、SCSI、SERIO、FireWire の各デバイスに対するドライバーをロードします。
384       それらのデバイスドライバーが適切に構築されているからです。
385       </para>
386 @z
387
388 @x
389       <para>To determine if the device driver you require has the necessary
390       support for Eudev, run <command>modinfo</command> with the module name as
391       the argument.  Now try locating the device directory under
392       <filename class="directory">/sys/bus</filename> and check whether there is
393       a <filename>modalias</filename> file there.</para>
394 @y
395       <para>
396       目的のデバイスドライバーが Eudev に対応しているかどうかは、<command>modinfo</command> コマンドに引数としてモジュール名を与えて実行します。
397       <filename class="directory">/sys/bus</filename> ディレクトリ配下にあるそのデバイス用のディレクトリを見つけ出して、<filename>modalias</filename> ファイルが存在しているかどうかを見ることで分かります。
398       </para>
399 @z
400
401 @x
402       <para>If the <filename>modalias</filename> file exists in <systemitem
403       class="filesystem">sysfs</systemitem>, the driver supports the device and
404       can talk to it directly, but doesn't have the alias, it is a bug in the
405       driver. Load the driver without the help from Eudev and expect the issue
406       to be fixed later.</para>
407 @y
408       <para>
409       <systemitem class="filesystem">sysfs</systemitem> に <filename>modalias</filename> ファイルが存在しているなら、そのドライバーはデバイスをサポートし、デバイスとの直接のやり取りが可能であることを表します。
410       ただしエイリアスを持っていなければ、それはドライバーのバグです。
411       その場合は Eudev に頼ることなくドライバーをロードするしかありません。
412       そしてそのバグが解消されるのを待つしかありません。
413       </para>
414 @z
415
416 @x
417       <para>If there is no <filename>modalias</filename> file in the relevant
418       directory under <filename class="directory">/sys/bus</filename>, this
419       means that the kernel developers have not yet added modalias support to
420       this bus type. With Linux-&linux-version2;, this is the
421       case with ISA busses. Expect this issue to be fixed in later kernel
422       versions.</para>
423 @y
424       <para>
425       <filename class="directory">/sys/bus</filename> ディレクトリ配下の対応するディレクトリ内に <filename>modalias</filename> ファイルがなかったら、これはカーネル開発者がそのバス形式に対する modalias のサポートをまだ行っていないことを意味します。
426       Linux-&linux-version2; では ISA バスがこれに該当します。
427       最新のカーネルにて解消されることを願うしかありません。
428       </para>
429 @z
430
431 @x
432       <para>Eudev is not intended to load <quote>wrapper</quote> drivers such as
433       <emphasis>snd-pcm-oss</emphasis> and non-hardware drivers such as
434       <emphasis>loop</emphasis> at all.</para>
435 @y
436       <para>
437       Eudev は <emphasis>snd-pcm-oss</emphasis> のような<quote>ラッパー (wrapper)</quote>ドライバーや <emphasis>loop</emphasis> のような、現実のハードウェアに対するものではないドライバーは、ロードすることができません。
438       </para>
439 @z
440
441 @x
442       <title>A kernel module is not loaded automatically, and Eudev is not
443       intended to load it</title>
444 @y
445       <title>
446       カーネルモジュールが自動的にロードされず Eudev もロードしようとしない問題
447       </title>
448 @z
449
450 @x
451       <para>If the <quote>wrapper</quote> module only enhances the functionality
452       provided by some other module (e.g., <emphasis>snd-pcm-oss</emphasis>
453       enhances the functionality of <emphasis>snd-pcm</emphasis> by making the
454       sound cards available to OSS applications), configure
455       <command>modprobe</command> to load the wrapper after Eudev loads the
456       wrapped module. To do this, add an <quote>install</quote> line to a file
457       in <filename>/etc/modprobe.d</filename>. For example:</para>
458 @y
459       <para>
460       <quote>ラッパー (wrapper)</quote>モジュールが単に他のモジュールの機能を拡張するだけのものであるなら (例えば <emphasis>snd-pcm-oss</emphasis> は <emphasis>snd-pcm</emphasis> の機能拡張を行うもので、OSS アプリケーションに対してサウンドカードを利用可能なものにするだけのものであるため) <command>modprobe</command> の設定によってラッパーモジュールを先にロードし、その後でラップされるモジュールがロードされるようにします。
461       これは以下のように <filename>/etc/modprobe.d/</filename> ディレクトリ内のファイルにて<quote>install</quote>の記述行を加えることで実現します。
462       </para>
463 @z
464
465 @x
466       <para>If the module in question is not a wrapper and is useful by itself,
467       configure the <command>S05modules</command> bootscript to load this
468       module on system boot. To do this, add the module name to the
469       <filename>/etc/sysconfig/modules</filename> file on a separate line.
470       This works for wrapper modules too, but is suboptimal in that case.</para>
471 @y
472       <para>
473       問題のモジュールがラッパーモジュールではなく、単独で利用できるものであれば、 <command>S05modules</command> ブートスクリプトを編集して、システム起動時にこのモジュールがロードされるようにします。
474       これは <filename>/etc/sysconfig/modules</filename> ファイルにて、そのモジュール名を単独の行に記述することで実現します。
475       この方法はラッパーモジュールに対しても動作しますが、この場合は次善策となります。
476       </para>
477 @z
478
479 @x
480       <title>Eudev loads some unwanted module</title>
481 @y
482       <title>Eudev が不必要なモジュールをロードする問題</title>
483 @z
484
485 @x
486       <para>Either don't build the module, or blacklist it in
487       <filename>/etc/modprobe.d</filename> file as done with the
488       <emphasis>forte</emphasis> module in the example below:</para>
489 @y
490       <para>
491       不必要なモジュールはこれをビルドしないことにするか、あるいは <filename>/etc/modprobe.d/</filename>にてブラックリスト化します。
492       例えば <emphasis>forte</emphasis> モジュールをブラックリストに登録するには以下のようにします。
493       </para>
494 @z
495
496 @x
497       <para>Blacklisted modules can still be loaded manually with the
498       explicit <command>modprobe</command> command.</para>
499 @y
500       <para>
501       ブラックリストに登録されたモジュールは <command>modprobe</command> コマンドを使えば手動でロードすることもできます。
502       </para>
503 @z
504
505 @x
506       <title>Eudev makes a wrong symlink</title>
507 @y
508       <title>Eudev が誤ったシンボリックリンクを生成する問題</title>
509 @z
510
511 @x
512       <para>This usually happens if a rule unexpectedly matches a device. For
513       example, a poorly-written rule can match both a SCSI disk (as desired)
514       and the corresponding SCSI generic device (incorrectly) by vendor.
515       Find the offending rule and make it more specific, with the help of
516       <command>udevadm info</command>.</para>
517 @y
518       <para>
519       デバイス生成規則が意図したデバイスに合致していないと、この状況が往々にして起こります。
520       例えば生成規則の記述が不十分であった場合、SCSI ディスク (本来望んでいるデバイス) と、それに対応づいたものとしてベンダーが提供する SCSI ジェネリックデバイス (これは誤ったデバイス) の両方に生成規則が合致してしまいます。
521       記述されている生成規則を探し出して正確に記述してください。
522       その際には <command>udevadm info</command> コマンドを使って情報を確認してください。
523       </para>
524 @z
525
526 @x
527       <title>Eudev rule works unreliably</title>
528 @y
529       <title>Eudev 規則が不審な動きをする問題</title>
530 @z
531
532 @x
533       <para>This may be another manifestation of the previous problem. If not,
534       and your rule uses <systemitem class="filesystem">sysfs</systemitem>
535       attributes, it may be a kernel timing issue, to be fixed in later kernels.
536       For now, you can work around it by creating a rule that waits for the used
537       <systemitem class="filesystem">sysfs</systemitem> attribute and appending
538       it to the <filename>/etc/udev/rules.d/10-wait_for_sysfs.rules</filename>
539       file. Please notify the CLFS Development list if you do so and it
540       helps.</para>
541 @y
542       <para>
543       この問題は、一つ前に示したものが別の症状となって現れたものかもしれません。
544       そのような理由でなく、生成規則が正しく <systemitem
545       class="filesystem">sysfs</systemitem> の属性を利用しているのであれば、それはカーネルの処理タイミングに関わる問題であって、カーネルを修正すべきものです。
546       今の時点では、該当する <systemitem class="filesystem">sysfs</systemitem> の属性の利用を待ち受けるような生成規則を生成し、<filename>/etc/udev/rules.d/10-wait_for_sysfs.rules</filename> ファイルにそれを追加することで対処できます。
547       もしこれを実施してうまくいった場合は CLFS 開発メーリングリストにお知らせください。
548       </para>
549 @z
550
551 @x
552       <title>Device naming order changes randomly after rebooting</title>
553 @y
554       <title>再起動後にデバイスの命名順がランダムに変わってしまう問題</title>
555 @z
556
557 @x
558       <para>This is due to the fact that Eudev, by design, handles uevents and
559       loads modules in parallel, and thus in an unpredictable order. This will
560       never be <quote>fixed</quote>. You should not rely upon the kernel device
561       names being stable. Instead, create your own rules that make symlinks with
562       stable names based on some stable attributes of the device, such as a
563       serial number or the output of various *_id utilities installed by Eudev.
564       See <xref linkend="ch-config-symlinks"/> and
565       <xref linkend="chapter-network"/> for examples.</para>
566 @y
567       <para>
568       これは Eudev の設計仕様に従って発生するもので、uevent の扱いとモジュールのロードが平行して行われるためです。
569       このために命名順が予期できないものになります。
570       これを<quote>固定的に</quote>することはできません。
571       ですからカーネルがデバイス名を固定的に定めるようなことを求めるのではなく、シンボリックリンクを用いた独自の生成規則を作り出して、そのデバイスの固定的な属性を用いた固定的な名前を用いる方法を取ります。
572       固定的な属性とは例えば Eudev によってインストールされるさまざまな *_id という名のユーティリティが出力するシリアル番号などです。
573       設定例については <xref linkend="ch-config-symlinks"/>や <xref linkend="chapter-network"/>を参照してください。
574       </para>
575 @z
576
577 @x
578     <title>Useful Reading</title>
579 @y
580     <title>参考情報</title>
581 @z
582
583 @x
584     <para>Additional helpful documentation is available at the following
585     sites:</para>
586 @y
587     <para>
588     さらに参考になるドキュメントが以下のサイトにあります:
589     </para>
590 @z
591
592 @x
593         <para remap="verbatim">A Userspace Implementation of <systemitem class="filesystem">devfs</systemitem>
594         <ulink url="http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf"/></para>
595 @y
596         <para remap="verbatim">
597         <systemitem class="filesystem">devfs</systemitem> のユーザー空間での実装方法 <ulink
598         url="http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf"/>
599         </para>
600 @z
601
602 @x
603         <para remap="verbatim">The <systemitem class="filesystem">sysfs</systemitem> Filesystem
604         <ulink url="http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf"/></para>
605 @y
606         <para remap="verbatim">
607         <systemitem class="filesystem">sysfs</systemitem> ファイルシステム
608         <ulink url="http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf"/>
609         </para>
610 @z