summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/Config.in8
-rw-r--r--fs/common.mk7
-rw-r--r--fs/cramfs/cramfs.mk4
-rw-r--r--fs/ext2/ext2.mk15
-rwxr-xr-xfs/ext2/genext2fs.sh39
-rw-r--r--fs/initramfs/initramfs.mk8
-rw-r--r--fs/jffs2/jffs2.mk4
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