All of lore.kernel.org
 help / color / mirror / Atom feed
From: William Mills <wmills@ti.com>
To: Koen Kooi <koen@dominion.thruhere.net>
Cc: "meta-ti@yoctoproject.org" <meta-ti@yoctoproject.org>
Subject: Re: [PATCH v3 1/3] sdcard_image: rewrote to avoid	using loopback and mount/unmount
Date: Fri, 16 Dec 2011 09:17:35 -0500	[thread overview]
Message-ID: <4EEB52FF.50705@ti.com> (raw)
In-Reply-To: <020D35A2-B806-4C37-AFC7-E8670D7DE004@dominion.thruhere.net>

[-- Attachment #1: Type: text/plain, Size: 11958 bytes --]



On 12/16/2011 02:23 AM, Koen Kooi wrote:
> Op 15 dec. 2011, om 16:29 heeft Kridner, Jason het volgende geschreven:
>
>> Sorry for the top-post.  Using the number of clusters is important to make sure that the DOS partitioning is valid.  I'm not confident that we'll end up with a whole number of clusters using this method.  Perhaps it isn't completely critical, but I'm not 100% comfortable getting rid of it.
> You can now try it :)
>
> http://dominion.thruhere.net/koen/angstrom/beaglebone/test/
>
> The 'oldmethod' is built using the old method, the other one with otavios patches.

Isn't the question whether the ROM bootloader handles it or not?  If so 
we need to test on Beagleboard classic (Rev B & Rev C) and -xM as well. 
The classic's on board flash should be wiped for a real test.

> regards,
>
> Koen
>
>
>> ________________________________________
>> From: meta-ti-bounces@yoctoproject.org [meta-ti-bounces@yoctoproject.org] on behalf of Otavio Salvador [otavio@ossystems.com.br]
>> Sent: Thursday, December 15, 2011 10:05 AM
>> To: meta-ti@yoctoproject.org
>> Subject: [meta-ti] [PATCH v3 1/3] sdcard_image: rewrote to avoid using  loopback and mount/unmount
>>
>> Allow generation by regular users without fancy setup requirements and
>> use of loopback and mount/unmount. Besides, this also includes
>> following improvements:
>>
>> * use of megabytes when specifying SDIMG_SIZE
>> * remove restriction of filesystem to rootfs
>>
>> Images that use this class needs to generate the rootfs filesystem and
>> set ROOTFS variable according.
>>
>> Signed-off-by: Otavio Salvador<otavio@ossystems.com.br>
>> ---
>> classes/sdcard_image.bbclass |  180 +++++++++++++++---------------------------
>> 1 files changed, 63 insertions(+), 117 deletions(-)
>>
>> diff --git a/classes/sdcard_image.bbclass b/classes/sdcard_image.bbclass
>> index 519bd9a..5f2d091 100644
>> --- a/classes/sdcard_image.bbclass
>> +++ b/classes/sdcard_image.bbclass
>> @@ -1,99 +1,42 @@
>> +#
>> +# Create an image that can by written onto a SD card using dd.
>> +#
>> +# External variables needed:
>> +#   ${ROOTFS} - the rootfs image to incorporate
>> +
>> inherit image
>>
>> # Add the fstypes we need
>> -IMAGE_FSTYPES_append = " tar.bz2 sdimg"
>> +IMAGE_FSTYPES += "sdimg"
>>
>> # Ensure required utilities are present
>> -IMAGE_DEPENDS_sdimg = "genext2fs-native e2fsprogs-native"
>> -
>> -# Change this to match your host distro
>> -LOSETUP ?= "/sbin/losetup"
>> -
>> -# Since these need to go in /etc/fstab we can hardcode them
>> -# Since the vars are weakly assigned, you can override them from your local.conf
>> -LOOPDEV ?= "/dev/loop1"
>> -LOOPDEV_BOOT ?= "/dev/loop2"
>> -LOOPDEV_FS ?= "/dev/loop3"
>> +IMAGE_DEPENDS_sdimg = "dosfstools-native parted-native"
>>
>> -# Default to 4GiB images
>> -SDIMG_SIZE ?= "444"
>> +# Default to 3.4GiB images
>> +SDIMG_SIZE ?= "3400"
>>
>> -# FS type for rootfs
>> -ROOTFSTYPE ?= "ext3"
>> +# Boot partition volume id
>> +BOOTDD_VOLUME_ID_beaglebone = "BEAGLE_BONE"
>> +BOOTDD_VOLUME_ID ?= "${MACHINE}"
>>
>> -BOOTPARTNAME_beaglebone = "BEAGLE_BONE"
>> -BOOTPARTNAME ?= "${MACHINE}"
>> -
>> -IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
>> +# Addional space for boot partition
>> +BOOTDD_EXTRA_SPACE ?= "16384"
>>
>> # Files and/or directories to be copied into the vfat partition
>> FATPAYLOAD ?= ""
>>
>> IMAGE_CMD_sdimg () {
>> -       SDIMG=${WORKDIR}/sd.img
>> -
>> -       # sanity check fstab entry for boot partition mounting
>> -       if [ "x$(cat /etc/fstab | grep ${LOOPDEV_BOOT} | grep ${WORKDIR}/tmp-mnt-boot | grep user || true)" = "x" ]; then
>> -               echo "/etc/fstab entries need to be created with the user flag for the loop devices like:"
>> -               echo "${LOOPDEV_BOOT} ${WORKDIR}/tmp-mnt-boot vfat user 0 0"
>> -        false
>> -       fi
>> -
>> -       # cleanup loops
>> -       for loop in ${LOOPDEV} ${LOOPDEV_BOOT} ${LOOPDEV_FS} ; do
>> -               ${LOSETUP} -d $loop || true
>> -       done
>> -
>> -       # If an SD image is already present, reuse and reformat it
>> -       if [ ! -e ${SDIMG} ] ; then
>> -               dd if=/dev/zero of=${SDIMG} bs=$(echo '255 * 63 * 512' | bc) count=${SDIMG_SIZE}
>> -       fi
>> -
>> -       ${LOSETUP} ${LOOPDEV} ${SDIMG}
>> -
>> -       # Create partition table
>> -       dd if=/dev/zero of=${LOOPDEV} bs=1024 count=1024
>> -       SIZE=$(/sbin/fdisk -l ${LOOPDEV} | grep Disk | grep bytes | awk '{print $5}')
>> -       CYLINDERS=$(echo $SIZE/255/63/512 | bc)
>> -       {
>> -       echo ,9,0x0C,*
>> -       echo ,,,-
>> -       } | /sbin/sfdisk -D -H 255 -S 63 -C ${CYLINDERS} ${LOOPDEV}
>> -
>> -       # Prepare loop devices for boot and filesystem partitions
>> -       BOOT_OFFSET=32256
>> -       FS_OFFSET_SECT=$(/sbin/fdisk -l -u ${LOOPDEV} 2>&1 | grep Linux | perl -p -i -e "s/\s+/ /"|cut -d " " -f 2)
>> -       FS_OFFSET=$(echo "$FS_OFFSET_SECT * 512" | bc)
>> -       FS_SIZE_BLOCKS=$(/sbin/fdisk -l -u ${LOOPDEV} 2>&1 | grep Linux | perl -p -i -e "s/\s+/ /g" \
>> -       |cut -d " " -f 4 | cut -d "+" -f 1)
>> -
>> -       LOOPDEV_BLOCKS=$(/sbin/fdisk -l -u ${LOOPDEV} 2>&1 | grep FAT | perl -p -i -e "s/\s+/ /g"|cut -d " " -f 5)
>> -       LOOPDEV_BYTES=$(echo "$LOOPDEV_BLOCKS * 1024" | bc)
>> -
>> -       ${LOSETUP} -d ${LOOPDEV}
>> -
>> -       ${LOSETUP} ${LOOPDEV_BOOT} ${SDIMG} -o ${BOOT_OFFSET}
>> -
>> -       /sbin/mkfs.vfat ${LOOPDEV_BOOT} -n ${BOOTPARTNAME} $LOOPDEV_BLOCKS
>> -
>> -       # Prepare filesystem partition
>> -       # Copy ubi used by flashing scripts
>> -       if [ -e  ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubi ] ; then
>> -               echo "Copying UBIFS image to file system"
>> -               cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubi ${IMAGE_ROOTFS}/boot/fs.ubi
>> -       fi
>> +       TMP=${WORKDIR}/tmp
>> +       SDIMG=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.sdimg
>>
>> -       # Prepare boot partion. First mount the boot partition, and copy the boot loader and supporting files
>> -       # from the root filesystem
>> -
>> -       mkdir -p ${WORKDIR}/tmp-mnt-boot
>> -       mount $LOOPDEV_BOOT ${WORKDIR}/tmp-mnt-boot
>> +       # Prepare boot filesystem
>> +       install -d $TMP/boot
>>
>>         echo "Copying bootloaders into the boot partition"
>>         if [ -e ${IMAGE_ROOTFS}/boot/MLO ] ; then
>> -               cp -v ${IMAGE_ROOTFS}/boot/MLO ${WORKDIR}/tmp-mnt-boot
>> +               cp -v ${IMAGE_ROOTFS}/boot/MLO $TMP/boot
>>         else
>> -               cp -v ${DEPLOY_DIR_IMAGE}/MLO ${WORKDIR}/tmp-mnt-boot
>> +               cp -v ${DEPLOY_DIR_IMAGE}/MLO $TMP/boot
>>         fi
>>
>>         # Check for u-boot SPL
>> @@ -103,54 +46,57 @@ IMAGE_CMD_sdimg () {
>>                 suffix=bin
>>         fi
>>
>> -       cp -v ${IMAGE_ROOTFS}/boot/uEnv.txt ${WORKDIR}/tmp-mnt-boot || true
>> -       cp -v ${IMAGE_ROOTFS}/boot/user.txt ${WORKDIR}/tmp-mnt-boot || true
>> -       cp -v ${IMAGE_ROOTFS}/boot/uImage ${WORKDIR}/tmp-mnt-boot || true
>> -
>>         if [ -e ${IMAGE_ROOTFS}/boot/u-boot.$suffix ] ; then
>> -               cp -v ${IMAGE_ROOTFS}/boot/{u-boot.$suffix} ${WORKDIR}/tmp-mnt-boot || true
>> +               cp -v ${IMAGE_ROOTFS}/boot/u-boot.$suffix $TMP/boot || true
>>         else
>> -               cp -v ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.$suffix ${WORKDIR}/tmp-mnt-boot/u-boot.$suffix
>> +               cp -v ${DEPLOY_DIR_IMAGE}/u-boot-${MACHINE}.$suffix $TMP/boot/u-boot.$suffix
>> +       fi
>> +
>> +       if [ -e ${IMAGE_ROOTFS}/boot/uImage ]; then
>> +               cp -v ${IMAGE_ROOTFS}/boot/uImage $TMP/boot || true
>> +       else
>> +               cp -v ${DEPLOY_DIR_IMAGE}/uImage-${MACHINE}.$suffix $TMP/boot/uImage
>> +       fi
>> +
>> +       cp -v ${IMAGE_ROOTFS}/boot/uEnv.txt $TMP/boot || true
>> +       cp -v ${IMAGE_ROOTFS}/boot/user.txt $TMP/boot || true
>> +
>> +       # Copy ubi used by flashing scripts
>> +       if [ -e  ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubi ] ; then
>> +               echo "Copying UBIFS image to file system"
>> +               cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubi ${IMAGE_ROOTFS}/boot/fs.ubi
>>         fi
>>
>>         if [ -n ${FATPAYLOAD} ] ; then
>>                 echo "Copying payload into VFAT"
>>                 for entry in ${FATPAYLOAD} ; do
>>                                 # add the || true to stop aborting on vfat issues like not supporting .~lock files
>> -                               cp -av ${IMAGE_ROOTFS}$entry ${WORKDIR}/tmp-mnt-boot || true
>> +                               cp -av ${IMAGE_ROOTFS}$entry $TMP/boot || true
>>                 done
>>         fi
>>
>> -       echo "${IMAGE_NAME}-${IMAGEDATESTAMP}">  ${IMAGE_ROOTFS}/etc/image-version-info
>> -
>> -       # Cleanup VFAT mount
>> -       echo "Cleaning up VFAT mount"
>> -       umount ${WORKDIR}/tmp-mnt-boot
>> -       ${LOSETUP} -d ${LOOPDEV_BOOT} || true
>> -
>> -       # Prepare rootfs parition
>> -       echo "Creating rootfs loopback"
>> -       ${LOSETUP} ${LOOPDEV_FS} ${SDIMG} -o ${FS_OFFSET}
>> -
>> -       FS_NUM_INODES=$(echo $FS_SIZE_BLOCKS / 4 | bc)
>> -
>> -       case "${ROOTFSTYPE}" in
>> -               ext3)
>> -                               genext2fs -z -N $FS_NUM_INODES -b $FS_SIZE_BLOCKS -d ${IMAGE_ROOTFS} ${LOOPDEV_FS}
>> -                               tune2fs -L ${IMAGE_NAME} -j ${LOOPDEV_FS}
>> -                               ;;
>> -               ext4)
>> -                               genext2fs -z -N $FS_NUM_INODES -b $FS_SIZE_BLOCKS -d ${IMAGE_ROOTFS} ${LOOPDEV_FS}
>> -                               tune2fs -L ${IMAGE_NAME} -j -O extents,uninit_bg,dir_index ${LOOPDEV_FS}
>> -                               ;;
>> -               *)
>> -                               echo "Please set ROOTFSTYPE to something supported"
>> -                               exit 1
>> -                               ;;
>> -       esac
>> -
>> -       ${LOSETUP} -d ${LOOPDEV_FS} || true
>> -
>> -       gzip -c ${WORKDIR}/sd.img>  ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-${IMAGEDATESTAMP}.img.gz
>> -       rm -f ${WORKDIR}/sd.img
>> +       dd if=/dev/zero of=${SDIMG} bs=$(expr 1000 \* 1000) count=${SDIMG_SIZE}
>> +
>> +       # Create the boot filesystem
>> +       BOOT_OFFSET=32256
>> +       BOOT_BLOCKS=$(du -bks $TMP/boot | cut -f 1)
>> +       BOOT_SIZE=$(expr $BOOT_BLOCKS + ${BOOTDD_EXTRA_SPACE})
>> +       mkfs.vfat -n ${BOOTDD_VOLUME_ID} -d $TMP/boot -C $TMP/boot.img $BOOT_SIZE
>> +
>> +       # Create partition table
>> +       END1=$(expr $BOOT_SIZE \* 1024)
>> +       END2=$(expr $END1 + 512)
>> +       parted -s ${SDIMG} mklabel msdos
>> +       parted -s ${SDIMG} mkpart primary fat16 ${BOOT_OFFSET}B ${END1}B
>> +       parted -s ${SDIMG} mkpart primary ext3 ${END2}B 100%
>> +       parted -s ${SDIMG} set 1 boot on
>> +       parted ${SDIMG} print
>> +
>> +       OFFSET1=$(expr $BOOT_OFFSET / 512)
>> +       OFFSET2=$(expr $END2 / 512)
>> +       dd if=$TMP/boot.img of=${SDIMG} conv=notrunc seek=$OFFSET1 bs=512
>> +       dd if=${ROOTFS} of=${SDIMG} conv=notrunc seek=$OFFSET2 bs=512
>> +
>> +       cd ${DEPLOY_DIR_IMAGE}
>> +       ln -sf ${IMAGE_NAME}.sdimg ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.sdimg
>> }
>> --
>> 1.7.2.5
>>
>> _______________________________________________
>> meta-ti mailing list
>> meta-ti@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/meta-ti
>> _______________________________________________
>> meta-ti mailing list
>> meta-ti@yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/meta-ti
>
>
> _______________________________________________
> meta-ti mailing list
> meta-ti@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-ti

[-- Attachment #2: Type: text/html, Size: 13249 bytes --]

  reply	other threads:[~2011-12-16 14:17 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-15 15:05 [PATCH v3 0/3] Rewrite sdcard_image.bbclass Otavio Salvador
2011-12-15 15:05 ` [PATCH v3 1/3] sdcard_image: rewrote to avoid using loopback and mount/unmount Otavio Salvador
2011-12-15 15:29   ` Kridner, Jason
2011-12-15 15:52     ` Otavio Salvador
2011-12-16  7:23     ` Koen Kooi
2011-12-16 14:17       ` William Mills [this message]
2011-12-16  7:39   ` Koen Kooi
2011-12-15 15:05 ` [PATCH v3 2/3] ti-hw-bringup-image: adapt to newer sdcard_image class Otavio Salvador
2011-12-15 15:05 ` [PATCH v3 3/3] cloud9-image: " Otavio Salvador
2011-12-17 16:11 ` [PATCH v3 0/3] Rewrite sdcard_image.bbclass Otavio Salvador
  -- strict thread matches above, loose matches on Subject: below --
2011-12-22 13:00 Otavio Salvador
2011-12-22 13:00 ` [PATCH v3 1/3] sdcard_image: rewrote to avoid using loopback and mount/unmount Otavio Salvador

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=4EEB52FF.50705@ti.com \
    --to=wmills@ti.com \
    --cc=koen@dominion.thruhere.net \
    --cc=meta-ti@yoctoproject.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.