dev-manual: New section on choosing a device manager added.

This patch was modified to fit in with the style of the book.

(From yocto-docs rev: 7c6c7ac573f92bfc844977e0d7a97ca4aac9bc70)

Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Pascal Bach 2015-01-16 16:01:06 -08:00 committed by Richard Purdie
parent a23e76dbce
commit da47cb736b
1 changed files with 108 additions and 1 deletions

View File

@ -946,7 +946,7 @@
Furthermore, you must use <filename>_append</filename> instead
of the <filename>+=</filename> operator if you want to avoid
ordering issues.
The reason for this is because doing so unconditionally appends
The reason for this is because doing so un>+conditionally appends
to the variable and avoids ordering problems due to the
variable being set in image recipes and
<filename>.bbclass</filename> files with operators like
@ -7587,6 +7587,113 @@
</section>
</section>
<section id="selecting-dev-manager">
<title>Selecting a Device Manager</title>
<para>
The Yocto Project provides multiple ways to manage the device
manager (<filename>/dev</filename>):
<itemizedlist>
<listitem><para><emphasis>Persistent and Pre-Populated<filename>/dev</filename>:</emphasis>
For this case, the <filename>/dev</filename> directory
is persistent and the required device nodes are created
during the build.
</para></listitem>
<listitem><para><emphasis>Use <filename>devtmps</filename> with a Device Manager:</emphasis>
For this case, the <filename>/dev</filename> directory
is provided by the kernel as an in-memory file system and
is automatically populated by the kernel at runtime.
Additional configuration of device nodes is done in user
space by a device manager like
<filename>udev</filename> or
<filename>busybox-mdev</filename>.
</para></listitem>
</itemizedlist>
</para>
<section id="static-dev-management">
<title>Using Persistent and Pre-Populated<filename>/dev</filename></title>
<para>
To use the static method for device population, you need to
set the
<ulink url='&YOCTO_DOCS_REF_URL;#var-USE_DEVFS'><filename>USE_DEVFS</filename></ulink>
variable to "0" as follows:
<literallayout class='monospaced'>
USE_DEVFS = "0"
</literallayout>
</para>
<para>
The content of the resulting <filename>/dev</filename>
directory is defined in a Device Table file.
The
<ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_DEVICE_TABLES'><filename>IMAGE_DEVICE_TABLES</filename></ulink>
variable defines the Device Table to use and should be set
in the machine or distro configuration file.
Alternatively, you can set this variable in your
<filename>local.conf</filename> configuration file.
</para>
<para>
If you do not define the
<filename>IMAGE_DEVICE_TABLES</filename> variable, the default
<filename>device_table-minimal.txt</filename> is used:
<literallayout class='monospaced'>
IMAGE_DEVICE_TABLES = "device_table-mymachine.txt"
</literallayout>
</para>
<para>
The population is handled by the <filename>makedevs</filename>
utility during image creation:
</para>
</section>
<section id="devtmps-dev-management">
<title>Using <filename>devtmpfs</filename> and a Device Manager</title>
<para>
To use the dynamic method for device population, you need to
use (or be sure to set) the
<ulink url='&YOCTO_DOCS_REF_URL;#var-USE_DEVFS'><filename>USE_DEVFS</filename></ulink>
variable to "1", which is the default:
<literallayout class='monospaced'>
USE_DEVFS = "1"
</literallayout>
With this setting, the resulting <filename>/dev</filename>
is populated by the kernel using <filename>devtmpfs</filename>.
Make sure the corresponding kernel configuration variable
<filename>CONFIG_DEVTMPFS</filename> is set when building
you build a linux kernel.
</para>
<para>
All devices created by <filename>devtmpfs</filename> will be
owned by <filename>root</filename> and have permissions
<filename>0600</filename>.
</para>
<para>
To have more control over the device nodes, you can use a
device manager like <filename>udev</filename> or
<filename>busybox-mdev</filename>.
You choose the device manager by defining the
<filename>VIRTUAL-RUNTIME_dev_manager</filename> variable
in your machine or distro configuration file.
Alternatively, you can set this variable in your
<filename>local.conf</filename> configuration file:
<literallayout class='monospaced'>
VIRTUAL-RUNTIME_dev_manager = "udev"
# Some alternative values
# VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
# VIRTUAL-RUNTIME_dev_manager = "systemd"
</literallayout>
</para>
</section>
</section>
<section id="platdev-appdev-srcrev">
<title>Using an External SCM</title>