> -----Original Message-----
> From: Dmytriyenko, Denys
> Sent: Wednesday, December 10, 2014 12:23 PM
> To: Cooper Jr., Franklin
> Cc: Stiffler, Jacob; [email protected]
> Subject: Re: [meta-arago] [tisdk-build-scripts][PATCH] package-sdks:
> Generate the SD Card image.
> 
> On Wed, Dec 10, 2014 at 12:55:28PM -0500, Cooper Jr., Franklin wrote:
> >
> >
> > > -----Original Message-----
> > > From: [email protected] [mailto:meta-arago-
> > > [email protected]] On Behalf Of Dmytriyenko, Denys
> > > Sent: Wednesday, December 10, 2014 11:41 AM
> > > To: Stiffler, Jacob
> > > Cc: [email protected]
> > > Subject: Re: [meta-arago] [tisdk-build-scripts][PATCH] package-sdks:
> > > Generate the SD Card image.
> > >
> > > Jake,
> > >
> > > Why invent another method to create an SD card? We've had too many
> > > of those already...
> > > For example, here's an old but complete one, that Chase and Franklin
> > > had in AMSDK and it is still being packaged in our SDKs from 
> > > ti-tisdk-setup
> recipe:
> > > http://arago-project.org/git/projects/?p=tisdk-setup-
> > > scripts.git;a=blob;f=create-sdcard.sh;hb=HEAD
> > >
> > > Moreover, under the Yocto Project, there is an effort to provide a
> > > standardized tool called "wic" that takes care of creating and
> > > partitioning bootable disks and SD cards. The best feature of it is
> > > not requiring root or sudo access! I was already looking at it, but
> > > it had some bugs in Daisy release, that got fixed in the new release
> > > that we'll be migrating to in the near future. And wic tool is planned to 
> > > be
> adopted for our SDK products.
> > >
> > > So, for now, I'd refrain from creating another custom script to
> > > create an SD card...
> 
> > [Franklin] So we created an image using the commands that Jake is
> > using in his script due to people still complaining that they can't
> > create an SD Card on Windows. We actually created a manual image as
> > part of the SDK download page for SDK 7.0. However, I am all for using
> > an alternative solution if wic would work. The reason why I never
> > submitted similar patches was due to my dislike of consuming system
> > resources (loop devices) and all the required sudo commands.
> 
> I understand those are the same commands, but I was suggesting to try to
> reuse the existing script, especially since it's already part of the SDK. It 
> can be
> modified to accomodate any necessary fixes...
[Franklin] Makes sense. If I remember correctly when I attempted to do that 
awhile ago you have to do some things differently at the beginning since some 
of the commands don't work on loop devices.

> 
> 
> > > On Wed, Dec 10, 2014 at 09:34:09AM -0500, Jacob Stiffler wrote:
> > > > 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
_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to