diff --git a/fs/ubifs/Config.in b/fs/ubifs/Config.in index 70ea81e5d..ff604c5c3 100644 --- a/fs/ubifs/Config.in +++ b/fs/ubifs/Config.in @@ -119,6 +119,26 @@ config BR2_TARGET_ROOTFS_UBI_SUBSIZE The value provided here is passed to the -s/--sub-page-size option of ubinize. +config BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + bool "Use custom config file" + help + Select this option to use a custom ubinize configuration file, + rather than the default configuration used by Buildroot (which + defines a single dynamic volume marked as auto-resize). Passing + a custom ubinize configuration file allows you to create several + volumes, specify volume types, etc. + + As a convenience, buildroot replaces the string + "BR2_ROOTFS_UBIFS_PATH" with the path to the built ubifs file. + So the volume defined for the root filesystem can specify the + image path as: image=BR2_ROOTFS_UBIFS_PATH + +config BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + help + Path to the ubinize configuration file. + config BR2_TARGET_ROOTFS_UBI_OPTS string "Additional ubinize options" help diff --git a/fs/ubifs/ubi.mk b/fs/ubifs/ubi.mk index 08c952c29..aba3bea83 100644 --- a/fs/ubifs/ubi.mk +++ b/fs/ubifs/ubi.mk @@ -1,6 +1,6 @@ ################################################################################ # -# Embed the ubifs image into an ubi one +# Embed the ubifs image into an ubi image # ################################################################################ @@ -14,12 +14,17 @@ UBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS)) ROOTFS_UBI_DEPENDENCIES = rootfs-ubifs +ifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y) +UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE)) +else +UBINIZE_CONFIG_FILE_PATH = fs/ubifs/ubinize.cfg +endif + define ROOTFS_UBI_CMD - cp fs/ubifs/ubinize.cfg . ;\ - echo "image=$@fs" \ - >> ./ubinize.cfg ;\ - $(HOST_DIR)/usr/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) ubinize.cfg ;\ - rm ubinize.cfg + $(INSTALL) -m 0644 $(UBINIZE_CONFIG_FILE_PATH) $(BUILD_DIR)/ubinize.cfg ;\ + $(SED) 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' $(BUILD_DIR)/ubinize.cfg ;\ + $(HOST_DIR)/usr/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg ;\ + rm $(BUILD_DIR)/ubinize.cfg endef $(eval $(call ROOTFS_TARGET,ubi)) diff --git a/fs/ubifs/ubinize.cfg b/fs/ubifs/ubinize.cfg index 65152714b..b0aace7b9 100644 --- a/fs/ubifs/ubinize.cfg +++ b/fs/ubifs/ubinize.cfg @@ -5,3 +5,4 @@ vol_type=dynamic vol_name=rootfs vol_alignment=1 vol_flags=autoresize +image=BR2_ROOTFS_UBIFS_PATH