diff options
Diffstat (limited to 'main/openrc/modloop.initd')
-rw-r--r-- | main/openrc/modloop.initd | 16 |
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 |