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