systemd: Fix the problem of an empty journal on boot

systemd by default tries to write the journal to /var/log/journal.
But base-files has a symlink /var/log -> /var/volatile/log. And
/var/volatile is a tmpfs mount in /etc/fstab.

If the journal service started before /var/volatile was mounted (which
was the typical scenario) then the journal would appear empty since
the old location was mounted over.

This change fixes the problem by ensuring that the journal doesn't start
until after the mount happens.

[Yocto #7388]

(From OE-Core rev: 17e8595af2041cfd63adf73b344f7ccad3db7e01)

Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Randy Witt 2015-03-05 18:11:46 -08:00 committed by Richard Purdie
parent d7fe8b46a5
commit e75c95ceca
2 changed files with 8 additions and 0 deletions

View File

@ -0,0 +1,6 @@
# If /var/volatile is a mount point then make sure to mount it before
# the journal starts. This is because base-files creates a symlink
# /var/log -> /var/volatile/log. And if the journal starts before the mount
# happens, the journal will appear empty until restarted.
[Unit]
After=var-volatile.mount

View File

@ -48,6 +48,7 @@ SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=
file://00-create-volatile.conf \
file://init \
file://run-ptest \
file://journald-volatile.conf \
"
S = "${WORKDIR}/git"
@ -144,6 +145,7 @@ do_install() {
install -m 0644 ${WORKDIR}/*.rules ${D}${sysconfdir}/udev/rules.d/
install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
install -D -m 0644 ${WORKDIR}/journald-volatile.conf ${D}${systemd_unitdir}/system/systemd-journald.service.d/journald-volatile.conf
if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
install -d ${D}${sysconfdir}/init.d