Sfoglia il codice sorgente

scripts/ubinize-image.sh: add support for adding custom partitions

Signed-off-by: Felix Fietkau <[email protected]>
Felix Fietkau 9 anni fa
parent
commit
a84a74f618
3 ha cambiato i file con 29 aggiunte e 2 eliminazioni
  1. 1 0
      include/image-commands.mk
  2. 2 1
      include/image.mk
  3. 26 1
      scripts/ubinize-image.sh

+ 1 - 0
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) \
 		[email protected] \
 		-p $(BLOCKSIZE) -m $(PAGESIZE) \

+ 2 - 1
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))

+ 26 - 1
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 <name>=<file>] [--kernel kernelimage] rootfs out [ubinize opts]"
 	exit 1
 fi