summaryrefslogtreecommitdiff
path: root/sysutils
diff options
context:
space:
mode:
authorgson <gson@pkgsrc.org>2011-12-06 16:13:42 +0000
committergson <gson@pkgsrc.org>2011-12-06 16:13:42 +0000
commitb0fad7cc2c32d7fd934607f1f4343b8c1854243c (patch)
treeeed810fdb17065bb76261033d54b656db8bd4957 /sysutils
parent7dd81821af9bc3a6d1cd3936184de9f8f4305b10 (diff)
downloadpkgsrc-b0fad7cc2c32d7fd934607f1f4343b8c1854243c.tar.gz
Find the first free vnd device using next_avil () function from Robert Elz
instead of hardcoding vnd0.
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/mkmemstick/Makefile4
-rw-r--r--sysutils/mkmemstick/files/mkmemstick.sh49
2 files changed, 47 insertions, 6 deletions
diff --git a/sysutils/mkmemstick/Makefile b/sysutils/mkmemstick/Makefile
index bed836fb1f6..cd18790db43 100644
--- a/sysutils/mkmemstick/Makefile
+++ b/sysutils/mkmemstick/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.2 2011/10/13 16:01:06 gson Exp $
+# $NetBSD: Makefile,v 1.3 2011/12/06 16:13:42 gson Exp $
#
-DISTNAME= mkmemstick-20111013
+DISTNAME= mkmemstick-20111206
CATEGORIES= sysutils
MASTER_SITES= # none
DISTFILES= # none
diff --git a/sysutils/mkmemstick/files/mkmemstick.sh b/sysutils/mkmemstick/files/mkmemstick.sh
index b1960db5b4e..db7b1716a98 100644
--- a/sysutils/mkmemstick/files/mkmemstick.sh
+++ b/sysutils/mkmemstick/files/mkmemstick.sh
@@ -32,14 +32,55 @@ drivedata: 0
a: @SECTORS@ 0 4.2BSD 1024 8192 0
d: @SECTORS@ 0 unused 0 0
"
-vnddev="vnd0"
-vndmnt="${dstbase}/mnt"
-
die() {
echo "fatal: $0"
exit 2
}
+next_avail ()
+{
+ local dev="$1"
+ local N=$(( ${#dev} + 1 ))
+ local unit units
+
+ units=$(
+ sysctl -n hw.disknames |
+ tr ' ' '\012' |
+ grep '^'"${dev}"'[0-9]' |
+ sort -n -k 1.$N )
+
+ test -z "${units}" && {
+ test -e "/dev/${dev}0a" || {
+ echo >&2 "No ${dev}s available!"
+ return 1
+ }
+ echo "${dev}0"
+ return
+ }
+
+ N=0
+ for unit in ${units}
+ do
+ if [ "${unit}" = "${dev}${N}" ]
+ then
+ N=$(( N + 1 ))
+ else
+ echo "${dev}${N}"
+ return
+ fi
+ done
+
+ test -e /dev/"${dev}${N}a" || {
+ echo >&2 "All ${dev}s in use"
+ return 1
+ }
+
+ echo "${dev}${N}"
+}
+
+vnddev=$(next_avail vnd)
+vndmnt="${dstbase}/mnt"
+
if [ -z "$img" ]; then
echo "usage: $0 source.iso memdisk.img"
exit 1
@@ -62,7 +103,7 @@ fi
mkdir -p "$dst" || die "couldn't create directory $dst"
printf " => extracting iso image..."
-vnconfig "$vnddev" "$src"
+vnconfig "$vnddev" "$src" || die "couldn't configure vnd device $vnddev"
mkdir "$vndmnt"
mount -r -t cd9660 "/dev/${vnddev}a" "$vndmnt"
(cd "$vndmnt" && tar cf - .) | (cd "$dst" && tar xf -)