aboutsummaryrefslogtreecommitdiffstats
path: root/main/openrc/modloop.initd
diff options
context:
space:
mode:
authorCarlo Landmeter <clandmeter@gmail.com>2010-09-16 15:55:51 +0000
committerCarlo Landmeter <clandmeter@gmail.com>2010-09-16 15:55:51 +0000
commit16dbbaafe3bf7a3b9516e61b2cfe447eb7e56a86 (patch)
treed0bea7ba08f391de186cb7ba463b18ee6404d625 /main/openrc/modloop.initd
parent218a9a6dbe2693db2c9192a5a91a345443b3b3b9 (diff)
downloadaports-16dbbaafe3bf7a3b9516e61b2cfe447eb7e56a86.tar.bz2
aports-16dbbaafe3bf7a3b9516e61b2cfe447eb7e56a86.tar.xz
main/openrc: add unionfs support
Allow modules to be installed when running from RAM
Diffstat (limited to 'main/openrc/modloop.initd')
-rw-r--r--main/openrc/modloop.initd16
1 files changed, 13 insertions, 3 deletions
diff --git a/main/openrc/modloop.initd b/main/openrc/modloop.initd
index cf46c98df0..3cb62732ee 100644
--- a/main/openrc/modloop.initd
+++ b/main/openrc/modloop.initd
@@ -63,10 +63,20 @@ start() {
fi
mkdir -p /.modloop /lib
- mount -o loop,ro -t cramfs $alpine_mnt/$modloop /.modloop &&\
- rm -rf /lib/modules &&\
- ln -sf /.modloop/modules /lib/
+ mount -o loop,ro -t cramfs $alpine_mnt/$modloop /.modloop
+
eend $? || return 1
+
+ #use unionfs is available and configured
+ if grep -q -w "unionfs$" /proc/filesystems && [ -n "$unionfs_size" ]; then
+ ebegin "UnionFS detected. Mounting modloop rw"
+ mkdir -p /.modunisonfs/modules /lib/modules
+ mount -t tmpfs -o size="$unionfs_size" tmpfs /.modunisonfs/modules
+ mount -t unionfs -o dirs=/.modunisonfs/modules=rw:/.modloop/modules=ro unionfs /lib/modules
+ eend $? || return 1
+ else
+ rm -rf /lib/modules && ln -sf /.modloop/modules /lib/
+ fi
# copy firmware if there are any
if [ -d $alpine_mnt/firmware ]; then