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
75