Embedded linux 如何在/var/volatile/log/下创建一个新目录,并在YoctoBuild中更改权限?

Embedded linux 如何在/var/volatile/log/下创建一个新目录,并在YoctoBuild中更改权限?,embedded-linux,yocto,openembedded,Embedded Linux,Yocto,Openembedded,我想在Yocto构建中创建目录/var/volatile/log/mydir或/var/log/mydir。根据OE手册,我们不应该在任何配方文件()中包含/var目录。我试图在我的bbappend文件中包含这一行install-m0755-d${d}${localstatedir}/volatile/log/mydir,我可以确认它不起作用 我的应用程序需要目录/var/log/mydir在该目录中编写一个易失性日志文件,例如/var/log/mydir/myapp.log 由于它是易失性数据

我想在Yocto构建中创建目录/var/volatile/log/mydir或/var/log/mydir。根据OE手册,我们不应该在任何配方文件()中包含/var目录。我试图在我的bbappend文件中包含这一行
install-m0755-d${d}${localstatedir}/volatile/log/mydir
,我可以确认它不起作用

我的应用程序需要目录/var/log/mydir在该目录中编写一个易失性日志文件,例如/var/log/mydir/myapp.log

由于它是易失性数据,我可以在systemd服务文件中创建目录,例如:

[Service]
Type=simple
UMask=0027
User=@MYUSER@
Group=@MYGROUP@
ExecStartPre=mkdir -p /var/log/mydir
ExecStart=/usr/bin/myapp

问题是,由于权限被拒绝,myapp无法在引导后创建目录。如何在Yocto安装程序中处理此权限问题?

要在/var/volatile/log中创建目录,请在.bbappend文件中添加下面的行

do_install_append() {
    install -d ${D}${localstatedir}/volatile/log/mydir
}

此行将在/var/volatile/log中创建目录

要在/var/volatile/log中创建目录,请在.bbappend文件中添加下面的行

do_install_append() {
    install -d ${D}${localstatedir}/volatile/log/mydir
}

此行将在/var/volatile/log

中创建一个目录,因为volatile目录是在运行时创建的,而不是在bibake编译期间创建的,所以正常安装-d不起作用。以下步骤允许我创建目录:

  • 创建一个配置文件,例如myapp.conf,其中列出了所有需要的目录:
  • 然后,在myappend.bbappend文件的
    do\u install\u append()
    中包含这些行

  • 由于volatile目录是在运行时创建的,而不是在bibake编译期间创建的,因此正常的安装-d不起作用。以下步骤允许我创建目录:

  • 创建一个配置文件,例如myapp.conf,其中列出了所有需要的目录:
  • 然后,在myappend.bbappend文件的
    do\u install\u append()
    中包含这些行

  • 谢谢Rakesh,我在
    do\u install\u append
    块中也这么做了。由于在运行时创建的volatile目录,而不是bitbake编译,所以它无法工作。现在,我通过创建一个conf文件找到了一个解决方案,并定义了目录(例如myapp.conf),并将其包含在do_install_append中,作为`install-d${d}${sysconfdir}/tmpfiles.d/install-m0755${WORKDIR}/myapp.conf${d}${sysconfdir}/tmpfiles.d/``感谢Rakesh,我在
    do_install_append
    块中也这样做了。由于在运行时创建的volatile目录,而不是bitbake编译,所以它无法工作。现在,我通过创建一个conf文件找到了一个解决方案,并定义了目录(例如myapp.conf),并将其作为``install-d${d}${sysconfdir}/tmpfiles.d/install-m0755${WORKDIR}/myapp.conf${d}${sysconfdir}/tmpfiles.d/```
    install -d ${D}${sysconfdir}/tmpfiles.d/ 
    install -m 0755 ${WORKDIR}/myapp.conf ${D}${sysconfdir}/tmpfiles.d/