[ELDK] [PATCH] RFSB: add support for ubi image creation for the ubifs image

Bastian Ruppert Bastian.Ruppert at Sewerin.de
Wed Jun 1 13:47:42 CEST 2011


An ubifs image created with RFSB can be placed in an ubi image.
This image can be flashed with the ubiformat utility.

Signed-off-by: Bastian Ruppert <Bastian.Ruppert at Sewerin.de>
---
 Config.in |   42 ++++++++++++++++++++++++++++++++++++++++++
 Makefile  |   28 ++++++++++++++++++++++++++--
 2 files changed, 68 insertions(+), 2 deletions(-)

diff --git a/Config.in b/Config.in
index 03dd3ff..9dcccfd 100644
--- a/Config.in
+++ b/Config.in
@@ -215,6 +215,48 @@ config IMAGE_SQUASHFS
        default n
        help
          Create a SquashFS image
+
+menu "UBI Image"
+
+config UBI_UBINIZE_PREFIX
+       string "prefix for ubinize command"
+       default 0
+       help
+         Set a prefix for the ubinize tool.
+
+config IMAGE_UBI_1_4UBIFS
+       depends IMAGE_UBIFS
+       bool "Create UBI image for the UBIFS image"
+       default n
+       help
+         Create a UBI image containing the UBIFS image. This image can
+	 be flashed to a mtd device with the ubiformat tool.
+
+config UBI_1_CFG_VOL_NAME
+       depends IMAGE_UBI_1_4UBIFS
+       string "vol_name"
+       default "rootfs"
+       help
+         This will be used for vol_name in the cfg file
+
+config UBI_1_ERASE_BLOCK_SIZE
+       depends IMAGE_UBI_1_4UBIFS
+       int "ubi Eraseblock size in KiB"
+       default 0
+       help
+         You must set this value because it is device dependent.  Set
+	 the Eraseblock size (peb-size) as reported by the mtdinfo utility.
+
+config UBI_1_SUB_PAGE_SIZE
+       depends IMAGE_UBI_1_4UBIFS
+       int "Sub page size"
+       default 0
+       help
+         You must set this value because it is device dependent.  Set
+	 the Sub page size as reported by the mtdinfo utility.
+
+endmenu
+
 endmenu
 
 config DATE_FILE
diff --git a/Makefile b/Makefile
index 7c40960..9791ed0 100644
--- a/Makefile
+++ b/Makefile
@@ -28,6 +28,7 @@ CONFIG_DEFCONFIG   = .defconfig
 CONFIG_PACKAGES_IN = packages/Config.in
 CONFIG		   = scripts/kconfig
 BUILD		  := $(TOPDIR)/build
+AUTOGEN	          := $(BUILD)/autogen
 ifeq ($(wildcard custom/rootfs_devices.tab),)
 DEV_TAB		  := config/rootfs_devices.tab
 else
@@ -38,6 +39,8 @@ CRAMFS_FILE	  := $(BUILD)/images/image.cramfs
 EXT2_FILE	  := $(BUILD)/images/image.ext2
 JFFS2_FILE	  := $(BUILD)/images/image.jffs2
 UBIFS_FILE	  := $(BUILD)/images/image.ubifs
+UBI_1_4UBIFS_FILE := $(BUILD)/images/image.ubi
+UBI_1_CFG_FILE	  := $(AUTOGEN)/ubinize_4ubifs.cfg
 URAMDISK_FILE	  := $(BUILD)/images/uRamdisk
 SQFS_DEV_TAB	  := $(BUILD)/images/squashfs_devices.tab
 SQUASHFS_FILE	  := $(BUILD)/images/image.squashfs
@@ -97,7 +100,7 @@ ifeq ($(strip $$($(2))),y)
 endif
 endef
 image_targets =
-IMAGE_CONFIGS = EXT2 URAMDISK JFFS2 CRAMFS SQUASHFS UBIFS
+IMAGE_CONFIGS = EXT2 URAMDISK JFFS2 CRAMFS SQUASHFS UBIFS UBI_1_4UBIFS
 $(foreach img,$(IMAGE_CONFIGS),$(eval $(call ADD_CONDITIONAL,image_targets,IMAGE_$(img),$$($(img)_FILE))))
 $(info Current target list is $(image_targets))
 
@@ -182,6 +185,7 @@ $(STAMP_CLEAN):
 	@mkdir -p $(BUILD) $(STATUS_DIR)
 	@scripts/mkdir_safe $(BUILD)/images
 	@scripts/mkdir_safe $(BUILD)/rootfs
+	@scripts/mkdir_safe $(BUILD)/autogen
 	@touch $(STAMP_CLEAN)
 
 $(STAMP_ADD_DIRS):	$(STAMP_CLEAN)
@@ -295,7 +299,7 @@ pkgs_clean:	$(TARGETS_CLEAN)
 ############################################################
 # Image targets below
 ############################################################
-.PHONY:	image_cramfs image_ext2 image_jffs2 image_ubifs image_uramdisk
+.PHONY:	image_cramfs image_ext2 image_jffs2 image_ubifs image_ubi_4ubifs image_uramdisk
 
 image_ext2:	$(EXT2_FILE)
 
@@ -328,6 +332,26 @@ $(UBIFS_FILE):	$(STAMP_ROOTFS)
 		--max-leb-cnt=$(UBIFS_MAX_LEB_COUNT) -o $(UBIFS_FILE); \
 	fi
 
+image_ubi_4ubifs: $(UBI_1_FILE) $(UBIFS_FILE)
+
+$(UBI_1_4UBIFS_FILE):	$(STAMP_ROOTFS)
+	@echo Generating UBI image
+	@if [[ $(UBI_1_SUB_PAGE_SIZE) == 0 || $(UBI_1_ERASE_BLOCK_SIZE) == 0 ]];then \
+		echo "ERROR: Not all UBI_1 parameters set.  Fix your configuration and try again" >&2 ; \
+	else \
+	echo "[ubifs]" > $(UBI_1_CFG_FILE);	\
+	echo "mode=ubi" >> $(UBI_1_CFG_FILE);	\
+	echo "image="$(UBIFS_FILE) >> $(UBI_1_CFG_FILE);	\
+	echo "vol_id=0" >> $(UBI_1_CFG_FILE);	\
+	echo "vol_size="$(IMAGE_SIZE)"KiB" >> $(UBI_1_CFG_FILE); \
+	echo "vol_type=dynamic" >> $(UBI_1_CFG_FILE);\
+	echo "vol_name="$(UBI_1_CFG_VOL_NAME) >> $(UBI_1_CFG_FILE);\
+	echo "vol_flags=autoresize" >> $(UBI_1_CFG_FILE);\
+	$(UBI_UBINIZE_PREFIX)ubinize --output=$(UBI_1_4UBIFS_FILE) --min-io-size=$(UBIFS_MIN_IO_SIZE) \
+		--peb-size=$(UBI_1_ERASE_BLOCK_SIZE)KiB --sub-page-size=$(UBI_1_SUB_PAGE_SIZE) \
+		$(UBI_1_CFG_FILE);\
+	fi
+
 image_uramdisk:	$(URAMDISK_FILE)
 
 $(URAMDISK_FILE):	$(EXT2_FILE)
-- 
1.6.3.3



More information about the eldk mailing list