aboutsummaryrefslogtreecommitdiff
path: root/fs/ubi
diff options
context:
space:
mode:
authorGravatar Yann E. MORIN <yann.morin.1998@free.fr>2017-12-28 11:40:31 +0100
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2018-01-03 21:57:49 +0100
commit9fc21664e850f0999c4aa358235ab2b73f4bfb60 (patch)
treeb3e68a5ae6e44e50419efc490761025147ccb2d5 /fs/ubi
parent1897a56a2baae64f40dc9b155443d13818ef726b (diff)
downloadbuildroot-9fc21664e850f0999c4aa358235ab2b73f4bfb60.tar.gz
buildroot-9fc21664e850f0999c4aa358235ab2b73f4bfb60.tar.bz2
fs/ubifs: spin-off ubi to be its own filesystem
Currently, the ubifs-in-ubi-image ("UBI image" thereafter) filesystem is half an option of the ubifs filesystem, half a filesystem on its own: the config options are options of the ubifs filesystem, but the .mk code is in a separate .mk and registers a real filesystem. Make it a full filesystem on its own, in its own directory tree. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'fs/ubi')
-rw-r--r--fs/ubi/Config.in51
-rw-r--r--fs/ubi/ubi.mk32
-rw-r--r--fs/ubi/ubinize.cfg8
3 files changed, 91 insertions, 0 deletions
diff --git a/fs/ubi/Config.in b/fs/ubi/Config.in
new file mode 100644
index 0000000000..5fa2f1f61d
--- /dev/null
+++ b/fs/ubi/Config.in
@@ -0,0 +1,51 @@
+config BR2_TARGET_ROOTFS_UBI
+ bool "ubi image containing an ubifs root filesystem"
+ select BR2_TARGET_ROOTFS_UBIFS
+ help
+ Build an ubi image from the ubifs one (with ubinize).
+
+if BR2_TARGET_ROOTFS_UBI
+
+config BR2_TARGET_ROOTFS_UBI_PEBSIZE
+ hex "physical eraseblock size"
+ default 0x20000
+ help
+ Tells ubinize the physical eraseblock (PEB) size of the
+ flash chip the ubi image is created for. The value provided
+ here is passed to the -p/--peb-size option of ubinize.
+
+config BR2_TARGET_ROOTFS_UBI_SUBSIZE
+ int "sub-page size"
+ default 512
+ help
+ Tells ubinize that the flash supports sub-pages and the sub-page
+ size. Use 0 if sub-pages are not supported on flash chip.
+ 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
+ Any additional ubinize options you may want to include.
+
+endif # BR2_TARGET_ROOTFS_UBI
diff --git a/fs/ubi/ubi.mk b/fs/ubi/ubi.mk
new file mode 100644
index 0000000000..b71a555efb
--- /dev/null
+++ b/fs/ubi/ubi.mk
@@ -0,0 +1,32 @@
+################################################################################
+#
+# Embed the ubifs image into an ubi image
+#
+################################################################################
+
+UBI_UBINIZE_OPTS := -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE)
+UBI_UBINIZE_OPTS += -p $(BR2_TARGET_ROOTFS_UBI_PEBSIZE)
+ifneq ($(BR2_TARGET_ROOTFS_UBI_SUBSIZE),0)
+UBI_UBINIZE_OPTS += -s $(BR2_TARGET_ROOTFS_UBI_SUBSIZE)
+endif
+
+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/ubi/ubinize.cfg
+endif
+
+# don't use sed -i as it misbehaves on systems with SELinux enabled when this is
+# executed through fakeroot (see #9386)
+define ROOTFS_UBI_CMD
+ sed 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' \
+ $(UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg
+ $(HOST_DIR)/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/ubi/ubinize.cfg b/fs/ubi/ubinize.cfg
new file mode 100644
index 0000000000..b0aace7b9f
--- /dev/null
+++ b/fs/ubi/ubinize.cfg
@@ -0,0 +1,8 @@
+[ubifs]
+mode=ubi
+vol_id=0
+vol_type=dynamic
+vol_name=rootfs
+vol_alignment=1
+vol_flags=autoresize
+image=BR2_ROOTFS_UBIFS_PATH