summaryrefslogtreecommitdiffstats
path: root/documentation/dev-manual/device-manager.rst
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/dev-manual/device-manager.rst')
-rw-r--r--documentation/dev-manual/device-manager.rst74
1 files changed, 74 insertions, 0 deletions
diff --git a/documentation/dev-manual/device-manager.rst b/documentation/dev-manual/device-manager.rst
new file mode 100644
index 0000000000..49fc785fec
--- /dev/null
+++ b/documentation/dev-manual/device-manager.rst
@@ -0,0 +1,74 @@
1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3.. _device-manager:
4
5Selecting a Device Manager
6**************************
7
8The Yocto Project provides multiple ways to manage the device manager
9(``/dev``):
10
11- Persistent and Pre-Populated ``/dev``: For this case, the ``/dev``
12 directory is persistent and the required device nodes are created
13 during the build.
14
15- Use ``devtmpfs`` with a Device Manager: For this case, the ``/dev``
16 directory is provided by the kernel as an in-memory file system and
17 is automatically populated by the kernel at runtime. Additional
18 configuration of device nodes is done in user space by a device
19 manager like ``udev`` or ``busybox-mdev``.
20
21Using Persistent and Pre-Populated ``/dev``
22===========================================
23
24To use the static method for device population, you need to set the
25:term:`USE_DEVFS` variable to "0"
26as follows::
27
28 USE_DEVFS = "0"
29
30The content of the resulting ``/dev`` directory is defined in a Device
31Table file. The
32:term:`IMAGE_DEVICE_TABLES`
33variable defines the Device Table to use and should be set in the
34machine or distro configuration file. Alternatively, you can set this
35variable in your ``local.conf`` configuration file.
36
37If you do not define the :term:`IMAGE_DEVICE_TABLES` variable, the default
38``device_table-minimal.txt`` is used::
39
40 IMAGE_DEVICE_TABLES = "device_table-mymachine.txt"
41
42The population is handled by the ``makedevs`` utility during image
43creation:
44
45Using ``devtmpfs`` and a Device Manager
46=======================================
47
48To use the dynamic method for device population, you need to use (or be
49sure to set) the :term:`USE_DEVFS`
50variable to "1", which is the default::
51
52 USE_DEVFS = "1"
53
54With this
55setting, the resulting ``/dev`` directory is populated by the kernel
56using ``devtmpfs``. Make sure the corresponding kernel configuration
57variable ``CONFIG_DEVTMPFS`` is set when building you build a Linux
58kernel.
59
60All devices created by ``devtmpfs`` will be owned by ``root`` and have
61permissions ``0600``.
62
63To have more control over the device nodes, you can use a device manager like
64``udev`` or ``busybox-mdev``. You choose the device manager by defining the
65:term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` variable in your machine
66or distro configuration file. Alternatively, you can set this variable in
67your ``local.conf`` configuration file::
68
69 VIRTUAL-RUNTIME_dev_manager = "udev"
70
71 # Some alternative values
72 # VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
73 # VIRTUAL-RUNTIME_dev_manager = "systemd"
74