main/openrc: add unionfs support

Allow modules to be installed when running from RAM
This commit is contained in:
Carlo Landmeter 2010-09-16 15:55:51 +00:00
parent 218a9a6dbe
commit 16dbbaafe3
2 changed files with 20 additions and 7 deletions

View File

@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=openrc
pkgver=0.6.1
pkgrel=0
pkgrel=1
pkgdesc="OpenRC manages the services, startup and shutdown of a host"
url="http://roy.marples.name/openrc"
license='BSD-2'
@ -18,6 +18,7 @@ source="http://roy.marples.name/downloads/$pkgname/$pkgname-$pkgver.tar.bz2
modloop.initd
networking.initd
local.start
modloop.confd
"
prepare() {
@ -49,7 +50,8 @@ package() {
j=${i##*/}
install -Dm755 $i "$pkgdir"/etc/init.d/${j%.initd}
done
install -D -m644 "$srcdir"/modloop.confd "$pkgdir"/etc/conf.d/modloop
install -Dm644 ../local.start "$pkgdir"/etc/conf.d/local.start
}
@ -60,6 +62,7 @@ c32e15b0858eef708497e7ee6355a055 hostname.initd
b1e64885f301166df30be3e3cf5338ff hwdrivers.initd
33ca3e558c42cdd17adccbc7807298f7 keymaps.initd
098a1f16812f56fcb56eb6b6f0fa31f6 modules.initd
4c69d1c6a84cbe0195496c14a757579b modloop.initd
80b3989370c8bf5cf23e65cd924f9846 modloop.initd
c05fc2ea5d771ca68cbb8d91494c9a2b networking.initd
0a615d93aab691364c03539c3b496dcc local.start"
0a615d93aab691364c03539c3b496dcc local.start
c1ec888202d868710b5749f7b217d1e3 modloop.confd"

View File

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