]> code.ossystems Code Review - openembedded-core.git/commitdiff
boot-directdisk: Fix Block Calcuation
authorSaul Wold <sgw@linux.intel.com>
Tue, 27 Mar 2012 05:42:57 +0000 (22:42 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 27 Mar 2012 12:21:46 +0000 (13:21 +0100)
This also changes the timeout to be settable

The block calcuation was not correctly rounding, see comment

Thanks to Darren Hart for fixing this.

Cc: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/boot-directdisk.bbclass

index 893164f85325eda6b5993b69348b9bca54a7cf9e..e9e1ba30db4e9959ce2ec8eb0b1a2037ba3df34d 100644 (file)
@@ -37,9 +37,8 @@ BOOTDD_EXTRA_SPACE ?= "16384"
 # Get the build_syslinux_cfg() function from the syslinux class
 
 AUTO_SYSLINUXCFG = "1"
-LABELS = "boot"
 SYSLINUX_ROOT ?= "root=/dev/sda2"
-SYSLINUX_TIMEOUT = "10" # 1 second
+SYSLINUX_TIMEOUT ?= "10"
 
 SYSLINUXCFG  = "${HDDDIR}/syslinux.cfg"
 SYSLINUXMENU = "${HDDDIR}/menu"
@@ -55,15 +54,23 @@ build_boot_dd() {
        install -m 444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${HDDDIR}/ldlinux.sys
 
        BLOCKS=`du -bks ${HDDDIR} | cut -f 1`
-       SIZE=`expr $BLOCKS + ${BOOTDD_EXTRA_SPACE}`
+       BLOCKS=`expr $BLOCKS + ${BOOTDD_EXTRA_SPACE}`
+
+       # Ensure total sectors is an integral number of sectors per
+       # track or mcopy will complain. Sectors are 512 bytes, and we
+       # generate images with 32 sectors per track. This calculation is
+       # done in blocks, thus the mod by 16 instead of 32.
+       BLOCKS=$(expr $BLOCKS + $(expr 16 - $(expr $BLOCKS % 16)))
+
+       mkdosfs -n ${BOOTDD_VOLUME_ID} -S 512 -C ${HDDIMG} $BLOCKS 
+       mcopy -i ${HDDIMG} -s ${HDDDIR}/* ::/
 
-       mkdosfs -n ${BOOTDD_VOLUME_ID} -d ${HDDDIR} -C ${HDDIMG} $SIZE 
        syslinux ${HDDIMG}
        chmod 644 ${HDDIMG}
 
        ROOTFSBLOCKS=`du -Lbks ${ROOTFS} | cut -f 1`
-       TOTALSIZE=`expr $SIZE + $ROOTFSBLOCKS`
-       END1=`expr $SIZE \* 1024`
+       TOTALSIZE=`expr $BLOCKS + $ROOTFSBLOCKS`
+       END1=`expr $BLOCKS \* 1024`
        END2=`expr $END1 + 512`
        END3=`expr \( $ROOTFSBLOCKS \* 1024 \) + $END1`