From af4168c70ec5fc1982c83dc22d75de2ba6aa30d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Sat, 7 Feb 2015 22:21:32 +0200 Subject: support for tmpfs overlay over root useful if wanting to optimize boot time, and do device updates via read-only system image. package management is not too useful in these situations. --- features.d/base.modules | 1 + initramfs-init.in | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/features.d/base.modules b/features.d/base.modules index 038335d..f8f271d 100644 --- a/features.d/base.modules +++ b/features.d/base.modules @@ -1 +1,2 @@ kernel/drivers/block/loop.ko +kernel/fs/overlayfs diff --git a/initramfs-init.in b/initramfs-init.in index 6357965..fd3e510 100755 --- a/initramfs-init.in +++ b/initramfs-init.in @@ -387,7 +387,8 @@ eval set -- `cat /proc/cmdline` myopts="alpine_dev autodetect autoraid chart cryptroot cryptdm debug_init dma init_args keep_apk_new modules ovl_dev pkgs quiet root_size root - usbdelay ip alpine_repo apkovl alpine_start splash blacklist" + usbdelay ip alpine_repo apkovl alpine_start splash blacklist + overlaytmpfs" for opt; do case "$opt" in @@ -544,7 +545,16 @@ if [ -n "$KOPT_root" ]; then start_$i done ebegin "Mounting root" - retry_mount -o ro $KOPT_root $sysroot 2>/dev/null + if [ "$KOPT_overlaytmpfs" = "yes" ]; then + mkdir -p /media/root-ro /media/root-rw $sysroot/media/root-ro $sysroot/media/root-rw + retry_mount -o ro $KOPT_root /media/root-ro 2>/dev/null + mount -t tmpfs root-tmpfs /media/root-rw + mkdir -p /media/root-rw/work /media/root-rw/root + mount -t overlay -o lowerdir=/media/root-ro,upperdir=/media/root-rw/root,workdir=/media/root-rw/work overlayfs $sysroot + else + retry_mount -o ro $KOPT_root $sysroot 2>/dev/null + fi + eend $? cat /proc/mounts | while read DEV DIR TYPE OPTS ; do if [ "$DIR" != "/" -a "$DIR" != "$sysroot" -a -d "$DIR" ]; then -- cgit v1.2.3