From: Josua Mayer <josua.maye...@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.maye...@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 + 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 -- 2.6.6 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel