-# http://vserver.13thfloor.at/Stuff/QEMU/hdloop.sh
-sfd=$($SFDISK -dump $imgdev 2>/dev/null | $SED -n '
- /:/ s/[a-zA-Z]*=\ *\([0-9a-f]*\)\(,\|$\)/\1/g;
- T; s/^.*:\ //; p' | tr ' ' '.')
-$LOSETUP -d $imgdev
-
-getoffset() {
- pstart=$1
- psize=$2
-
- blksize=512
- offset=$((pstart*blksize))
- size=$((psize*blksize))
- echo $((offset+dskoff))
-}
-
-p=1
-for a in $sfd; do
- if [ "$p" = "$PARTITION" ]; then
- OFFSET=$(getoffset $(echo "$a" | tr '.' ' '))
- fi
- x=$((p++))
-done
+dump=$($PARTED -s -m $imgdev unit B print)
+$LOSETUP -d $imgdev || exit 1
+
+partoff=$(echo "$dump" | $SED -ne "s/^$PARTITION:"'\([0-9]*\)B:.*/\1/p')
+OFFSET=$((dskoff + partoff))