Skip to contentSkip to conversation

var/volatile: Mount it if doing ro-rfs

PATCH Superseded Khem Raj 2 participants 4 messages Mar 11, 2015

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

PATCH 1/1 var/volatile: Mount it if doing ro-rfs

- 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
---
 meta/classes/image.bbclass                                             | 1 +
 meta/recipes-core/base-files/base-files/fstab                          | 1 -
 meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh | 2 +-
 meta/recipes-core/systemd/systemd/journald-volatile.conf               | 2 +-
 4 files changed, 3 insertions(+), 3 deletions(-)
meta/classes/image.bbclass +1 -0
index 89eb5f3..7e49e7a 100644
@@ -228,6 +228,7 @@ read_only_rootfs_hook () {
 	fi
 
 	if ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", "false", d)}; then
+	    sed -i -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
meta/recipes-core/base-files/base-files/fstab +0 -1
index 739b844..56b14d7 100644
@@ -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
meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh +1 -1
index 1a0328d..3ff39f4 100644
@@ -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
meta/recipes-core/systemd/systemd/journald-volatile.conf +1 -1
index b11e160..9356a4e 100644
@@ -3,4 +3,4 @@
 # /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
+RequiresMountsFor=/var/volatile
Signature · 1 line
2.1.4
#1 lore raw
Quoted 10 lines · Khem Raj

- 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.

Quoted 8 lines
Change-Id I0b176b3e1c1e88e84d2c93154aac04cef565d8ea
---
 meta/classes/image.bbclass                                             | 1 +
 meta/recipes-core/base-files/base-files/fstab                          | 1 -
 meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh | 2 +-
 meta/recipes-core/systemd/systemd/journald-volatile.conf               | 2 +-
 4 files changed, 3 insertions(+), 3 deletions(-)

Which combinations has this been tested with? Given the time the patch has existed for, I'm sceptical all the combinations we need have been tested, I'd love to be wrong.

This is a pretty major change of behaviour and given the problems previous changes have caused, I'm very very very nervous about what issues this is going to cause :(.

Cheers,

Richard

author
#2 lore raw
Quoted 24 lines · Richard Purdie
Quoted 10 lines · Khem Raj

- 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.

Quoted 4 lines
Change-Id I0b176b3e1c1e88e84d2c93154aac04cef565d8ea
Signed-off-by Khem Raj <[email protected] <javascript:;>>

---
meta/classes/image.bbclass

| 1 +

Quoted 1 line

meta/recipes-core/base-files/base-files/fstab

| 1 -

Quoted 1 line

meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh

| 2 +-

Quoted 1 line

meta/recipes-core/systemd/systemd/journald-volatile.conf

| 2 +-

Quoted 1 line
 4 files changed, 3 insertions(+), 3 deletions(-)
Quoted 7 lines

Which combinations has this been tested with? Given the time the patch has existed for, I'm sceptical all the combinations we need have been tested, I'd love to be wrong.

This is a pretty major change of behaviour and given the problems previous changes have caused, I'm very very very nervous about what issues this is going to cause :(.

Systemd in both ways but not sysvinit

Quoted 6 lines

Cheers,

Richard

author
#3 lore raw
Quoted 30 lines · Khem Raj

On Wednesday, March 11, 2015, Richard Purdie <[email protected] <mailto:[email protected]>> wrote:

Quoted 10 lines · Khem Raj

- 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.

Quoted 8 lines
Change-Id I0b176b3e1c1e88e84d2c93154aac04cef565d8ea
Signed-off-by Khem Raj <[email protected] <javascript:;>>
---
 meta/classes/image.bbclass                                             | 1 +
 meta/recipes-core/base-files/base-files/fstab                          | 1 -
 meta/recipes-core/initscripts/initscripts-1.0/read-only-rootfs-hook.sh | 2 +-
 meta/recipes-core/systemd/systemd/journald-volatile.conf               | 2 +-
 4 files changed, 3 insertions(+), 3 deletions(-)

Which combinations has this been tested with? Given the time the patch has existed for, I'm sceptical all the combinations we need have been tested, I'd love to be wrong.

Quoted 5 lines

This is a pretty major change of behaviour and given the problems previous changes have caused, I'm very very very nervous about what issues this is going to cause :(.

Systemd in both ways but not sysvinit

Just when you think all is well, I just sent a V2, that seemed to work on x86 emulator, but due diligence is better I don’t have sysvinit setups, its fine if it doesn’t go in, the fact that patch is out there folks can always back port after release.

Quoted 5 lines

Cheers,

Richard