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