diff options
-rw-r--r-- | include/image.mk | 14 | ||||
-rwxr-xr-x | target/linux/x86/image/gen_image_generic.sh | 6 | ||||
-rw-r--r-- | tools/Makefile | 2 | ||||
-rw-r--r-- | tools/make-ext4fs/Makefile | 36 |
4 files changed, 46 insertions, 12 deletions
diff --git a/include/image.mk b/include/image.mk index bd6a88af61..788d593f94 100644 --- a/include/image.mk +++ b/include/image.mk @@ -231,15 +231,15 @@ define Image/mkfs/targz $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE),-$(PROFILE))-rootfs.tar.gz --numeric-owner --owner=0 --group=0 -C $(TARGET_DIR)/ . endef -E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024/$(CONFIG_TARGET_EXT4_BLOCKSIZE)))) +E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024))) define Image/mkfs/ext4 -# generate an ext2 fs - $(STAGING_DIR_HOST)/bin/genext2fs -U -B $(CONFIG_TARGET_EXT4_BLOCKSIZE) -b $(E2SIZE) -N $(CONFIG_TARGET_EXT4_MAXINODE) -d $(TARGET_DIR)/ $(KDIR)/root.ext4 -m $(CONFIG_TARGET_EXT4_RESERVED_PCT) $(MKFS_DEVTABLE_OPT) -# convert it to ext4 - $(STAGING_DIR_HOST)/bin/tune2fs $(if $(CONFIG_TARGET_EXT4_JOURNAL),-j) -O extents,uninit_bg,dir_index $(KDIR)/root.ext4 -# fix it up - $(STAGING_DIR_HOST)/bin/e2fsck -fy $(KDIR)/root.ext4 + $(STAGING_DIR_HOST)/bin/make_ext4fs \ + -l $(E2SIZE) -b $(CONFIG_TARGET_EXT4_BLOCKSIZE) \ + -i $(CONFIG_TARGET_EXT4_MAXINODE) \ + -m $(CONFIG_TARGET_EXT4_RESERVED_PCT) \ + $(if $(CONFIG_TARGET_EXT4_JOURNAL),,-J) \ + $(KDIR)/root.ext4 $(TARGET_DIR)/ endef define Image/mkfs/prepare/default diff --git a/target/linux/x86/image/gen_image_generic.sh b/target/linux/x86/image/gen_image_generic.sh index 3fb31f6e40..17d969b96b 100755 --- a/target/linux/x86/image/gen_image_generic.sh +++ b/target/linux/x86/image/gen_image_generic.sh @@ -23,17 +23,15 @@ cyl=$(( ($KERNELSIZE + $ROOTFSSIZE) * 1024 * 1024 / ($head * $sect * 512))) set `ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE}` KERNELOFFSET="$(($1 / 512))" -KERNELSIZE="$(($2 / 512))" +KERNELSIZE="$2" ROOTFSOFFSET="$(($3 / 512))" ROOTFSSIZE="$(($4 / 512))" -BLOCKS="$((($KERNELSIZE / 2) - 1))" - [ -n "$PADDING" ] && dd if=/dev/zero of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc count="$ROOTFSSIZE" dd if="$ROOTFSIMAGE" of="$OUTPUT" bs=512 seek="$ROOTFSOFFSET" conv=notrunc [ -n "$NOGRUB" ] && exit 0 -genext2fs -d "$KERNELDIR" -b "$BLOCKS" "$OUTPUT.kernel" +make_ext4fs -J -l "$KERNELSIZE" "$OUTPUT.kernel" "$KERNELDIR" dd if="$OUTPUT.kernel" of="$OUTPUT" bs=512 seek="$KERNELOFFSET" conv=notrunc rm -f "$OUTPUT.kernel" diff --git a/tools/Makefile b/tools/Makefile index 7d4ab01ce5..2f516d2383 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -25,7 +25,7 @@ endif tools-$(BUILD_TOOLCHAIN) += gmp mpfr mpc libelf tools-y += m4 libtool autoconf automake flex bison pkg-config sed mklibs -tools-y += sstrip genext2fs e2fsprogs mtd-utils mkimage +tools-y += sstrip make-ext4fs e2fsprogs mtd-utils mkimage tools-y += firmware-utils patch-image patch quilt yaffs2 flock padjffs2 tools-y += mm-macros missing-macros xz cmake scons bc findutils gengetopt patchelf tools-$(CONFIG_TARGET_orion_generic) += wrt350nv2-builder upslug2 diff --git a/tools/make-ext4fs/Makefile b/tools/make-ext4fs/Makefile new file mode 100644 index 0000000000..5149ed4a14 --- /dev/null +++ b/tools/make-ext4fs/Makefile @@ -0,0 +1,36 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk + +PKG_NAME:=make-ext4fs +PKG_VERSION:=2015-04-08 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://git.openwrt.org/project/make_ext4fs.git +PKG_SOURCE_PROTO:=git +PKG_SOURCE_VERSION:=2f713da924fa20cf89c25f2d122b54b959b09f87 +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_MIRROR_MD5SUM:=c88f4f7c76e3142fc5ef12a723d9ef9b +PKG_CAT:=zcat + +HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)-$(PKG_VERSION) + +include $(INCLUDE_DIR)/host-build.mk + +define Host/Compile + $(MAKE) -C $(HOST_BUILD_DIR) make_ext4fs +endef + +define Host/Install + $(INSTALL_BIN) $(HOST_BUILD_DIR)/make_ext4fs $(STAGING_DIR_HOST)/bin/ +endef + +define Host/Clean + rm -f $(STAGING_DIR_HOST)/bin/make_ext4fs +endef + +$(eval $(call HostBuild)) |