diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/Config.in | 8 | ||||
-rw-r--r-- | fs/common.mk | 7 | ||||
-rw-r--r-- | fs/cramfs/cramfs.mk | 4 | ||||
-rw-r--r-- | fs/ext2/ext2.mk | 15 | ||||
-rwxr-xr-x | fs/ext2/genext2fs.sh | 39 | ||||
-rw-r--r-- | fs/initramfs/initramfs.mk | 8 | ||||
-rw-r--r-- | fs/jffs2/jffs2.mk | 4 |
7 files changed, 66 insertions, 19 deletions
diff --git a/fs/Config.in b/fs/Config.in index f885c52e7..6865eeaff 100644 --- a/fs/Config.in +++ b/fs/Config.in @@ -15,6 +15,14 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT only argument. Make sure the exit code of that script is 0, otherwise make will stop after calling it. +config BR2_ROOTFS_DEVICE_TABLE + string "Path to the device table" + default "target/generic/device_table.txt" + help + Specify the location of a device table, that will be passed + to the makedevs utility to create all the special device + files in the target filesystem. + source "fs/cramfs/Config.in" source "fs/cloop/Config.in" source "fs/ext2/Config.in" diff --git a/fs/common.mk b/fs/common.mk index fa6afd94d..a3248c165 100644 --- a/fs/common.mk +++ b/fs/common.mk @@ -28,18 +28,19 @@ # macro will automatically generate a compressed filesystem image. FAKEROOT_SCRIPT = $(BUILD_DIR)/_fakeroot.fs +ROOTFS_DEVICE_TABLE = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE)) define ROOTFS_TARGET_INTERNAL -$(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot makedevs $(if $(BR2_TARGET_ROOTFS_$(2)_LZMA),host-lzma) +$(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot host-makedevs $(if $(BR2_TARGET_ROOTFS_$(2)_LZMA),host-lzma) @$(call MESSAGE,"Generating root filesystem image rootfs.$(1)") $(foreach hook,$(ROOTFS_$(2)_PRE_GEN_HOOKS),$(call $(hook))$(sep)) rm -f $(FAKEROOT_SCRIPT) touch $(BUILD_DIR)/.fakeroot.00000 cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT) echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) -ifneq ($(TARGET_DEVICE_TABLE),) - echo "$(HOST_DIR)/usr/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) +ifneq ($(ROOTFS_DEVICE_TABLE),) + echo "$(HOST_DIR)/usr/bin/makedevs -d $(ROOTFS_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) endif echo "$(ROOTFS_$(2)_CMD)" >> $(FAKEROOT_SCRIPT) chmod a+x $(FAKEROOT_SCRIPT) diff --git a/fs/cramfs/cramfs.mk b/fs/cramfs/cramfs.mk index ccd316f5d..e0deb7e2a 100644 --- a/fs/cramfs/cramfs.mk +++ b/fs/cramfs/cramfs.mk @@ -9,8 +9,8 @@ else CRAMFS_OPTS=-l endif -ifneq ($(TARGET_DEVICE_TABLE),) -CRAMFS_OPTS += -D $(TARGET_DEVICE_TABLE) +ifneq ($(ROOTFS_DEVICE_TABLE),) +CRAMFS_OPTS += -D $(ROOTFS_DEVICE_TABLE) endif define ROOTFS_CRAMFS_CMD diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk index 68b3b813c..18a6df424 100644 --- a/fs/ext2/ext2.mk +++ b/fs/ext2/ext2.mk @@ -18,23 +18,14 @@ ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0) EXT2_OPTS += -N $(BR2_TARGET_ROOTFS_EXT2_INODES) endif -ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),) +ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0) EXT2_OPTS += -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS) endif ROOTFS_EXT2_DEPENDENCIES = host-genext2fs -ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0) -GENEXT2_REALSIZE=$(shell LC_ALL=C du -s -c -k $(TARGET_DIR) | grep total | sed -e "s/total//") -GENEXT2_ADDTOROOTSIZE=$(shell if [ $(GENEXT2_REALSIZE) -ge 20000 ]; then echo 16384; else echo 2400; fi) -GENEXT2_SIZE=$(shell expr $(GENEXT2_REALSIZE) + $(GENEXT2_ADDTOROOTSIZE)) -GENEXT2_ADDTOINODESIZE=$(shell find $(TARGET_DIR) | wc -l) -GENEXT2_INODES=$(shell expr $(GENEXT2_ADDTOINODESIZE) + 400) -EXT2_OPTS += -b $(GENEXT2_SIZE) -N $(GENEXT2_INODES) -endif - define ROOTFS_EXT2_CMD - $(HOST_DIR)/usr/bin/genext2fs -d $(TARGET_DIR) $(EXT2_OPTS) $$@ + PATH=$(TARGET_PATH) fs/ext2/genext2fs.sh -d $(TARGET_DIR) $(EXT2_OPTS) $$@ endef -$(eval $(call ROOTFS_TARGET,ext2))
\ No newline at end of file +$(eval $(call ROOTFS_TARGET,ext2)) diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh new file mode 100755 index 000000000..b315ec30a --- /dev/null +++ b/fs/ext2/genext2fs.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# genext2fs wrapper calculating needed blocks/inodes values if not specified + +export LC_ALL=C + +CALC_BLOCKS=1 +CALC_INODES=1 + +while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f +do + case $f in + b) CALC_BLOCKS=0 ;; + N) CALC_INODES=0 ;; + d) TARGET_DIR=$OPTARG ;; + esac +done + +# calculate needed blocks +if [ $CALC_BLOCKS -eq 1 ]; +then + BLOCKS=$(du -s -c -k $TARGET_DIR | grep total | sed -e "s/total//") + if [ $BLOCKS -ge 20000 ]; + then + BLOCKS=$(expr $BLOCKS + 16384) + else + BLOCKS=$(expr $BLOCKS + 2400) + fi + set -- $@ -b $BLOCKS +fi + +# calculate needed inodes +if [ $CALC_INODES -eq 1 ]; +then + INODES=$(find $TARGET_DIR | wc -l) + INODES=$(expr $INODES + 400) + set -- $@ -N $INODES +fi + +exec genext2fs $@ diff --git a/fs/initramfs/initramfs.mk b/fs/initramfs/initramfs.mk index 4a205d1ce..3e8156761 100644 --- a/fs/initramfs/initramfs.mk +++ b/fs/initramfs/initramfs.mk @@ -6,11 +6,19 @@ # ############################################################# +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +INITRAMFS_TARGET:=initramfs-root +else +INITRAMFS_TARGET:= #nothing +endif + define ROOTFS_INITRAMFS_INIT_SYMLINK rm -f $(TARGET_DIR)/init ln -s sbin/init $(TARGET_DIR)/init endef +ROOTFS_INITRAMFS_PRE_GEN_HOOKS += ROOTFS_INITRAMFS_INIT_SYMLINK + define ROOTFS_INITRAMFS_CMD $(SHELL) fs/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(TARGET_DIR) > $$@ endef diff --git a/fs/jffs2/jffs2.mk b/fs/jffs2/jffs2.mk index a0a563d18..36be03741 100644 --- a/fs/jffs2/jffs2.mk +++ b/fs/jffs2/jffs2.mk @@ -32,8 +32,8 @@ JFFS2_OPTS += -n SUMTOOL_OPTS += -n endif -ifneq ($(TARGET_DEVICE_TABLE),) -JFFS2_OPTS += -D $(TARGET_DEVICE_TABLE) +ifneq ($(ROOTFS_DEVICE_TABLE),) +JFFS2_OPTS += -D $(ROOTFS_DEVICE_TABLE) endif ROOTFS_JFFS2_DEPENDENCIES = host-mtd |