From a84a74f618b0d3eadea622a45f62c9401c4f82ba Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 31 Jul 2016 18:34:02 +0200 Subject: [PATCH] scripts/ubinize-image.sh: add support for adding custom partitions Signed-off-by: Felix Fietkau --- include/image-commands.mk | 1 + include/image.mk | 3 ++- scripts/ubinize-image.sh | 27 ++++++++++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index 00cb3410e9..40a9619c31 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -114,6 +114,7 @@ define Build/append-ubi sh $(TOPDIR)/scripts/ubinize-image.sh \ $(if $(UBOOTENV_IN_UBI),--uboot-env) \ $(if $(KERNEL_IN_UBI),--kernel $(IMAGE_KERNEL)) \ + $(foreach part,$(UBINIZE_PARTS),--part $(part)) \ $(IMAGE_ROOTFS) \ $@.tmp \ -p $(BLOCKSIZE) -m $(PAGESIZE) \ diff --git a/include/image.mk b/include/image.mk index c85a9d6505..7079f18786 100644 --- a/include/image.mk +++ b/include/image.mk @@ -347,6 +347,7 @@ define Device/Init SUBPAGESIZE := VID_HDR_OFFSET := UBINIZE_OPTS := -E 5 + UBINIZE_PARTS := MKUBIFS_OPTS := FS_OPTIONS/ubifs = $$(MKUBIFS_OPTS) @@ -365,7 +366,7 @@ DEFAULT_DEVICE_VARS := \ DEVICE_DTS DEVICE_DTS_DIR BOARD_NAME CMDLINE \ UBOOTENV_IN_UBI KERNEL_IN_UBI \ BLOCKSIZE PAGESIZE SUBPAGESIZE VID_HDR_OFFSET \ - UBINIZE_OPTS UIMAGE_NAME + UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS define Device/ExportVar $(1) : $(2):=$$($(2)) diff --git a/scripts/ubinize-image.sh b/scripts/ubinize-image.sh index b87cbb48dc..09a00b1898 100755 --- a/scripts/ubinize-image.sh +++ b/scripts/ubinize-image.sh @@ -1,5 +1,6 @@ #!/bin/sh +part="" ubootenv="" ubinize_param="" kernel="" @@ -22,6 +23,7 @@ ubivol() { name=$2 image=$3 autoresize=$4 + size="$5" echo "[$name]" echo "mode=ubi" echo "vol_id=$volid" @@ -29,6 +31,7 @@ ubivol() { echo "vol_name=$name" if [ "$image" ]; then echo "image=$image" + [ -n "$size" ] && echo "vol_size=${size}MiB" else echo "vol_size=1MiB" fi @@ -46,6 +49,22 @@ ubilayout() { ubivol $vol_id ubootenv2 vol_id=$(( $vol_id + 1 )) fi + for part in $parts; do + name="${part%%=*}" + prev="$part" + part="${part#*=}" + [ "$prev" = "$part" ] && part= + + image="${part%%=*}" + prev="$part" + part="${part#*=}" + [ "$prev" = "$part" ] && part= + + size="$part" + + ubivol $vol_id "$name" "$image" "" "$size" + vol_id=$(( $vol_id + 1 )) + done if [ "$3" ]; then ubivol $vol_id kernel "$3" vol_id=$(( $vol_id + 1 )) @@ -68,6 +87,12 @@ while [ "$1" ]; do shift continue ;; + "--part") + parts="$parts $2" + shift + shift + continue + ;; "-"*) ubinize_param="$@" break @@ -88,7 +113,7 @@ while [ "$1" ]; do done if [ ! -r "$rootfs" -o ! -r "$kernel" -a ! "$outfile" ]; then - echo "syntax: $0 [--uboot-env] [--kernel kernelimage] rootfs out [ubinize opts]" + echo "syntax: $0 [--uboot-env] [--part =] [--kernel kernelimage] rootfs out [ubinize opts]" exit 1 fi