[OE-core] [PATCH 1/1] image-live.bbclass: Tweak rounding up sector count

Jussi Kukkonen jussi.kukkonen at intel.com
Fri May 27 08:10:50 UTC 2016


On 27 May 2016 at 11:08, Jussi Kukkonen <jussi.kukkonen at intel.com> wrote:
> New mkdosfs has changed the default sectors-per-track it sets on a
> new image: This number is useless in our use case but mcopy has
> sanity checks to make sure image size is an integral number of
> sectors-per-track.

Just to be on the safe side: this patch should _not_ be applied
without the dosfstools upgrade.

 - Jussi

> Make sure our sector count is always divisible by sectors-per-track.
>
> Signed-off-by: Jussi Kukkonen <jussi.kukkonen at intel.com>
> ---
>  meta/classes/image-live.bbclass | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass
> index ea6ced2..9b65753 100644
> --- a/meta/classes/image-live.bbclass
> +++ b/meta/classes/image-live.bbclass
> @@ -199,14 +199,15 @@ build_fat_img() {
>         FAT_SECTORS=$(expr $(expr $(expr $FAT_BYTES + 511) / 512) \* 2)
>         SECTORS=$(expr $SECTORS + $(expr $DIR_SECTORS + $FAT_SECTORS))
>
> -       # Determine the final size in blocks accounting for some padding
> -       BLOCKS=$(expr $(expr $SECTORS / 2) + ${BOOTIMG_EXTRA_SPACE})
> +       # Determine the final size accounting for some padding
> +       SECTORS=$(expr $SECTORS + $(expr ${BOOTIMG_EXTRA_SPACE} \* 2))
>
>         # 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)))
> +       # track or mcopy will complain. Sectors are 512 bytes, and current
> +       # mkdosfs generates images with 63 sectors per track. Use 2*63
> +       # as the mod to ensure result is divisible by two.
> +       SECTORS=$(expr $SECTORS + $(expr 126 - $(expr $SECTORS % 126)))
> +       BLOCKS=$(expr $SECTORS / 2)
>
>         # mkdosfs will sometimes use FAT16 when it is not appropriate,
>         # resulting in a boot failure from SYSLINUX. Use FAT32 for
> --
> 2.1.4
>



More information about the Openembedded-core mailing list