aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-08-24 10:33:53 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-08-24 10:35:08 +0000
commit96fe7d3661d0ea57b367d6daad2ea61f82ebeb94 (patch)
tree74eaaaa0c10aaf40ca9ad718299531d9cfec8fbd
parent5613ea69f5be77c27274e6216dc9b03182da0fd3 (diff)
downloadalpine_aports-96fe7d3661d0ea57b367d6daad2ea61f82ebeb94.tar.bz2
alpine_aports-96fe7d3661d0ea57b367d6daad2ea61f82ebeb94.tar.xz
alpine_aports-96fe7d3661d0ea57b367d6daad2ea61f82ebeb94.zip
main/openrc: fix modloop to find mounts by UUID and LABEL
ref #734
-rw-r--r--main/openrc/APKBUILD4
-rw-r--r--main/openrc/modloop.initd33
2 files changed, 31 insertions, 6 deletions
diff --git a/main/openrc/APKBUILD b/main/openrc/APKBUILD
index d02e751efc..1170048f58 100644
--- a/main/openrc/APKBUILD
+++ b/main/openrc/APKBUILD
@@ -2,7 +2,7 @@
2pkgname=openrc 2pkgname=openrc
3pkgver=0.8.3 3pkgver=0.8.3
4_ver=${pkgver/_git*/} 4_ver=${pkgver/_git*/}
5pkgrel=3 5pkgrel=4
6pkgdesc="OpenRC manages the services, startup and shutdown of a host" 6pkgdesc="OpenRC manages the services, startup and shutdown of a host"
7url="http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git" 7url="http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git"
8arch="all" 8arch="all"
@@ -77,6 +77,6 @@ c32e15b0858eef708497e7ee6355a055 hostname.initd
77b1e64885f301166df30be3e3cf5338ff hwdrivers.initd 77b1e64885f301166df30be3e3cf5338ff hwdrivers.initd
7833ca3e558c42cdd17adccbc7807298f7 keymaps.initd 7833ca3e558c42cdd17adccbc7807298f7 keymaps.initd
79098a1f16812f56fcb56eb6b6f0fa31f6 modules.initd 79098a1f16812f56fcb56eb6b6f0fa31f6 modules.initd
80408e28f247c7cc71fa104c07869417f4 modloop.initd 80e9dae56ec441a9d3f1013863751c0e52 modloop.initd
81af16db0d798392c7c0ed3434e4bad241 networking.initd 81af16db0d798392c7c0ed3434e4bad241 networking.initd
82c1ec888202d868710b5749f7b217d1e3 modloop.confd" 82c1ec888202d868710b5749f7b217d1e3 modloop.confd"
diff --git a/main/openrc/modloop.initd b/main/openrc/modloop.initd
index 714b6057a3..1a12f6fccd 100644
--- a/main/openrc/modloop.initd
+++ b/main/openrc/modloop.initd
@@ -20,10 +20,35 @@ init_KOPT() {
20 done 20 done
21} 21}
22 22
23resolve_dev() {
24 case "$1" in
25 UUID=*|LABEL=*) findfs "$1";;
26 *) readlink -f "$1";;
27 esac
28}
29
23find_mnt() { 30find_mnt() {
24 local dev="$1" 31 local search_dev="$1" fstab="$2"
25 local fsfile="$2" 32 local dev mnt fs mntopts chk
26 awk "\$ == \"$dev\" {print \$2}\"" "$fsfile" 2>/dev/null 33 case "$search_dev" in
34 UUID=*|LABEL=*|/dev/*);;
35 *) search_dev=/dev/$search_dev;;
36 esac
37 local search_real_dev=$(resolve_dev $search_dev)
38 while read dev mnt fs mntopts chk; do
39 local real_dev=$(resolve_dev $dev)
40 local i j
41 for i in "$search_dev" "$search_real_dev"; do
42 [ -z "$i" ] && continue
43 for j in "$dev" "$real_dev"; do
44 [ -z "$j" ] && continue
45 if [ "$i" = "$j" ]; then
46 echo "$mnt"
47 return
48 fi
49 done
50 done
51 done < $fstab 2>/dev/null
27} 52}
28 53
29# initialies: alpine_dev, alpine_mnt, alpine_fs, alpine_mounted 54# initialies: alpine_dev, alpine_mnt, alpine_fs, alpine_mounted
@@ -34,7 +59,7 @@ find_media() {
34 alpine_fs=${KOPT_alpine_dev#*:} 59 alpine_fs=${KOPT_alpine_dev#*:}
35 [ "$alpine_fs" = "$KOPT_alpine_dev" ] && unset alpine_fs 60 [ "$alpine_fs" = "$KOPT_alpine_dev" ] && unset alpine_fs
36 # first we check if alpine_dev is mounted and use this 61 # first we check if alpine_dev is mounted and use this
37 alpine_mnt=$(find_mnt /dev/$alpine_dev /proc/mounts) 62 alpine_mnt=$(find_mnt $alpine_dev /proc/mounts)
38 if [ -z "$alpine_mnt" ]; then 63 if [ -z "$alpine_mnt" ]; then
39 # then we check fstab 64 # then we check fstab
40 alpine_mnt=$(find_mnt /dev/$alpine_dev /etc/fstab) 65 alpine_mnt=$(find_mnt /dev/$alpine_dev /etc/fstab)