123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477 |
- # SOME DESCRIPTIVE TITLE
- # Copyright (C) YEAR Free Software Foundation, Inc.
- # This file is distributed under the same license as the PACKAGE package.
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
- #
- #, fuzzy
- msgid ""
- msgstr ""
- "Project-Id-Version: PACKAGE VERSION\n"
- "POT-Creation-Date: 2020-06-17 12:44+0800\n"
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
- "Language-Team: LANGUAGE <LL@li.org>\n"
- "Language: \n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- #. type: Content of: <sect1><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:11
- msgid "Overview of Device and Module Handling"
- msgstr ""
- #. type: Content of: <sect1><indexterm><primary>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:14
- msgid "Udev"
- msgstr ""
- #. type: Content of: <sect1><indexterm><secondary>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:15
- msgid "usage"
- msgstr ""
- #. type: Content of: <sect1><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:18
- msgid ""
- "In <xref linkend=\"chapter-building-system\"/>, we installed the udev "
- "package when <phrase revision=\"sysv\">eudev</phrase> <phrase "
- "revision=\"systemd\">systemd</phrase> was built. Before we go into the "
- "details regarding how this works, a brief history of previous methods of "
- "handling devices is in order."
- msgstr ""
- #. type: Content of: <sect1><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:24
- msgid ""
- "Linux systems in general traditionally used a static device creation method, "
- "whereby a great many device nodes were created under <filename "
- "class=\"directory\">/dev</filename> (sometimes literally thousands of "
- "nodes), regardless of whether the corresponding hardware devices actually "
- "existed. This was typically done via a <command>MAKEDEV</command> script, "
- "which contains a number of calls to the <command>mknod</command> program "
- "with the relevant major and minor device numbers for every possible device "
- "that might exist in the world."
- msgstr ""
- #. type: Content of: <sect1><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:33
- msgid ""
- "Using the udev method, only those devices which are detected by the kernel "
- "get device nodes created for them. Because these device nodes will be "
- "created each time the system boots, they will be stored on a <systemitem "
- "class=\"filesystem\">devtmpfs</systemitem> file system (a virtual file "
- "system that resides entirely in system memory). Device nodes do not require "
- "much space, so the memory that is used is negligible."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:41
- msgid "History"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:43
- msgid ""
- "In February 2000, a new filesystem called <systemitem "
- "class=\"filesystem\">devfs</systemitem> was merged into the 2.3.46 kernel "
- "and was made available during the 2.4 series of stable kernels. Although it "
- "was present in the kernel source itself, this method of creating devices "
- "dynamically never received overwhelming support from the core kernel "
- "developers."
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:50
- msgid ""
- "The main problem with the approach adopted by <systemitem "
- "class=\"filesystem\">devfs</systemitem> was the way it handled device "
- "detection, creation, and naming. The latter issue, that of device node "
- "naming, was perhaps the most critical. It is generally accepted that if "
- "device names are allowed to be configurable, then the device naming policy "
- "should be up to a system administrator, not imposed on them by any "
- "particular developer(s). The <systemitem "
- "class=\"filesystem\">devfs</systemitem> file system also suffered from race "
- "conditions that were inherent in its design and could not be fixed without a "
- "substantial revision to the kernel. It was marked as deprecated for a long "
- "period – due to a lack of maintenance – and was finally removed "
- "from the kernel in June, 2006."
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:63
- msgid ""
- "With the development of the unstable 2.5 kernel tree, later released as the "
- "2.6 series of stable kernels, a new virtual filesystem called <systemitem "
- "class=\"filesystem\">sysfs</systemitem> came to be. The job of <systemitem "
- "class=\"filesystem\">sysfs</systemitem> is to export a view of the system's "
- "hardware configuration to userspace processes. With this userspace-visible "
- "representation, the possibility of developing a userspace replacement for "
- "<systemitem class=\"filesystem\">devfs</systemitem> became much more "
- "realistic."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:75
- msgid "Udev Implementation"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:78
- msgid "Sysfs"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:80
- msgid ""
- "The <systemitem class=\"filesystem\">sysfs</systemitem> filesystem was "
- "mentioned briefly above. One may wonder how <systemitem "
- "class=\"filesystem\">sysfs</systemitem> knows about the devices present on a "
- "system and what device numbers should be used for them. Drivers that have "
- "been compiled into the kernel directly register their objects with a "
- "<systemitem class=\"filesystem\">sysfs</systemitem> (devtmpfs internally) "
- "as they are detected by the kernel. For drivers compiled as modules, this "
- "registration will happen when the module is loaded. Once the <systemitem "
- "class=\"filesystem\">sysfs</systemitem> filesystem is mounted (on /sys), "
- "data which the drivers register with <systemitem "
- "class=\"filesystem\">sysfs</systemitem> are available to userspace processes "
- "and to udevd for processing (including modifications to device nodes)."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:97
- msgid "Device Node Creation"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:99
- msgid ""
- "Device files are created by the kernel by the <systemitem "
- "class=\"filesystem\">devtmpfs</systemitem> filesystem. Any driver that "
- "wishes to register a device node will go through the <systemitem "
- "class=\"filesystem\">devtmpfs</systemitem> (via the driver core) to do it. "
- "When a <systemitem class=\"filesystem\">devtmpfs</systemitem> instance is "
- "mounted on <filename class=\"directory\">/dev</filename>, the device node "
- "will initially be created with a fixed name, permissions, and owner."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:108
- msgid ""
- "A short time later, the kernel will send a uevent to <command> "
- "udevd</command>. Based on the rules specified in the files within the "
- "<filename class=\"directory\">/etc/udev/rules.d</filename>, <filename "
- "class=\"directory\">/lib/udev/rules.d</filename>, and <filename "
- "class=\"directory\">/run/udev/rules.d</filename> directories, <command> "
- "udevd</command> will create additional symlinks to the device node, or "
- "change its permissions, owner, or group, or modify the internal "
- "<command>udevd</command> database entry (name) for that object."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:117
- msgid ""
- "The rules in these three directories are numbered and all three directories "
- "are merged together. If <command>udevd</command> can't find a rule for the "
- "device it is creating, it will leave the permissions and ownership at "
- "whatever <systemitem class=\"filesystem\">devtmpfs</systemitem> used "
- "initially."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:124
- msgid "Module Loading"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:126
- msgid ""
- "Device drivers compiled as modules may have aliases built into them. "
- "Aliases are visible in the output of the <command>modinfo</command> program "
- "and are usually related to the bus-specific identifiers of devices supported "
- "by a module. For example, the <emphasis>snd-fm801</emphasis> driver supports "
- "PCI devices with vendor ID 0x1319 and device ID 0x0801, and has an alias of "
- "<quote>pci:v00001319d00000801sv*sd*bc04sc01i*</quote>. For most devices, "
- "the bus driver exports the alias of the driver that would handle the device "
- "via <systemitem class=\"filesystem\">sysfs</systemitem>. E.g., the "
- "<filename>/sys/bus/pci/devices/0000:00:0d.0/modalias</filename> file might "
- "contain the string "
- "<quote>pci:v00001319d00000801sv00001319sd00001319bc04sc01i00</quote>. The "
- "default rules provided with udev will cause <command>udevd</command> to call "
- "out to <command>/sbin/modprobe</command> with the contents of the "
- "<envar>MODALIAS</envar> uevent environment variable (which should be the "
- "same as the contents of the <filename>modalias</filename> file in sysfs), "
- "thus loading all modules whose aliases match this string after wildcard "
- "expansion."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:145
- msgid ""
- "In this example, this means that, in addition to "
- "<emphasis>snd-fm801</emphasis>, the obsolete (and unwanted) "
- "<emphasis>forte</emphasis> driver will be loaded if it is available. See "
- "below for ways in which the loading of unwanted drivers can be prevented."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:151
- msgid ""
- "The kernel itself is also able to load modules for network protocols, "
- "filesystems, and NLS support on demand."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:157
- msgid "Handling Hotpluggable/Dynamic Devices"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:159
- msgid ""
- "When you plug in a device, such as a Universal Serial Bus (USB) MP3 player, "
- "the kernel recognizes that the device is now connected and generates a "
- "uevent. This uevent is then handled by <command>udevd</command> as described "
- "above."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:169
- msgid "Problems with Loading Modules and Creating Devices"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:171
- msgid ""
- "There are a few possible problems when it comes to automatically creating "
- "device nodes."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:175
- msgid "A kernel module is not loaded automatically"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:177
- msgid ""
- "Udev will only load a module if it has a bus-specific alias and the bus "
- "driver properly exports the necessary aliases to <systemitem "
- "class=\"filesystem\">sysfs</systemitem>. In other cases, one should arrange "
- "module loading by other means. With Linux-&linux-version;, udev is known to "
- "load properly-written drivers for INPUT, IDE, PCI, USB, SCSI, SERIO, and "
- "FireWire devices."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:184
- msgid ""
- "To determine if the device driver you require has the necessary support for "
- "udev, run <command>modinfo</command> with the module name as the argument. "
- "Now try locating the device directory under <filename "
- "class=\"directory\">/sys/bus</filename> and check whether there is a "
- "<filename>modalias</filename> file there."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:190
- msgid ""
- "If the <filename>modalias</filename> file exists in <systemitem "
- "class=\"filesystem\">sysfs</systemitem>, the driver supports the device and "
- "can talk to it directly, but doesn't have the alias, it is a bug in the "
- "driver. Load the driver without the help from udev and expect the issue to "
- "be fixed later."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:196
- msgid ""
- "If there is no <filename>modalias</filename> file in the relevant directory "
- "under <filename class=\"directory\">/sys/bus</filename>, this means that the "
- "kernel developers have not yet added modalias support to this bus type. With "
- "Linux-&linux-version;, this is the case with ISA busses. Expect this issue "
- "to be fixed in later kernel versions."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:202
- msgid ""
- "Udev is not intended to load <quote>wrapper</quote> drivers such as "
- "<emphasis>snd-pcm-oss</emphasis> and non-hardware drivers such as "
- "<emphasis>loop</emphasis> at all."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:209
- msgid ""
- "A kernel module is not loaded automatically, and udev is not intended to "
- "load it"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:212
- msgid ""
- "If the <quote>wrapper</quote> module only enhances the functionality "
- "provided by some other module (e.g., <emphasis>snd-pcm-oss</emphasis> "
- "enhances the functionality of <emphasis>snd-pcm</emphasis> by making the "
- "sound cards available to OSS applications), configure "
- "<command>modprobe</command> to load the wrapper after udev loads the wrapped "
- "module. To do this, add a <quote>softdep</quote> line to the corresponding "
- "<filename>/etc/modprobe.d/<replaceable><filename></replaceable>.conf</filename> "
- "file. For example:"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><screen>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:222
- #, no-wrap
- msgid "<literal>softdep snd-pcm post: snd-pcm-oss</literal>"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:224
- msgid ""
- "Note that the <quote>softdep</quote> command also allows "
- "<literal>pre:</literal> dependencies, or a mixture of both "
- "<literal>pre:</literal> and <literal>post:</literal> dependencies. See the "
- "<filename>modprobe.d(5)</filename> manual page for more information on "
- "<quote>softdep</quote> syntax and capabilities."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:230
- msgid ""
- "If the module in question is not a wrapper and is useful by itself, "
- "configure the <command>modules</command> bootscript to load this module on "
- "system boot. To do this, add the module name to the "
- "<filename>/etc/sysconfig/modules</filename> file on a separate line. This "
- "works for wrapper modules too, but is suboptimal in that case."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:239
- msgid "Udev loads some unwanted module"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:241
- msgid ""
- "Either don't build the module, or blacklist it in a "
- "<filename>/etc/modprobe.d/blacklist.conf</filename> file as done with the "
- "<emphasis>forte</emphasis> module in the example below:"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><screen>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:245
- #, no-wrap
- msgid "<literal>blacklist forte</literal>"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:247
- msgid ""
- "Blacklisted modules can still be loaded manually with the explicit "
- "<command>modprobe</command> command."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:253
- msgid "Udev creates a device incorrectly, or makes a wrong symlink"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:255
- msgid ""
- "This usually happens if a rule unexpectedly matches a device. For example, a "
- "poorly-written rule can match both a SCSI disk (as desired) and the "
- "corresponding SCSI generic device (incorrectly) by vendor. Find the "
- "offending rule and make it more specific, with the help of the "
- "<command>udevadm info</command> command."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:264
- msgid "Udev rule works unreliably"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:266
- msgid ""
- "This may be another manifestation of the previous problem. If not, and your "
- "rule uses <systemitem class=\"filesystem\">sysfs</systemitem> attributes, it "
- "may be a kernel timing issue, to be fixed in later kernels. For now, you "
- "can work around it by creating a rule that waits for the used <systemitem "
- "class=\"filesystem\">sysfs</systemitem> attribute and appending it to the "
- "<filename>/etc/udev/rules.d/10-wait_for_sysfs.rules</filename> file (create "
- "this file if it does not exist). Please notify the LFS Development list if "
- "you do so and it helps."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:278
- msgid "Udev does not create a device"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:280
- msgid ""
- "Further text assumes that the driver is built statically into the kernel or "
- "already loaded as a module, and that you have already checked that udev "
- "doesn't create a misnamed device."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:284
- msgid ""
- "Udev has no information needed to create a device node if a kernel driver "
- "does not export its data to <systemitem "
- "class=\"filesystem\">sysfs</systemitem>. This is most common with third "
- "party drivers from outside the kernel tree. Create a static device node in "
- "<filename>/lib/udev/devices</filename> with the appropriate major/minor "
- "numbers (see the file <filename>devices.txt</filename> inside the kernel "
- "documentation or the documentation provided by the third party driver "
- "vendor). The static device node will be copied to <filename "
- "class=\"directory\">/dev</filename> by <command>udev</command>."
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:298
- msgid "Device naming order changes randomly after rebooting"
- msgstr ""
- #. type: Content of: <sect1><sect2><sect3><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:300
- msgid ""
- "This is due to the fact that udev, by design, handles uevents and loads "
- "modules in parallel, and thus in an unpredictable order. This will never be "
- "<quote>fixed</quote>. You should not rely upon the kernel device names being "
- "stable. Instead, create your own rules that make symlinks with stable names "
- "based on some stable attributes of the device, such as a serial number or "
- "the output of various *_id utilities installed by udev. See <xref "
- "linkend=\"ch-config-symlinks\"/> and <xref linkend=\"ch-config-network\"/> "
- "for examples."
- msgstr ""
- #. type: Content of: <sect1><sect2><title>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:314
- msgid "Useful Reading"
- msgstr ""
- #. type: Content of: <sect1><sect2><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:316
- msgid "Additional helpful documentation is available at the following sites:"
- msgstr ""
- #. type: Content of: <sect1><sect2><itemizedlist><listitem><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:322
- msgid ""
- "A Userspace Implementation of <systemitem "
- "class=\"filesystem\">devfs</systemitem> <ulink "
- "url=\"http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf\"/>"
- msgstr ""
- #. type: Content of: <sect1><sect2><itemizedlist><listitem><para>
- #: /home/xry111/svn-repos/LFS-BOOK/chapter09/udev.xml:327
- msgid ""
- "The <systemitem class=\"filesystem\">sysfs</systemitem> Filesystem <ulink "
- "url=\"http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf\"/>"
- msgstr ""
|