diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-08-24 10:33:53 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-08-24 10:35:08 +0000 |
commit | 96fe7d3661d0ea57b367d6daad2ea61f82ebeb94 (patch) | |
tree | 74eaaaa0c10aaf40ca9ad718299531d9cfec8fbd | |
parent | 5613ea69f5be77c27274e6216dc9b03182da0fd3 (diff) | |
download | alpine_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/APKBUILD | 4 | ||||
-rw-r--r-- | main/openrc/modloop.initd | 33 |
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 @@ | |||
2 | pkgname=openrc | 2 | pkgname=openrc |
3 | pkgver=0.8.3 | 3 | pkgver=0.8.3 |
4 | _ver=${pkgver/_git*/} | 4 | _ver=${pkgver/_git*/} |
5 | pkgrel=3 | 5 | pkgrel=4 |
6 | pkgdesc="OpenRC manages the services, startup and shutdown of a host" | 6 | pkgdesc="OpenRC manages the services, startup and shutdown of a host" |
7 | url="http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git" | 7 | url="http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git" |
8 | arch="all" | 8 | arch="all" |
@@ -77,6 +77,6 @@ c32e15b0858eef708497e7ee6355a055 hostname.initd | |||
77 | b1e64885f301166df30be3e3cf5338ff hwdrivers.initd | 77 | b1e64885f301166df30be3e3cf5338ff hwdrivers.initd |
78 | 33ca3e558c42cdd17adccbc7807298f7 keymaps.initd | 78 | 33ca3e558c42cdd17adccbc7807298f7 keymaps.initd |
79 | 098a1f16812f56fcb56eb6b6f0fa31f6 modules.initd | 79 | 098a1f16812f56fcb56eb6b6f0fa31f6 modules.initd |
80 | 408e28f247c7cc71fa104c07869417f4 modloop.initd | 80 | e9dae56ec441a9d3f1013863751c0e52 modloop.initd |
81 | af16db0d798392c7c0ed3434e4bad241 networking.initd | 81 | af16db0d798392c7c0ed3434e4bad241 networking.initd |
82 | c1ec888202d868710b5749f7b217d1e3 modloop.confd" | 82 | c1ec888202d868710b5749f7b217d1e3 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 | ||
23 | resolve_dev() { | ||
24 | case "$1" in | ||
25 | UUID=*|LABEL=*) findfs "$1";; | ||
26 | *) readlink -f "$1";; | ||
27 | esac | ||
28 | } | ||
29 | |||
23 | find_mnt() { | 30 | find_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) |