diff options
Diffstat (limited to 'documentation/dev-manual/device-manager.rst')
| -rw-r--r-- | documentation/dev-manual/device-manager.rst | 74 |
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..0343d19b9c --- /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 | |||
| 5 | Selecting a Device Manager | ||
| 6 | ************************** | ||
| 7 | |||
| 8 | The 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 | |||
| 21 | Using Persistent and Pre-Populated ``/dev`` | ||
| 22 | =========================================== | ||
| 23 | |||
| 24 | To use the static method for device population, you need to set the | ||
| 25 | :term:`USE_DEVFS` variable to "0" | ||
| 26 | as follows:: | ||
| 27 | |||
| 28 | USE_DEVFS = "0" | ||
| 29 | |||
| 30 | The content of the resulting ``/dev`` directory is defined in a Device | ||
| 31 | Table file. The | ||
| 32 | :term:`IMAGE_DEVICE_TABLES` | ||
| 33 | variable defines the Device Table to use and should be set in the | ||
| 34 | machine or distro configuration file. Alternatively, you can set this | ||
| 35 | variable in your ``local.conf`` configuration file. | ||
| 36 | |||
| 37 | If 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 | |||
| 42 | The population is handled by the ``makedevs`` utility during image | ||
| 43 | creation: | ||
| 44 | |||
| 45 | Using ``devtmpfs`` and a Device Manager | ||
| 46 | ======================================= | ||
| 47 | |||
| 48 | To use the dynamic method for device population, you need to use (or be | ||
| 49 | sure to set) the :term:`USE_DEVFS` | ||
| 50 | variable to "1", which is the default:: | ||
| 51 | |||
| 52 | USE_DEVFS = "1" | ||
| 53 | |||
| 54 | With this | ||
| 55 | setting, the resulting ``/dev`` directory is populated by the kernel | ||
| 56 | using ``devtmpfs``. Make sure the corresponding kernel configuration | ||
| 57 | variable ``CONFIG_DEVTMPFS`` is set when building you build a Linux | ||
| 58 | kernel. | ||
| 59 | |||
| 60 | All devices created by ``devtmpfs`` will be owned by ``root`` and have | ||
| 61 | permissions ``0600``. | ||
| 62 | |||
| 63 | To have more control over the device nodes, you can use a device manager | ||
| 64 | like ``udev`` or ``busybox-mdev``. You choose the device manager by | ||
| 65 | defining the ``VIRTUAL-RUNTIME_dev_manager`` variable in your machine or | ||
| 66 | distro configuration file. Alternatively, you can set this variable in | ||
| 67 | your ``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 | |||
