ipq806x: request the first free loop device dynamically for the nbg6817 sysupgrade

Instead of hardcoding /dev/loop0, it's safer to query for the first
free loop device and assign that dynamically. While /dev/loop0 is a
reasonable assumption immediately following "losetup --detach-all",
detaching the mounted overlay is no longer strictly necessary once
dual-boot support has been added for the nbg6817.

Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
This commit is contained in:
Stefan Lippers-Hollmann 2018-01-18 22:27:08 +01:00 committed by John Crispin
parent b36cf0be30
commit 42fe7b3bbe

View file

@ -47,23 +47,24 @@ zyxel_do_flash() {
} }
# Mount loop for rootfs_data # Mount loop for rootfs_data
losetup -o $offset /dev/loop0 "${rootfs}" || { local loopdev="$(losetup -f)"
losetup -o $offset $loopdev $rootfs || {
echo "Failed to mount looped rootfs_data." echo "Failed to mount looped rootfs_data."
sleep 10 sleep 10
reboot -f reboot -f
} }
echo "Format new rootfs_data at position ${offset}." echo "Format new rootfs_data at position ${offset}."
mkfs.ext4 -F -L rootfs_data /dev/loop0 mkfs.ext4 -F -L rootfs_data $loopdev
mkdir /tmp/new_root mkdir /tmp/new_root
mount -t ext4 /dev/loop0 /tmp/new_root && { mount -t ext4 $loopdev /tmp/new_root && {
echo "Saving config to rootfs_data at position ${offset}." echo "Saving config to rootfs_data at position ${offset}."
cp -v /tmp/sysupgrade.tgz /tmp/new_root/ cp -v /tmp/sysupgrade.tgz /tmp/new_root/
umount /tmp/new_root umount /tmp/new_root
} }
# Cleanup # Cleanup
losetup -d /dev/loop0 >/dev/null 2>&1 losetup -d $loopdev >/dev/null 2>&1
sync sync
umount -a umount -a
reboot -f reboot -f