0000040: Adds options to jffs2 filesystem creation

Brings jffs2 up to the 20041007 build level so it will compile with both 2.4
and 2.6 kernels.

Adds ability to specify eraseblock and pad sizes, permissions squash,
big/little endian and device table in the configuration.

Also adds capability to copy the resulting image to a secondary location like
a tftp server's root directory.

mtd.patch adds capabilities of the previously attached patch plus allows you to
compile a version of the utilities to run on the target system.

So now there's a set of config options under package to compile the utils for
distribution to the target and a set of config options under target to create a
jffs2 filesystem.
This commit is contained in:
Eric Andersen 2005-01-23 11:16:11 +00:00
parent 7be239c03f
commit dda90723ce
5 changed files with 309 additions and 36 deletions

99
package/mtd/Config.in Normal file
View File

@ -0,0 +1,99 @@
menuconfig BR2_PACKAGE_MTD
bool "mtd/jffs2 utilities"
default n
help
Build mtd/jffs utilities
config BR2_PACKAGE_MTD_FLASH_ERASE
bool "flash_erase"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FLASH_ERASEASLL
bool "flash_eraseall"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FLASH_INFO
bool "flash_info"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FLASH_LOCK
bool "flash_loco"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FLASH_UNLOCK
bool "flash_unlock"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FLASHCP
bool "flashcp"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_JFFS2DUMP
bool "jffs2dump"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FTL_CHECK
bool "ftl_check"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_FTL_FORMAT
bool "ftl_format"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_NFTL_FORMAT
bool "nftl_format"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_NFTLDUMP
bool "nftldump"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_MKFSJFFS2
bool "mkfs.jffs2"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_MKFSJFFS
bool "mkfs.jffs"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_NANDDUMP
bool "nanddump"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_NANDWRITE
bool "nandwrite"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_MTD_DEBUG
bool "mtd_debug"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_DOCFDISK
bool "docfdisk"
default y
depends on BR2_PACKAGE_MTD
config BR2_PACKAGE_MTD_DOC_LOADBIOS
bool "doc_loadbios"
default y
depends on BR2_PACKAGE_MTD

3
package/mtd/Makefile.in Normal file
View File

@ -0,0 +1,3 @@
ifeq ($(strip $(BR2_PACKAGE_MTD)),y)
TARGETS+=mtd
endif

98
package/mtd/mtd.mk Normal file
View File

@ -0,0 +1,98 @@
#############################################################
#
# mtd provides jffs2 utilities
#
#############################################################
MTD_SOURCE=mtd_20041007.orig.tar.gz
MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd
#############################################################
#
# Build mkfs.jffs2 for use on the local host system if
# needed by target/jffs2root.
# If /sbin/mkfs.jffs2 already exists, no make is needed
#
#############################################################
MKFS_JFFS2=$(shell which mkfs.jffs2 2>/dev/null || echo $(STAGING_DIR)/bin/mkfs.jffs2)
MTD_HOST_DIR := $(TOOL_BUILD_DIR)/mtd-20041007.orig
$(DL_DIR)/$(MTD_SOURCE):
$(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
$(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
touch $(MTD_HOST_DIR)/.unpacked
$(MTD_HOST_DIR)/util/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked
CFLAGS=-I$(LINUX_HEADERS_DIR)/include \
$(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util mkfs.jffs2
$(STAGING_DIR)/bin/mkfs.jffs2: $(MTD_HOST_DIR)/util/mkfs.jffs2
cp -f $(MTD_HOST_DIR)/util/mkfs.jffs2 $(STAGING_DIR)/bin
mtd-host: $(MKFS_JFFS2)
mtd-host-source: $(DL_DIR)/$(MTD_SOURCE)
mtd-host-clean:
-$(MAKE) -C $(MTD_HOST_DIR) clean
mtd-host-dirclean:
rm -rf $(MTD_HOST_DIR)
#############################################################
#
# build mtd for use on the target system
#
#############################################################
MTD_DIR:=$(BUILD_DIR)/mtd-20041007.orig
$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
touch $(MTD_DIR)/.unpacked
MTD_TARGETS_n :=
MTD_TARGETS_y :=
MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE) += flash_erase
MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASEALL) += flash_eraseall
MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_INFO) += flash_info
MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK) += flash_lock
MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK) += flash_unlock
MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP) += flashcp
MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2) += mkfs.jffs2
MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS) += mkfs.jffs
MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP) += jffs2dump
MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK) += ftl_check
MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT) += ftl_format
MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP) += nftldump
MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT) += nftl_format
MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMPP) += nanddump
MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE) += nandwrite
MTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG) += mtd_debug
MTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK) += docfdisk
MTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS) += doc_loadbios
MTD_BUILD_TARGETS := $(addprefix $(MTD_DIR)/util/, $(MTD_TARGETS_y))
$(MTD_BUILD_TARGETS): $(MTD_DIR)/.unpacked
CFLAGS="-I$(LINUX_HEADERS_DIR)/include $(TARGET_CFLAGS)" \
$(MAKE) CC=$(TARGET_CC) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
MTD_TARGETS := $(addprefix $(TARGET_DIR)/usr/sbin/, $(MTD_TARGETS_y))
$(MTD_TARGETS): $(TARGET_DIR)/usr/sbin/% : $(MTD_DIR)/util/%
cp -f $< $@
mtd: $(MTD_TARGETS)
mtd-source: $(DL_DIR)/$(MTD_SOURCE)
mtd-clean:
-$(MAKE) -C $(MTD_DIR) clean
mtd-dirclean:
rm -rf $(MTD_DIR)

View File

@ -1,6 +1,60 @@
config BR2_TARGET_ROOTFS_JFFS2
bool "jffs2 root filesystem for the target device"
menuconfig BR2_TARGET_ROOTFS_JFFS2
bool "Build jffs2 root filesystem for the target device"
default n
help
Build a jffs2 root filesystem
config BR2_TARGET_ROOTFS_JFFS2_EBSIZE
hex "Erase block size"
depends on BR2_TARGET_ROOTFS_JFFS2
default 0x20000
config BR2_TARGET_ROOTFS_JFFS2_PAD
bool "Pad output"
depends on BR2_TARGET_ROOTFS_JFFS2
config BR2_TARGET_ROOTFS_JFFS2_PADSIZE
hex "Pad output size (0x0 = to end of EB)"
depends on BR2_TARGET_ROOTFS_JFFS2_PAD
default 0x0
help
Set to 0x0 to pad to end of erase block.
choice
prompt "Endianess"
default BR2_TARGET_ROOTFS_JFFS2_LE
depends on BR2_TARGET_ROOTFS_JFFS2
config BR2_TARGET_ROOTFS_JFFS2_LE
bool "little-endian"
depends on BR2_TARGET_ROOTFS_JFFS2
config BR2_TARGET_ROOTFS_JFFS2_BE
bool "big-endian"
depends on BR2_TARGET_ROOTFS_JFFS2
endchoice
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_DEVFILE
string "Location of device table file"
depends on BR2_TARGET_ROOTFS_JFFS2
default "target/default/device_table.txt"
config BR2_TARGET_ROOTFS_JFFS2_OUTPUT
string "Output File"
depends on BR2_TARGET_ROOTFS_JFFS2
default "$(IMAGE).jffs2"
config BR2_TARGET_ROOTFS_JFFS2_COPYTO
string "also copy the image to..."
depends on BR2_TARGET_ROOTFS_JFFS2
default ""
help
Copies the resulting image to a secondary location.

View File

@ -1,49 +1,68 @@
#############################################################
#
# mtd provides us with mkfs.jffs2, to target JFFS2 filesystems
#
#############################################################
MTD_DIR:=$(BUILD_DIR)/mtd-20011217
MTD_SOURCE=mtd_20011217.orig.tar.gz
MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd
MKFS_JFFS2=$(shell which mkfs.jffs2 2>/dev/null || echo $(MTD_DIR)/util/mkfs.jffs2)
$(DL_DIR)/$(MTD_SOURCE):
$(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE)
$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE)
zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) -xvf -
touch $(MTD_DIR)/.unpacked
$(MTD_DIR)/util/mkfs.jffs2: $(MTD_DIR)/.unpacked
CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util
mtd: $(MKFS_JFFS2)
#############################################################
#
# Build the jffs2 root filesystem image
#
#############################################################
jffs2root: mtd
#-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true;
JFFS2_OPTS := -e $(strip $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE))
ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PAD)),y)
JFFS2_OPTS += -p
ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0)
JFFS2_OPTS += $(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE))
endif
endif
ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_SQUASH)),y)
JFFS2_OPTS += -q
endif
ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_LE)),y)
JFFS2_OPTS += -l
endif
ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_BE)),y)
JFFS2_OPTS += -b
endif
JFFS2_DEVFILE = $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_DEVFILE)))
ifneq ($(JFFS2_DEVFILE),)
JFFS2_OPTS += -D $(JFFS2_DEVFILE)
endif
JFFS2_TARGET := $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_OUTPUT))
#
# mtd-host is a dependency which builds a local copy of mkfs.jffs2 if it's needed.
# the actual build is done from package/mtd/mtd.mk and it sets the
# value of MKFS_JFFS2 to either the previously installed copy or the one
# just built.
#
$(JFFS2_TARGET): mtd-host
-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
@rm -rf $(TARGET_DIR)/usr/man
@rm -rf $(TARGET_DIR)/usr/share/man
@rm -rf $(TARGET_DIR)/usr/info
$(MKFS_JFFS2) --pad --little-endian --squash -e 0x20000 \
-D target/default/device_table.txt -d $(TARGET_DIR) \
-o $(IMAGE).jffs2
$(MKFS_JFFS2) \
$(JFFS2_OPTS) \
-d $(BUILD_DIR)/root \
-o $(JFFS2_TARGET)
@ls -l $(JFFS2_TARGET)
jffs2root-source: $(DL_DIR)/$(MTD_SOURCE)
JFFS2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_COPYTO)))
jffs2root-clean:
-$(MAKE) -C $(MTD_DIR) clean
jffs2root: $(JFFS2_TARGET)
ifneq ($(JFFS2_COPYTO),)
@cp -f $(JFFS2_TARGET) $(JFFS2_COPYTO)
endif
jffs2root-dirclean:
rm -rf $(MTD_DIR)
jffs2root-source: mtd-host-source
jffs2root-clean: mtd-host-clean
-rm -f $(JFFS2_TARGET)
jffs2root-dirclean: mtd-host-dirclean
-rm -f $(JFFS2_TARGET)