如何移除Yocto中默认的/var/tmp -> /var/volatile/tmp软链接
查找Yocto系统中/var/tmp软链接的创建源头
1. 检查OpenRC初始化脚本(如果不用systemd)
要是你的Yocto用的是OpenRC而非systemd,那这个软链接大概率是/etc/init.d/volatile-rootfs这类初始化脚本创建的,或者和/etc/runlevels/boot/下的关联脚本有关。直接搜一下:
grep -r "/var/tmp" /etc/init.d/ /etc/runlevels/
2. 查volatile-rootfs配方文件
Yocto里负责创建这类临时目录软链接的核心是volatile-rootfs配方,一般在meta/recipes-core/volatile-rootfs/目录下。看看配方里的do_install或者postinst脚本段:
- 直接看配方内容:
cat meta/recipes-core/volatile-rootfs/volatile-rootfs/*.bb
- 也可以检查配方生成的
${D}/etc/init.d/volatile-rootfs模板文件,里面多半有创建/var/tmp软链接的逻辑。
3. 检查tmpfiles.d配置
systemd的tmpfiles.d配置也可能生成这个软链接,去/usr/lib/tmpfiles.d/或/etc/tmpfiles.d/下搜搜:
grep -r "/var/tmp" /usr/lib/tmpfiles.d/ /etc/tmpfiles.d/
常见的比如volatile.conf或者tmp.conf这类文件里可能藏着相关配置。
4. 排查rootfs构建阶段的脚本
Yocto构建rootfs后期,可能通过ROOTFS_POSTPROCESS_COMMAND命令创建软链接。去本地层或核心层的conf/local.conf、*.bbclass文件里找找相关配置:
grep -r "ROOTFS_POSTPROCESS_COMMAND" meta/ conf/
找到对应命令后,追踪脚本内容,看是不是有创建/var/tmp软链接的操作。
关于SELinux规则损坏的小提示
移除软链接后,得确保/var/tmp目录的SELinux上下文正确,直接用这条命令修复:
restorecon -Rv /var/tmp
要是是自定义服务导致的上下文问题,可能得写个对应的SELinux策略模块来适配新目录的权限。
内容的提问来源于stack exchange,提问作者jianbin zhang
相关产品推荐
相关产品推荐

