Can you add some error checking to insure that the loop device is available (not currently being used) and if not switch to another loop device? Also in case of an error you free the loop device.
> -----Original Message----- > From: [email protected] [mailto:meta-arago- > [email protected]] On Behalf Of Stiffler, Jacob > Sent: Wednesday, December 10, 2014 8:34 AM > To: [email protected] > Subject: [meta-arago] [tisdk-build-scripts][PATCH] package-sdks: Generate > the SD Card image. > > Signed-off-by: Jacob Stiffler <[email protected]> > --- > lib/oesdk/package-sdks | 82 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 82 insertions(+) > > diff --git a/lib/oesdk/package-sdks b/lib/oesdk/package-sdks index > 31a44b6..dc3eb13 100644 > --- a/lib/oesdk/package-sdks > +++ b/lib/oesdk/package-sdks > @@ -9,6 +9,84 @@ then > exit 1 > fi > > +create_sd_card_img() { > + m="$1" > + > + sd_card_img_file="${m}-${TISDK_VERSION}.img" > + > + # Make the machine specific SD card directory > + sd_card_img_root="$DEPLOY_ROOT/$m/$BUILD_ID/sd_card_img" > + > + if [ -d $sd_card_img_root ] > + then > + rm -rf $sd_card_img_root > + fi > + mkdir -p $sd_card_img_root > + > + cd $sd_card_img_root > + > + ## Create an image file full of zeros > + dd if=/dev/zero of="${sd_card_img_file}" bs=1024 count=$[2000*1024] > + > + ## Mount the file to the loopback device > + sudo losetup /dev/loop0 "${sd_card_img_file}" > + > + ## Partition the loopback into 2 partitions > + sudo parted -s /dev/loop0 mklabel msdos > + sudo parted -s /dev/loop0 unit cyl mkpart primary fat32 -- 0 9 > + sudo parted -s /dev/loop0 set 1 boot on > + sudo parted -s /dev/loop0 unit cyl mkpart primary ext2 -- 9 -2 > + > + ## Format the partitions with the necessary filesystems > + sudo mkfs.vfat -F 32 -I -n boot /dev/loop0p1 > + sudo mkfs.ext3 -L rootfs /dev/loop0p2 > + > + ## Use fdisk to get offsets (will need to multiply by blocksize (512)) > + sudo fdisk -l ${sd_card_img_file} > + > + local FDISK_INFO=`sudo fdisk -l "${sd_card_img_file}"` > + > + local UNIT_SIZE=`echo "$FDISK_INFO" | grep Units | awk '{ print $9 > + }'` > + > + local P1_START=`echo "$FDISK_INFO" | grep "${sd_card_img_file}1" | > awk '{ print $3 }'` > + local P1_END=`echo "$FDISK_INFO" | grep "${sd_card_img_file}1" | > + awk '{ print $4 }'` > + > + local P2_START=`echo "$FDISK_INFO" | grep "${sd_card_img_file}2" | > awk '{ print $2 }'` > + local P2_END=`echo "$FDISK_INFO" | grep "${sd_card_img_file}2" | > + awk '{ print $3 }'` > + > + ## Unmount the loopback device > + sudo losetup -d /dev/loop0 > + > + ## Mount the individual partitions of the loopback device for file > copying > + ## The Start (after-o option) and sizelimit numbers come from multiplying > the output > + ## of fdisk above by blocksize (512 in this case) for the appropriate > partition. > + ## 1048576 = 2048 * 512 > + ## 74448384 = 145407 * 512 > + sudo losetup /dev/loop0 "${sd_card_img_file}" -o $[$P1_START * > + $UNIT_SIZE] --sizelimit $[$P1_END * $UNIT_SIZE] > + > + mkdir ./temp_boot > + sudo mount -t vfat /dev/loop0 ./temp_boot > + sudo tar xzf ${sd_card_root}/boot_partition.tar.gz -C ./temp_boot/ > + > + ## Follow the above steps using numbers for the second partition. > + sudo losetup /dev/loop1 "${sd_card_img_file}" -o $[$P2_START * > $UNIT_SIZE] --sizelimit $[$P2_END * $UNIT_SIZE] > + mkdir ./temp_rootfs > + sudo mount -t ext3 /dev/loop1 ./temp_rootfs > + sudo tar xzf ${sd_card_root}/rootfs_partition.tar.gz -C > + ./temp_rootfs/ > + > + ## Gzip the img file to save lot of space > + zip -r ${sd_card_img_file}.zip ${sd_card_img_file} > + > + ## Clean up when done > + sudo umount ./temp_boot > + sudo umount ./temp_rootfs > + sudo rm -rf ./temp_boot/ > + sudo rm -rf ./temp_rootfs/ > + sudo losetup -d /dev/loop0 > + sudo losetup -d /dev/loop1 > + sudo rm -rf ${sd_card_img_file} > +} > + > create_sd_card_content() { > # Set m for logging purposes > m="$1" > @@ -291,6 +369,8 @@ package_web_content() { > # Move the installer into the exports directory > mv $deploy_root/${INSTALLER_PREFIX}-$m* $exports_root/ > > + mv $sd_card_img_root/${m}-${TISDK_VERSION}.img.zip $exports_root/ > + > # Create the md5sum file > cd $exports_root > md5sum * > md5sum.txt > @@ -373,6 +453,8 @@ package_individual_sdk() { > # Create the SD card tarballs in the deploy directory > create_sd_card_content $m > > + create_sd_card_img $m > + > # Package the SD card and web page contents to get ready for > # generating the webgen page and publishing the SDK > package_web_content $m > -- > 1.7.9.5 > > _______________________________________________ > meta-arago mailing list > [email protected] > http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago _______________________________________________ meta-arago mailing list [email protected] http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago
