mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-02-23 11:21:12 +00:00
Use losetup instead of kpartx to set up loopback partitions
kpartx on riscv64 appears to be racy. Rather than trying to debug these fraught races somewhere between udev and libdevmapper, we can use losetup which should be simpler and less error-prone.
This commit is contained in:
parent
4112488a44
commit
5e4b2d3cc3
2
debian/control
vendored
2
debian/control
vendored
@ -22,11 +22,11 @@ Depends: ${misc:Depends},
|
||||
git,
|
||||
gnupg,
|
||||
grep-dctrl,
|
||||
kpartx,
|
||||
live-build (>= 3.0~a57-1ubuntu31~),
|
||||
lsb-release,
|
||||
lzma,
|
||||
make,
|
||||
mount,
|
||||
parted,
|
||||
procps,
|
||||
python3,
|
||||
|
@ -12,16 +12,13 @@ loop_raw=
|
||||
backing_img=
|
||||
|
||||
clean_loops() {
|
||||
local kpartx_ret
|
||||
local kpartx_stdout
|
||||
|
||||
if [ -n "${backing_img}" ]; then
|
||||
# If something just finished writing to the device or a
|
||||
# partition (e.g. the zerofree in umount_partition) udev might
|
||||
# still be processing the device.
|
||||
udevadm settle
|
||||
sync
|
||||
kpartx -v -d "${backing_img}"
|
||||
losetup -v -d "${backing_img}"
|
||||
unset backing_img
|
||||
fi
|
||||
|
||||
@ -65,18 +62,15 @@ mount_image() {
|
||||
trap clean_loops EXIT
|
||||
backing_img="$1"
|
||||
local rootpart="$2"
|
||||
kpartx_mapping="$(kpartx -s -v -a ${backing_img})"
|
||||
loop_device=$(losetup --show -f -P -v ${backing_img})
|
||||
|
||||
# Find the loop device
|
||||
loop_p1="$(echo -e ${kpartx_mapping} | head -n1 | awk '{print$3}')"
|
||||
loop_device="/dev/${loop_p1%p[0-9]*}"
|
||||
if [ ! -b ${loop_device} ]; then
|
||||
echo "unable to find loop device for ${backing_img}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the rootfs location
|
||||
rootfs_dev_mapper="/dev/mapper/${loop_p1%%[0-9]}${rootpart}"
|
||||
rootfs_dev_mapper="/dev/mapper/${loop_device}p${rootpart}"
|
||||
if [ ! -b "${rootfs_dev_mapper}" ]; then
|
||||
echo "${rootfs_dev_mapper} is not a block device";
|
||||
exit 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user