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