All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denys Dmytriyenko <denys@ti.com>
To: Jacob Stiffler <j-stiffler@ti.com>
Cc: meta-arago@arago-project.org
Subject: Re: [tisdk-build-scripts][PATCH] package-sdks: Generate the SD Card image.
Date: Wed, 10 Dec 2014 12:41:12 -0500	[thread overview]
Message-ID: <20141210174112.GD5113@edge> (raw)
In-Reply-To: <1418222049-9374-1-git-send-email-j-stiffler@ti.com>

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...

-- 
Denys


On Wed, Dec 10, 2014 at 09:34:09AM -0500, Jacob Stiffler wrote:
> Signed-off-by: Jacob Stiffler <j-stiffler@ti.com>
> ---
>  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
> meta-arago@arago-project.org
> http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago


  parent reply	other threads:[~2014-12-10 17:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-10 14:34 [tisdk-build-scripts][PATCH] package-sdks: Generate the SD Card image Jacob Stiffler
2014-12-10 17:22 ` Cooper Jr., Franklin
2014-12-10 17:41 ` Denys Dmytriyenko [this message]
2014-12-10 17:55   ` Cooper Jr., Franklin
2014-12-10 18:22     ` Denys Dmytriyenko
2014-12-10 20:03       ` Cooper Jr., Franklin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141210174112.GD5113@edge \
    --to=denys@ti.com \
    --cc=j-stiffler@ti.com \
    --cc=meta-arago@arago-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.