xref: /openbmc/openbmc/poky/documentation/dev-manual/device-manager.rst (revision b58112e5af484d9314f6a4487b1bc8b292f952ef)
1517393d9SAndrew Geissler.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2517393d9SAndrew Geissler
38e7b46e2SPatrick Williams.. _device-manager:
48e7b46e2SPatrick Williams
5517393d9SAndrew GeisslerSelecting a Device Manager
6517393d9SAndrew Geissler**************************
7517393d9SAndrew Geissler
8517393d9SAndrew GeisslerThe Yocto Project provides multiple ways to manage the device manager
9517393d9SAndrew Geissler(``/dev``):
10517393d9SAndrew Geissler
11517393d9SAndrew Geissler-  Persistent and Pre-Populated ``/dev``: For this case, the ``/dev``
12517393d9SAndrew Geissler   directory is persistent and the required device nodes are created
13517393d9SAndrew Geissler   during the build.
14517393d9SAndrew Geissler
15517393d9SAndrew Geissler-  Use ``devtmpfs`` with a Device Manager: For this case, the ``/dev``
16517393d9SAndrew Geissler   directory is provided by the kernel as an in-memory file system and
17517393d9SAndrew Geissler   is automatically populated by the kernel at runtime. Additional
18517393d9SAndrew Geissler   configuration of device nodes is done in user space by a device
19517393d9SAndrew Geissler   manager like ``udev`` or ``busybox-mdev``.
20517393d9SAndrew Geissler
21517393d9SAndrew GeisslerUsing Persistent and Pre-Populated ``/dev``
22517393d9SAndrew Geissler===========================================
23517393d9SAndrew Geissler
24517393d9SAndrew GeisslerTo use the static method for device population, you need to set the
25517393d9SAndrew Geissler:term:`USE_DEVFS` variable to "0"
26517393d9SAndrew Geissleras follows::
27517393d9SAndrew Geissler
28517393d9SAndrew Geissler   USE_DEVFS = "0"
29517393d9SAndrew Geissler
30517393d9SAndrew GeisslerThe content of the resulting ``/dev`` directory is defined in a Device
31517393d9SAndrew GeisslerTable file. The
32517393d9SAndrew Geissler:term:`IMAGE_DEVICE_TABLES`
33517393d9SAndrew Geisslervariable defines the Device Table to use and should be set in the
34517393d9SAndrew Geisslermachine or distro configuration file. Alternatively, you can set this
35517393d9SAndrew Geisslervariable in your ``local.conf`` configuration file.
36517393d9SAndrew Geissler
37517393d9SAndrew GeisslerIf you do not define the :term:`IMAGE_DEVICE_TABLES` variable, the default
38517393d9SAndrew Geissler``device_table-minimal.txt`` is used::
39517393d9SAndrew Geissler
40517393d9SAndrew Geissler   IMAGE_DEVICE_TABLES = "device_table-mymachine.txt"
41517393d9SAndrew Geissler
42517393d9SAndrew GeisslerThe population is handled by the ``makedevs`` utility during image
43517393d9SAndrew Geisslercreation:
44517393d9SAndrew Geissler
45517393d9SAndrew GeisslerUsing ``devtmpfs`` and a Device Manager
46517393d9SAndrew Geissler=======================================
47517393d9SAndrew Geissler
48517393d9SAndrew GeisslerTo use the dynamic method for device population, you need to use (or be
49517393d9SAndrew Geisslersure to set) the :term:`USE_DEVFS`
50517393d9SAndrew Geisslervariable to "1", which is the default::
51517393d9SAndrew Geissler
52517393d9SAndrew Geissler   USE_DEVFS = "1"
53517393d9SAndrew Geissler
54517393d9SAndrew GeisslerWith this
55517393d9SAndrew Geisslersetting, the resulting ``/dev`` directory is populated by the kernel
56517393d9SAndrew Geisslerusing ``devtmpfs``. Make sure the corresponding kernel configuration
57517393d9SAndrew Geisslervariable ``CONFIG_DEVTMPFS`` is set when building you build a Linux
58517393d9SAndrew Geisslerkernel.
59517393d9SAndrew Geissler
60517393d9SAndrew GeisslerAll devices created by ``devtmpfs`` will be owned by ``root`` and have
61517393d9SAndrew Geisslerpermissions ``0600``.
62517393d9SAndrew Geissler
63*b58112e5SPatrick WilliamsTo have more control over the device nodes, you can use a device manager like
64*b58112e5SPatrick Williams``udev`` or ``busybox-mdev``. You choose the device manager by defining the
65*b58112e5SPatrick Williams:term:`VIRTUAL-RUNTIME_dev_manager <VIRTUAL-RUNTIME>` variable in your machine
66*b58112e5SPatrick Williamsor distro configuration file. Alternatively, you can set this variable in
67517393d9SAndrew Geissleryour ``local.conf`` configuration file::
68517393d9SAndrew Geissler
69517393d9SAndrew Geissler   VIRTUAL-RUNTIME_dev_manager = "udev"
70517393d9SAndrew Geissler
71517393d9SAndrew Geissler   # Some alternative values
72517393d9SAndrew Geissler   # VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
73517393d9SAndrew Geissler   # VIRTUAL-RUNTIME_dev_manager = "systemd"
74517393d9SAndrew Geissler
75