diff options
Diffstat (limited to 'builder/dnbd3-rootfs/scripts')
| -rw-r--r-- | builder/dnbd3-rootfs/scripts/utils.sh | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/builder/dnbd3-rootfs/scripts/utils.sh b/builder/dnbd3-rootfs/scripts/utils.sh index 4c0ffee2..95a17af4 100644 --- a/builder/dnbd3-rootfs/scripts/utils.sh +++ b/builder/dnbd3-rootfs/scripts/utils.sh @@ -99,3 +99,25 @@ function utils_dependency_check() { done return $result } +function utils_create_partition_via_offset() { + local device="$1" + local nameOrUUID="$2" + local loopDevice=$(losetup -f) + + local sectorSize=$(blockdev --getbsz $device) + local partitionInfo=$(partx --raw --noheadings --output START,NAME,UUID /dev/nbd0 2>/dev/null| grep $nameOrUUID) + local offsetSectors=$(echo $partitionInfo | cut -d' ' -f1) + if [ -z "$offsetSectors" ]; then + warn "could not find partition with label/uuid '$nameOrUUID' on device $device" + return 1 + fi + #warn $(($offsetSectors*512)) # could overflow on 32bit systems + local offsetBytes=$(echo $| awk -v x=$offsetSectors -v y=$sectorSize '{print x * y}') + + # test if mount works directly (problem with btrfs device id) + #mount -v -o loop,offset=$offsetBytes $device $mountPoint + losetup -v -o $offsetBytes $loopDevice $device + echo $loopDevice +} + + |
