28 Selecting a Device Manager
The Yocto Project provides multiple ways to manage the device manager
Persistent and Pre-Populated
/dev: For this case, the
/devdirectory is persistent and the required device nodes are created during the build.
devtmpfswith a Device Manager: For this case, the
/devdirectory is provided by the kernel as an in-memory file system and is automatically populated by the kernel at runtime. Additional configuration of device nodes is done in user space by a device manager like
28.1 Using Persistent and Pre-Populated
To use the static method for device population, you need to set the USE_DEVFS variable to “0” as follows:
USE_DEVFS = "0"
The content of the resulting
/dev directory is defined in a Device
Table file. The
variable defines the Device Table to use and should be set in the
machine or distro configuration file. Alternatively, you can set this
variable in your
local.conf configuration file.
If you do not define the IMAGE_DEVICE_TABLES variable, the default
device_table-minimal.txt is used:
IMAGE_DEVICE_TABLES = "device_table-mymachine.txt"
The population is handled by the
makedevs utility during image
devtmpfs and a Device Manager
To use the dynamic method for device population, you need to use (or be sure to set) the USE_DEVFS variable to “1”, which is the default:
USE_DEVFS = "1"
setting, the resulting
/dev directory is populated by the kernel
devtmpfs. Make sure the corresponding kernel configuration
CONFIG_DEVTMPFS is set when building you build a Linux
All devices created by
devtmpfs will be owned by
root and have
To have more control over the device nodes, you can use a device manager
busybox-mdev. You choose the device manager by
VIRTUAL-RUNTIME_dev_manager variable in your machine or
distro configuration file. Alternatively, you can set this variable in
local.conf configuration file:
VIRTUAL-RUNTIME_dev_manager = "udev"
# Some alternative values
# VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
# VIRTUAL-RUNTIME_dev_manager = "systemd"