From 536e98effda4d9fe856befd7f5ac8123ea6e86fd Mon Sep 17 00:00:00 2001 From: Hamish Moffatt Date: Tue, 12 Feb 2008 05:39:32 +0000 Subject: Add support for summarising JFFS2 images. With support in the kernel this improves mount time significantly. --- package/mtd/20050122/mtd.mk | 11 ++++++++--- package/mtd/20061007/mtd.mk | 11 ++++++++--- package/mtd/mtd-utils/mtd.mk | 13 ++++++++++--- target/jffs2/Config.in | 7 +++++++ target/jffs2/jffs2root.mk | 12 ++++++++++++ 5 files changed, 45 insertions(+), 9 deletions(-) diff --git a/package/mtd/20050122/mtd.mk b/package/mtd/20050122/mtd.mk index 72832fa59..443b5c459 100644 --- a/package/mtd/20050122/mtd.mk +++ b/package/mtd/20050122/mtd.mk @@ -25,11 +25,12 @@ endif ############################################################# # -# Build mkfs.jffs2 for use on the local host system if +# Build mkfs.jffs2 and sumtool for use on the local host system if # needed by target/jffs2root. # ############################################################# MKFS_JFFS2 := $(MTD_HOST_DIR)/util/mkfs.jffs2 +SUMTOOL := $(MTD_HOST_DIR)/util/sumtool ifeq ($(strip $(BR2_PACKAGE_MTD_SNAPSHOT)),y) $(DL_DIR)/$(MTD_SOURCE): @@ -55,11 +56,15 @@ $(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE) touch $@ endif -$(MTD_HOST_DIR)/util/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked +$(MKFS_JFFS2): $(MTD_HOST_DIR)/.unpacked CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) CC="$(HOSTCC)" CROSS= \ LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util mkfs.jffs2 -mtd-host: $(MKFS_JFFS2) +$(SUMTOOL): $(MTD_HOST_DIR)/.unpacked + CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) CC="$(HOSTCC)" CROSS= \ + LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util sumtool + +mtd-host: $(MKFS_JFFS2) $(SUMTOOL) mtd-host-source: $(DL_DIR)/$(MTD_SOURCE) diff --git a/package/mtd/20061007/mtd.mk b/package/mtd/20061007/mtd.mk index bda366dde..fdd7bb0c7 100644 --- a/package/mtd/20061007/mtd.mk +++ b/package/mtd/20061007/mtd.mk @@ -12,11 +12,12 @@ MTD_DATE:=20061007 ############################################################# # -# Build mkfs.jffs2 for use on the local host system if +# Build mkfs.jffs2 and sumtool for use on the local host system if # needed by target/jffs2root. # ############################################################# MKFS_JFFS2 := $(MTD_HOST_DIR)/mkfs.jffs2 +SUMTOOL := $(MTD_HOST_DIR)/sumtool $(DL_DIR)/$(MTD_SOURCE): $(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE) @@ -29,11 +30,15 @@ $(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE) package/mtd/$(MTD_DATE) \*.patch touch $@ -$(MTD_HOST_DIR)/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked +$(MKFS_JFFS2): $(MTD_HOST_DIR)/.unpacked CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \ $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR) mkfs.jffs2 -mtd-host: $(MKFS_JFFS2) +$(SUMTOOL): $(MTD_HOST_DIR)/.unpacked + CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \ + $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR) sumtool + +mtd-host: $(MKFS_JFFS2) $(SUMTOOL) mtd-host-source: $(DL_DIR)/$(MTD_SOURCE) diff --git a/package/mtd/mtd-utils/mtd.mk b/package/mtd/mtd-utils/mtd.mk index 2274de923..86acc93bd 100644 --- a/package/mtd/mtd-utils/mtd.mk +++ b/package/mtd/mtd-utils/mtd.mk @@ -13,11 +13,12 @@ MTD_NAME:=mtd-utils-$(MTD_VERSION) ############################################################# # -# Build mkfs.jffs2 for use on the local host system if +# Build mkfs.jffs2 and sumtool for use on the local host system if # needed by target/jffs2root. # ############################################################# MKFS_JFFS2 := $(MTD_HOST_DIR)/mkfs.jffs2 +SUMTOOL := $(MTD_HOST_DIR)/sumtool $(DL_DIR)/$(MTD_SOURCE): $(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE) @@ -33,13 +34,19 @@ $(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE) touch $@ -$(MTD_HOST_DIR)/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked +$(MKFS_JFFS2): $(MTD_HOST_DIR)/.unpacked CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \ $(MAKE) LINUXDIR=$(LINUX_DIR) \ BUILDDIR=$(MTD_HOST_DIR) \ -C $(MTD_HOST_DIR) mkfs.jffs2 -mtd-host: $(MKFS_JFFS2) +$(SUMTOOL): $(MTD_HOST_DIR)/.unpacked + CC="$(HOSTCC)" CROSS= CFLAGS=-I$(LINUX_HEADERS_DIR)/include \ + $(MAKE) LINUXDIR=$(LINUX_DIR) \ + BUILDDIR=$(MTD_HOST_DIR) \ + -C $(MTD_HOST_DIR) sumtool + +mtd-host: $(MKFS_JFFS2) $(SUMTOOL) mtd-host-source: $(DL_DIR)/$(MTD_SOURCE) diff --git a/target/jffs2/Config.in b/target/jffs2/Config.in index 45fa646e9..e4d463cf0 100644 --- a/target/jffs2/Config.in +++ b/target/jffs2/Config.in @@ -114,6 +114,13 @@ config BR2_TARGET_ROOTFS_JFFS2_SQUASH bool "Make all files be owned by root" depends on BR2_TARGET_ROOTFS_JFFS2 +config BR2_TARGET_ROOTFS_JFFS2_SUMMARY + bool "Produce a summarized JFFS2 image" + depends on BR2_TARGET_ROOTFS_JFFS2 + help + A summarised image can be mounted faster if support is + enabled in the kernel (CONFIG_JFFS2_SUMMARY) + config BR2_TARGET_ROOTFS_JFFS2_OUTPUT string "Output File" depends on BR2_TARGET_ROOTFS_JFFS2 diff --git a/target/jffs2/jffs2root.mk b/target/jffs2/jffs2root.mk index 6937b8f9d..404c678aa 100644 --- a/target/jffs2/jffs2root.mk +++ b/target/jffs2/jffs2root.mk @@ -5,6 +5,7 @@ ############################################################# JFFS2_OPTS := -e $(strip $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE)) +SUMTOOL_OPTS := $(JFFS2_OPTS) ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PAD)),y) ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0) @@ -12,6 +13,7 @@ JFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)) else JFFS2_OPTS += -p endif +SUMTOOLS_OPTS += -p endif ifeq ($(BR2_TARGET_ROOTFS_JFFS2_SQUASH),y) @@ -20,16 +22,19 @@ endif ifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y) JFFS2_OPTS += -l +SUMTOOLS_OPTS += -l endif ifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y) JFFS2_OPTS += -b +SUMTOOL_OPTS += -b endif ifneq ($(BR2_TARGET_ROOTFS_JFFS2_DEFAULT_PAGESIZE),y) JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_PAGESIZE) ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y) JFFS2_OPTS += -n +SUMTOOL_OPTS += -n endif endif @@ -70,8 +75,15 @@ ifneq ($(TARGET_DEVICE_TABLE),) >> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET)) endif # Use fakeroot so mkfs.jffs2 believes the previous fakery +ifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),) + echo "$(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $(JFFS2_TARGET).nosummary && " \ + "$(SUMTOOL) $(SUMTOOL_OPTS) -i $(JFFS2_TARGET).nosummary -o $(JFFS2_TARGET) && " \ + "rm $(JFFS2_TARGET).nosummary" \ + >> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET)) +else echo "$(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $(JFFS2_TARGET)" \ >> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET)) +endif chmod a+x $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET)) $(STAGING_DIR)/usr/bin/fakeroot -- $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET)) -@rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(JFFS2_TARGET)) -- cgit v1.2.3