summaryrefslogtreecommitdiffstats
path: root/init.d
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-01-07 16:27:32 +0200
committerTimo Teras <timo.teras@iki.fi>2009-01-07 16:27:32 +0200
commit75cf0f9306e113a6aca0444251bc9492edfd14d9 (patch)
treec8239abc13d5dd7ae1732f9c26ee5da302b3f290 /init.d
parent57a476bb4f5b7cc6ac05e7b0df09a1b595174ae1 (diff)
downloadalpine-baselayout-75cf0f9306e113a6aca0444251bc9492edfd14d9.tar.bz2
alpine-baselayout-75cf0f9306e113a6aca0444251bc9492edfd14d9.tar.xz
various: import patches from APKBUILD
Diffstat (limited to 'init.d')
-rw-r--r--init.d/modloop63
1 files changed, 63 insertions, 0 deletions
diff --git a/init.d/modloop b/init.d/modloop
new file mode 100644
index 0000000..ffa0bd9
--- /dev/null
+++ b/init.d/modloop
@@ -0,0 +1,63 @@
+#!/sbin/runscript
+
+# script that will mount image with modules
+
+# read kernel options
+for i in `cat /proc/cmdline` ; do
+ case $i in
+ *=*) eval KOPT_$i ;;
+ *) eval KOPT_$i=yes ;;
+ esac
+done
+
+find_media() {
+ ALPINE_DEV=${KOPT_alpine_dev%%:*}
+ ALPINE_MNT=`awk '/^\/dev\/'$ALPINE_DEV'/ { print $2 }' /etc/fstab`
+}
+
+start() {
+ local rc=
+ local imgdir=$(dirname ${KOPT_BOOT_IMAGE:-""})
+ find_media
+ if [ -z "$ALPINE_DEV" ] ; then
+ ebegin "Skipping mount media with modules (specify with alpine_dev)"
+ eend 0
+ return 0
+ fi
+
+ if [ -n "$KOPT_modloop" ]; then
+ CMG="$ALPINE_MNT/$KOPT_modloop"
+ else
+ CMG=$ALPINE_MNT/$imgdir/modloop.cmg
+ fi
+ ebegin "Mounting loopback device for kernel modules"
+ modprobe loop >/dev/null 2>&1 &&\
+ mount $ALPINE_MNT >/dev/null 2>&1 &&\
+ mkdir -p /.modloop &&\
+ if [ ! -f "$CMG" ] ; then
+ CMG=$ALPINE_MNT/$imgdir/modules.cmg
+ fi &&\
+ mount -o loop,ro -t cramfs $CMG /.modloop
+ rc=$?
+ if [ "$rc" = 0 ]; then
+ rm -rf /lib/modules
+ ln -sf /.modloop/modules /lib
+ fi
+ # copy firmware if there are any
+ if [ -d $ALPINE_MNT/firmware ]; then
+ mkdir -p /lib/firmware
+ cp $ALPINE_MNT/firmware/* /lib/firmware/
+ fi
+ eend $rc
+}
+
+stop() {
+ find_media
+ if [ "$ALPINE_DEV" ] ; then
+ ebegin "Unmounting loopback device for kernel modules"
+ umount -d /.modloop &&\
+ umount $ALPINE_MNT 2>/dev/null
+ eend $?
+ fi
+}
+