- Do not mount /var/volatile to be tmpfs always only when generating
  readonly rootfs
- Generate var-volatile.mount unit when using system in readonly-rootfs
  to mount /var/volatile as tmpfs
- for sysvinit, mount /var/volatile to be tmpfs if its not already
  mounted so
- Use RequiresMountsFor instead of After=, so systemd figures out the
  needed dependencies for making /var/volatile accessible for journald
  and not us.

Change-Id: I0b176b3e1c1e88e84d2c93154aac04cef565d8ea
Signed-off-by: Khem Raj <raj.k...@gmail.com>
---
 meta/classes/image.bbclass                                          | 1 +
 meta/recipes-core/base-files/base-files/fstab                       | 1 -
 .../initscripts/initscripts-1.0/read-only-rootfs-hook.sh            | 2 +-
 meta/recipes-core/systemd/systemd/journald-volatile.conf            | 6 ++++++
 4 files changed, 8 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-core/systemd/systemd/journald-volatile.conf

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 03cbbf7..5ace087 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -230,6 +230,7 @@ read_only_rootfs_hook () {
        fi
 
        if ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", "false", 
d)}; then
+           sed -e 's#/tmp#/var/volatile#g' 
${IMAGE_ROOTFS}/lib/systemd/system/tmp.mount > 
${IMAGE_ROOTFS}/lib/systemd/system/var-volatile.mount
            # Update user database files so that services don't fail for a 
read-only systemd system
            for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf 
${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do
                [ -e $conffile ] || continue
diff --git a/meta/recipes-core/base-files/base-files/fstab 
b/meta/recipes-core/base-files/base-files/fstab
index 739b844..56b14d7 100644
--- a/meta/recipes-core/base-files/base-files/fstab
+++ b/meta/recipes-core/base-files/base-files/fstab
@@ -5,7 +5,6 @@ proc                 /proc                proc       defaults   
           0  0
 devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
 usbdevfs             /proc/bus/usb        usbdevfs   noauto                0  0
 tmpfs                /run                 tmpfs      
mode=0755,nodev,nosuid,strictatime 0  0
-tmpfs                /var/volatile        tmpfs      defaults              0  0
 
 # uncomment this if your device has a SD/MMC/Transflash slot
 #/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0
diff --git 
a/meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh 
b/meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh
index 1a0328d..3ff39f4 100644
--- a/meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh
@@ -29,7 +29,7 @@ is_on_read_only_partition () {
 
 if [ "$1" = "start" ] ; then
        if [ `is_on_read_only_partition /var/lib` = "yes" ]; then
-               grep -q "tmpfs /var/volatile" /proc/mounts || mount 
/var/volatile
+               grep -q "tmpfs /var/volatile" /proc/mounts || mount -t tmpfs -o 
strictatime tmpfs /var/volatile
                mkdir -p /var/volatile/lib
                cp -a /var/lib/* /var/volatile/lib
                mount --bind /var/volatile/lib /var/lib
diff --git a/meta/recipes-core/systemd/systemd/journald-volatile.conf 
b/meta/recipes-core/systemd/systemd/journald-volatile.conf
new file mode 100644
index 0000000..9356a4e
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/journald-volatile.conf
@@ -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]
+RequiresMountsFor=/var/volatile
-- 
2.1.4

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to