[OpenWrt-Devel] [PATCH v4 1/4] mvebu: add squashfs image type to MMCProfile

Andrej Vlasic andrej.vlasic at sartura.hr
Thu May 5 20:04:27 EDT 2016


Hi Josua,

On 04.05.2016 21:24, josua.mayer97 at gmail.com wrote:
> From: Josua Mayer <josua.mayer97 at gmail.com>
>
> Added gen_mvebu_sdcard_img.sh to create bootable sdcard images. It takes
> the bootloader and partition images to create a bootable sdcard image.
>
> Partition Layout:
> p1: fat32: for kernel, dtb and boot config files if any
> p2: squashfs: for openwrt
>
> This change is developed for the Clearfog, but should work on all A38x
> SoCs that can boot from mmc.
>
> Signed-off-by: Josua Mayer <josua.mayer97 at gmail.com>
> ---
>  target/linux/mvebu/image/Makefile                |  16 ++++
>  target/linux/mvebu/image/gen_mvebu_sdcard_img.sh | 100 +++++++++++++++++++++++
>  tools/Makefile                                   |   1 +
>  3 files changed, 117 insertions(+)
>  create mode 100755 target/linux/mvebu/image/gen_mvebu_sdcard_img.sh
>
> diff --git a/target/linux/mvebu/image/Makefile b/target/linux/mvebu/image/Makefile
> index cb73c3b..fc5fded 100644
> --- a/target/linux/mvebu/image/Makefile
> +++ b/target/linux/mvebu/image/Makefile
> @@ -107,6 +107,9 @@ define MMCProfile
>      ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
>  	$(call Image/Build/Profile,$(1)/Initramfs)
>      endif
> +    ifneq ($(CONFIG_TARGET_ROOTFS_SQUASHFS),)
> +	$(call Image/Build/squashfs)
> +    endif
>    endef
>
>    define Image/Build/Profile/$(1)/Initramfs
> @@ -114,6 +117,19 @@ define MMCProfile
>  	cp $(KDIR)/uImage-initramfs-$(2) $(BIN_DIR)/$(IMG_PREFIX)-$(2)-initramfs
>    endef
>
> +  define Image/Build/Profile/$(1)/squashfs
> +	$(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
> +	cp $(KDIR)/root.squashfs $(BIN_DIR)/$(IMG_PREFIX)-$(2)-root.squashfs
> +	rm -f $(BIN_DIR)/$(IMG_PREFIX)-$(2)-boot.fat32
> +	mkfs.fat -C $(BIN_DIR)/$(IMG_PREFIX)-$(2)-boot.fat32 $(shell echo $$((4*1024)) # 4MB)
> +	mcopy -i $(BIN_DIR)/$(IMG_PREFIX)-$(2)-boot.fat32 $(KDIR)/zImage ::
> +	mcopy -i $(BIN_DIR)/$(IMG_PREFIX)-$(2)-boot.fat32 $(DTS_DIR)/$(2).dtb ::
> +	./gen_mvebu_sdcard_img.sh "$(BIN_DIR)/$(IMG_PREFIX)-$(2)-squashfs-sdcard.img" \
> +		"$(BIN_DIR)/uboot-mvebu-clearfog/openwrt-mvebu-clearfog-u-boot-spl.kwb" \
> +		c "$(BIN_DIR)/$(IMG_PREFIX)-$(2)-boot.fat32" \
> +		83 "$(BIN_DIR)/$(IMG_PREFIX)-$(2)-root.squashfs"
> +  endef
> +

Image generation script here requires u-boot binary to exist, but what 
if one doesn't select u-boot to be generated? It would be better to 
exclude it from generated sdcard image, it can be flashed anyway with dd 
to beginning of the sd card.

Also one ext4 partition for boot and second one for rootfs would be 
better than fat32 + squashfs on sdcard, both Marvell u-boot and 
uboot-mvebu have support for loading kernel from ext4.

>    PROFILES_LIST += $(1)
>  endef
>
> diff --git a/target/linux/mvebu/image/gen_mvebu_sdcard_img.sh b/target/linux/mvebu/image/gen_mvebu_sdcard_img.sh
> new file mode 100755
> index 0000000..88d017a
> --- /dev/null
> +++ b/target/linux/mvebu/image/gen_mvebu_sdcard_img.sh
> @@ -0,0 +1,100 @@
> +#!/bin/bash -x
> +#
> +# Copyright (C) 2016 Josua Mayer
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License
> +# as published by the Free Software Foundation; either version 2
> +# of the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> +#
> +
> +usage() {
> +	echo "$0 <outfile> <bootloader> [<type_partitionN> <img_partitionN>]?"
> +}
> +
> +# always require first 2 arguments
> +# then in pairs up to 8 more for a total of up to 4 partitions
> +if [ $# -lt 2 ] || [ $# -gt 10 ] || [ $((($#-2)%2)) -ne 0 ]; then
> +	usage
> +	exit 1
> +fi
> +
> +# static settings
> +SDCARD_HEADS=16
> +SDCARD_SECTORS=63
> +SDCARD_ALIGNMENT=4096
> +
> +# parameters
> +OUTFILE="$1"
> +BOOTLOADER="$2"
> +# up to 4 partitions
> +# when calculating size of images in Kilobytes, NEVER round down!
> +PART1_TYPE=$3
> +PART1_IMG="$4"
> +PART1_SIZE=$((($(stat --print="%s" "$PART1_IMG")+1023)/1024))K
> +PART2_TYPE=$5
> +PART2_IMG="$6"
> +PART2_SIZE=$((($(stat --print="%s" "$PART2_IMG")+1023)/1024))K
> +PART3_TYPE=$7
> +PART3_IMG="$8"
> +PART3_SIZE=$((($(stat --print="%s" "$PART3_IMG")+1023)/1024))K
> +PART4_TYPE=$9
> +PART4_IMG="${10}"
> +PART4_SIZE=$((($(stat --print="%s" "$PART4_IMG")+1023)/1024))K
> +
> +# So how many partitions were given?
> +numparts=$((($#-2)/2))
> +case $numparts in
> +	0)
> +		set `ptgen -o "$OUTFILE" \
> +			-h $SDCARD_HEADS -s $SDCARD_SECTORS -l $SDCARD_ALIGNMENT`
> +			dd of="$OUTFILE" if="$BOOTLOADER" bs=512 seek=1 conv=notrunc
> +		;;
> +	1)
> +		set `ptgen -o "$OUTFILE" \
> +			-h $SDCARD_HEADS -s $SDCARD_SECTORS -l $SDCARD_ALIGNMENT \
> +			-t $PART1_TYPE -p $PART1_SIZE`
> +		dd of="$OUTFILE" if="$PART1_IMG" bs=512 seek=$(($1/512)) conv=notrunc
> +		;;
> +	2)
> +		set `ptgen -o "$OUTFILE" \
> +			-h $SDCARD_HEADS -s $SDCARD_SECTORS -l $SDCARD_ALIGNMENT \
> +			-t $PART1_TYPE -p $PART1_SIZE \
> +			-t $PART2_TYPE -p $PART2_SIZE`
> +			dd of="$OUTFILE" if="$BOOTLOADER" bs=512 seek=1 conv=notrunc
> +			dd of="$OUTFILE" if="$PART1_IMG" bs=512 seek=$(($1/512)) conv=notrunc
> +			dd of="$OUTFILE" if="$PART2_IMG" bs=512 seek=$(($2/512)) conv=notrunc
> +		;;
> +	3)
> +		set `ptgen -o "$OUTFILE" \
> +			-h $SDCARD_HEADS -s $SDCARD_SECTORS -l $SDCARD_ALIGNMENT \
> +			-t $PART1_TYPE -p $PART1_SIZE \
> +			-t $PART2_TYPE -p $PART2_SIZE \
> +			-t $PART3_TYPE -p $PART3_SIZE`
> +			dd of="$OUTFILE" if="$BOOTLOADER" bs=512 seek=1 conv=notrunc
> +			dd of="$OUTFILE" if="$PART1_IMG" bs=512 seek=$(($1/512)) conv=notrunc
> +			dd of="$OUTFILE" if="$PART2_IMG" bs=512 seek=$(($2/512)) conv=notrunc
> +			dd of="$OUTFILE" if="$PART3_IMG" bs=512 seek=$(($3/512)) conv=notrunc
> +		;;
> +	4)
> +		set `ptgen -o "$OUTFILE" \
> +			-h $SDCARD_HEADS -s $SDCARD_SECTORS -l $SDCARD_ALIGNMENT \
> +			-t $PART1_TYPE -p $PART1_SIZE \
> +			-t $PART2_TYPE -p $PART2_SIZE \
> +			-t $PART3_TYPE -p $PART3_SIZE \
> +			-t $PART4_TYPE -p $PART4_SIZE`
> +			dd of="$OUTFILE" if="$BOOTLOADER" bs=512 seek=1 conv=notrunc
> +			dd of="$OUTFILE" if="$PART1_IMG" bs=512 seek=$(($1/512)) conv=notrunc
> +			dd of="$OUTFILE" if="$PART2_IMG" bs=512 seek=$(($2/512)) conv=notrunc
> +			dd of="$OUTFILE" if="$PART3_IMG" bs=512 seek=$(($3/512)) conv=notrunc
> +			dd of="$OUTFILE" if="$PART4_IMG" bs=512 seek=$(($4/512)) conv=notrunc
> +esac
> diff --git a/tools/Makefile b/tools/Makefile
> index 187655e..9a08573 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -38,6 +38,7 @@ tools-$(CONFIG_TARGET_x86) += qemu
>  tools-$(CONFIG_TARGET_mxs) += elftosb sdimage
>  tools-$(CONFIG_TARGET_brcm2708)$(CONFIG_TARGET_sunxi)$(CONFIG_TARGET_mxs) += mtools dosfstools
>  tools-$(CONFIG_TARGET_ar71xx) += lzma-old squashfs
> +tools-$(CONFIG_TARGET_mvebu) += squashfs dosfstools
>  tools-y += lzma squashfs4
>  tools-$(BUILD_B43_TOOLS) += b43-tools
>  tools-$(BUILD_PPL_CLOOG) += ppl cloog
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list