为什么Buildroot未生效自定义的device_table.txt配置?
Buildroot自定义device_table.txt不生效排查方案
- 首先确认配置项实际生效状态:直接检查编译根目录下的
.config文件,搜索BR2_ROOTFS_DEVICE_TABLE配置项,确认其值确实是你自定义的board/<product>/device_table.txt绝对/相对路径,而非默认路径。如果你是修改的板级defconfig文件,必须重新执行make <product>_defconfig生成新的.config,避免修改的配置没有被应用。 - 确认规则逻辑:
BR2_ROOTFS_DEVICE_TABLE配置的是补充设备表,不会替换默认的system/device_table.txt,二者的规则会依次生效,相同路径的权限配置,后加载的自定义规则会覆盖默认规则。如果你要修改的路径在默认设备表中不存在,需要确认该文件确实会被编译到目标根文件系统中,路径和名称完全匹配。 - 检查自定义设备表语法:标准条目格式为
<路径> <类型> <权限> <uid> <gid> <major> <minor> <start> <inc> <count>,普通文件类型填f,无意义的参数填-,例如修改/usr/bin/app权限为755、属主属组为root的规则为:
注意路径不要加引号、不要有多余空格或换行符。/usr/bin/app f 755 0 0 - - - - - - 清理构建缓存重试:Buildroot会缓存已生成的根文件系统产物,修改device_table后必须清理缓存才能让新规则生效,可执行
rm -rf output/target output/build/*rootfs*清理对应缓存后重新编译,必要时执行make clean全量重新构建。 - 排查构建日志:执行
make V=1启动编译,在日志中搜索device_table关键词,确认自定义设备表路径被正确加载,没有路径不存在、语法错误类的报错信息。
内容的提问来源于stack exchange,提问作者Vasi Marin
相关产品推荐
相关产品推荐

