diff options
author | gson <gson@pkgsrc.org> | 2011-12-06 16:13:42 +0000 |
---|---|---|
committer | gson <gson@pkgsrc.org> | 2011-12-06 16:13:42 +0000 |
commit | b0fad7cc2c32d7fd934607f1f4343b8c1854243c (patch) | |
tree | eed810fdb17065bb76261033d54b656db8bd4957 /sysutils | |
parent | 7dd81821af9bc3a6d1cd3936184de9f8f4305b10 (diff) | |
download | pkgsrc-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/Makefile | 4 | ||||
-rw-r--r-- | sysutils/mkmemstick/files/mkmemstick.sh | 49 |
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 -) |