32 选择设备管理器
Yocto Project 提供多种管理设备目录(/dev )的方式:
持久化且预先填充的
/dev:/dev目录持久保存,所需设备节点在 构建期间创建。将
devtmpfs与设备管理器配合使用:内核以内存文件系统的形式提供/dev目录,并在运行时自动填充。udev或busybox-mdev等 用户空间设备管理器负责设备节点的其他配置。
32 使用持久化且预先填充的 /dev
要使用静态方式填充设备节点,需要将 USE_DEVFS 变量设为 "0":
USE_DEVFS = "0"
生成的 /dev 目录内容由设备表文件定义。IMAGE_DEVICE_TABLES
变量指定所用设备表,应在机器或发行版的 configuration file 中设置,
也可以在 build/conf/local.conf 配置文件中设置。
如果未定义 IMAGE_DEVICE_TABLES,则使用默认的
device_table-minimal.txt。自定义设置示例如下:
IMAGE_DEVICE_TABLES = "device_table-mymachine.txt"
设备节点由 makedevs 工具在创建镜像时填充。
32 使用 devtmpfs 和设备管理器
要使用动态方式填充设备节点,需要使用或确保 USE_DEVFS 变量设为 默认值 "1":
USE_DEVFS = "1"
采用此设置后,内核通过 devtmpfs 填充 /dev 目录。构建 Linux 内核时,
务必启用对应的内核配置变量 CONFIG_DEVTMPFS。
devtmpfs 创建的所有设备都归 root 所有,权限为 0600。
如果需要更细致地控制设备节点,可以使用 udev 或 busybox-mdev 等
设备管理器。在机器或发行版的 configuration file 中定义
VIRTUAL-RUNTIME_dev_manager 变量来选择设备管理器,
也可以在 build/conf/local.conf 配置文件中设置:
VIRTUAL-RUNTIME_dev_manager = "udev"
# Some alternative values
# VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
# VIRTUAL-RUNTIME_dev_manager = "systemd"