Persistent /var/log support
v2 cover Persistent /var/log support
The following changes since commit d62f18c39bc0ed3b0f5ac8465b393c15f2143ecf:
targetloader.py: drop test for ClassType (2016-12-12 15:16:39 +0000)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib ChenQi/persistent-var-log
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=ChenQi/persistent-var-log
Chen Qi (4):
bitbake.conf: add VOLATILE_LOG_DIR variable
base-files: respect VOLATILE_LOG_DIR
initscripts: support persistent /var/log
package.bbclass: support persistent /var/log
meta/classes/package.bbclass | 2 +- meta/conf/bitbake.conf | 3 + meta/files/fs-perms-persistent-log.txt | 69 ++++++++++++++++++++++ meta/recipes-core/base-files/base-files_3.0.14.bb | 4 +- .../initscripts/initscripts-1.0/volatiles | 1 - meta/recipes-core/initscripts/initscripts_1.0.bb | 3 + 6 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 meta/files/fs-perms-persistent-log.txt
Signature · 1 line
1.9.1
PATCH v2 1/4 bitbake.conf: add VOLATILE_LOG_DIR variable
The default value is "yes" which results in the /var/log being a link pointing to /var/volatile/log which is on tmpfs.
The user could override this value to "no" which causes /var/log to be a directory on persistent storage.
[YOCTO #6132]
--- meta/conf/bitbake.conf | 3 +++ 1 file changed, 3 insertions(+)
meta/conf/bitbake.conf +3 -0
@@ -83,6 +83,9 @@ USRBINPATH_class-nativesdk = "/usr/bin" # Root home directory ROOT_HOME ??= "/home/root" +# If set to "yes", /var/log links to /var/volatile/log; otherwise, /var/log is on persistent storage. +VOLATILE_LOG_DIR ?= "yes" + ################################################################## # Architecture-dependent build variables. ##################################################################
Signature · 1 line
1.9.1
PATCH v2 2/4 base-files: respect VOLATILE_LOG_DIR
In reply to Chen QiRespect VOLATILE_LOG_DIR variable. In this way, if the user overrides this variable to be "no", /var/log on the final image would reside on persistent storage.
[YOCTO #6132]
--- meta/recipes-core/base-files/base-files_3.0.14.bb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
meta/recipes-core/base-files/base-files_3.0.14.bb +2 -2
@@ -41,7 +41,7 @@ dirs755 = "/bin /boot /dev ${sysconfdir} ${sysconfdir}/default \ ${localstatedir}/backups ${localstatedir}/lib \ /sys ${localstatedir}/lib/misc ${localstatedir}/spool \ ${localstatedir}/volatile \ - ${localstatedir}/volatile/log \ + ${localstatedir}/${@'volatile/' if oe.types.boolean('${VOLATILE_LOG_DIR}') else ''}log \ /home ${prefix}/src ${localstatedir}/local \ /media"
@@ -52,7 +52,7 @@ dirs755-lsb = "/srv \ ${prefix}/lib/locale" dirs2775-lsb = "/var/mail" -volatiles = "log tmp" +volatiles = "${@'log' if oe.types.boolean('${VOLATILE_LOG_DIR}') else ''} tmp" conffiles = "${sysconfdir}/debian_version ${sysconfdir}/host.conf \ ${sysconfdir}/issue /${sysconfdir}/issue.net \ ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile \
Signature · 1 line
1.9.1
PATCH v2 3/4 initscripts: support persistent /var/log
In reply to Chen QiRespect VOLATILE_VAR_LOG variable so that if it's set to "no", we could have persistent /var/log on the final image.
[YOCTO #6132]
--- meta/recipes-core/initscripts/initscripts-1.0/volatiles | 1 - meta/recipes-core/initscripts/initscripts_1.0.bb | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-)
meta/recipes-core/initscripts/initscripts-1.0/volatiles +0 -1
@@ -25,7 +25,6 @@ d root root 1777 /run/lock none d root root 0755 /var/volatile/log none d root root 1777 /var/volatile/tmp none l root root 1777 /var/lock /run/lock -l root root 0755 /var/log /var/volatile/log l root root 0755 /var/run /run l root root 1777 /var/tmp /var/volatile/tmp l root root 1777 /tmp /var/tmp
meta/recipes-core/initscripts/initscripts_1.0.bb +3 -0
@@ -102,6 +102,9 @@ do_install () { install -m 0755 ${WORKDIR}/read-only-rootfs-hook.sh ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/save-rtc.sh ${D}${sysconfdir}/init.d install -m 0644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/00_core + if [ ${@ oe.types.boolean('${VOLATILE_LOG_DIR}') } = True ]; then + echo "l root root 0755 /var/log /var/volatile/log" >> ${D}${sysconfdir}/default/volatiles/00_core + fi install -m 0755 ${WORKDIR}/dmesg.sh ${D}${sysconfdir}/init.d install -m 0644 ${WORKDIR}/logrotate-dmesg.conf ${D}${sysconfdir}/
Signature · 1 line
1.9.1
PATCH v2 4/4 package.bbclass: support persistent /var/log
In reply to Chen QiAdd a new file, fs-perms-persistent-log.txt, which treats /var/log as a directory instead of a link.
Modify package.bbclass to use this file if VOLATILE_LOG_DIR is not set to "yes".
[YOCTO #6132]
--- meta/classes/package.bbclass | 2 +- meta/files/fs-perms-persistent-log.txt | 69 ++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 meta/files/fs-perms-persistent-log.txt
meta/classes/package.bbclass +1 -1
@@ -733,7 +733,7 @@ python fixup_perms () { bbpath = d.getVar('BBPATH', True) fs_perms_tables = d.getVar('FILESYSTEM_PERMS_TABLES', True) if not fs_perms_tables: - fs_perms_tables = 'files/fs-perms.txt' + fs_perms_tables = ['files/fs-perms-persistent-log.txt', 'files/fs-perms.txt'][d.getVar('VOLATILE_LOG_DIR', True) == 'yes'] for conf_file in fs_perms_tables.split(): str += " %s" % bb.utils.which(bbpath, conf_file) return str
meta/files/fs-perms-persistent-log.txt new file +69 -0
69 lines not on this page · raw message
Signature · 1 line
1.9.1
Re: [PATCH V2 4/4] package.bbclass: support persistent /var/log
Quoted 3 lines · Chen Qi
(quoted diff) +1
-1- fs_perms_tables = 'files/fs-perms.txt' + fs_perms_tables = ['files/fs-perms-persistent-log.txt','files/fs-perms.txt'][d.getVar('VOLATILE_LOG_DIR', True) == 'yes']
Now that the rest of the changes treat VOLATILE_LOG_DIR as a boolean, this code here also needs to be changed. Otherwise VOLATILE_LOG_DIR=1 or VOLATILE_LOG_DIR=y won't work correctly.
You might also want to change the description of the variable in the first patch to mention those other values.
Signature · 6 lines
Best Regards, Patrick Ohly The content of this message is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak on behalf of Intel on this matter.