Subject: Fixing corruption of usb binary images caused by trying to modify flags in partition table when image is mounted with offset.

From: "Cody A.W. Somerville" <[email-masked]>
Date: Wed, 20 Jul 2011 08:46:11 +0200

---
 scripts/build/lb_binary_usb | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/scripts/build/lb_binary_usb b/scripts/build/lb_binary_usb
index 51e6ca7..8a168c3 100755
--- a/scripts/build/lb_binary_usb
+++ b/scripts/build/lb_binary_usb
@@ -190,16 +190,10 @@ esac
 case "${LB_BUILD_WITH_CHROOT}" in
 	true)
 		Chroot chroot "mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}"
-
-		Chroot chroot "parted -s ${FREELO} set 1 boot on" || true
-		Chroot chroot "parted -s ${FREELO} set 1 lba off" || true
 		;;
 
 	false)
 		mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}
-
-		parted -s ${FREELO} set 1 boot on || true
-		parted -s ${FREELO} set 1 lba off || true
 		;;
 esac
 
@@ -265,6 +259,24 @@ ${LB_LOSETUP} -d ${FREELO}
 
 echo "!!! The above error/warning messages can be ignored !!!"
 
+FREELO="$(${LB_LOSETUP} -f)"
+Losetup "${FREELO}" chroot/binary.img 0
+
+case "${LB_BUILD_WITH_CHROOT}" in
+	true)
+		Chroot chroot "parted -s ${FREELO} set 1 boot on" || true
+		Chroot chroot "parted -s ${FREELO} set 1 lba off" || true
+		;;
+
+	false)
+		parted -s "${FREELO}" set 1 boot on || true
+		parted -s "${FREELO}" set 1 lba off || true
+		;;
+esac
+
+sleep 1
+${LB_LOSETUP} -d ${FREELO}
+
 if [ -n "${MAKEDEV}" ]
 then
 	rm -rf chroot/dev
-- 
cgit v1.0