image_types.bbclass: replace genext2fs with populate-extfs.sh
* The benefits: - Really support ext4 - Support the sparse file (we lost the sparse file in the image in the past, the sparse file became into the common file) - Fix the error reported by fsck: (ext2/ext3) Inode 1025, i_size is 16384, should be 17408. - Have a uniform code for ext2/3/4 generation * Comments from Darren Hart: Basically, genext2fs doesn't support creating ext4 filesystems. It creates, as I understand it, an ext2 filesystem, then adds a journal, and sets some bits. It can't support the newer features like extents. So what we end up with is a bit of a hack for a filesystem. The ext tools (e2fsprogs) unfortunately don't provide an integrated solution for generating prepopulated filesystem images as many other mkfs* tools do. One thing missing was symlink support in libext2fs. I added that support and demonstrated a script which uses the e2fsprogs debugfs tool that can populate the newly formatted filesystem from a directory and without root privileges. [YOCTO #3848] (From OE-Core rev: 40c3e18f43b2f074cec97d21aeb8d21f26dd5048) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
2dfc0e1cc7
commit
6a78e22aae
|
@ -141,34 +141,24 @@ IMAGE_CMD_sum.jffs2 = "${IMAGE_CMD_jffs2} && sumtool -i ${DEPLOY_DIR_IMAGE}/${IM
|
|||
|
||||
IMAGE_CMD_cramfs = "mkcramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cramfs ${EXTRA_IMAGECMD}"
|
||||
|
||||
IMAGE_CMD_ext2 () {
|
||||
rm -rf ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN} && mkdir ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN}
|
||||
genext2fs -b $ROOTFS_SIZE -d ${IMAGE_ROOTFS} ${EXTRA_IMAGECMD} ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN}/${IMAGE_NAME}.rootfs.ext2
|
||||
mv ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN}/${IMAGE_NAME}.rootfs.ext2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2
|
||||
rmdir ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN}
|
||||
oe_mkext234fs () {
|
||||
fstype=$1
|
||||
extra_imagecmd=""
|
||||
|
||||
if [ $# -gt 1 ]; then
|
||||
shift
|
||||
extra_imagecmd=$@
|
||||
fi
|
||||
|
||||
# Create a sparse image block
|
||||
dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype seek=$ROOTFS_SIZE count=0 bs=1k
|
||||
mkfs.$fstype -F $extra_imagecmd ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype
|
||||
populate-extfs.sh ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype
|
||||
}
|
||||
|
||||
IMAGE_CMD_ext3 () {
|
||||
genext2fs -b $ROOTFS_SIZE -d ${IMAGE_ROOTFS} ${EXTRA_IMAGECMD} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3
|
||||
tune2fs -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3
|
||||
}
|
||||
|
||||
oe_mkext4fs () {
|
||||
genext2fs -b $ROOTFS_SIZE -d ${IMAGE_ROOTFS} ${EXTRA_IMAGECMD} $1
|
||||
tune2fs -O extents,uninit_bg,dir_index,has_journal,filetype $1
|
||||
e2fsck -yfDC0 $1 || chk=$?
|
||||
case $chk in
|
||||
0|1|2)
|
||||
;;
|
||||
*)
|
||||
return $chk
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
IMAGE_CMD_ext4 () {
|
||||
oe_mkext4fs ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4
|
||||
}
|
||||
IMAGE_CMD_ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}"
|
||||
IMAGE_CMD_ext3 = "oe_mkext234fs ext3 ${EXTRA_IMAGECMD}"
|
||||
IMAGE_CMD_ext4 = "oe_mkext234fs ext4 ${EXTRA_IMAGECMD}"
|
||||
|
||||
IMAGE_CMD_btrfs () {
|
||||
mkfs.btrfs -b `expr ${ROOTFS_SIZE} \* 1024` ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.btrfs
|
||||
|
@ -218,7 +208,7 @@ JFFS2_ENDIANNESS ?= "${@base_conditional('SITEINFO_ENDIANNESS', 'le', '--little-
|
|||
JFFS2_ERASEBLOCK ?= "0x40000"
|
||||
EXTRA_IMAGECMD_jffs2 ?= "--pad ${JFFS2_ENDIANNESS} --eraseblock=${JFFS2_ERASEBLOCK} --no-cleanmarkers"
|
||||
|
||||
# Change these if you want default genext2fs behavior (i.e. create minimal inode number)
|
||||
# Change these if you want default mkfs behavior (i.e. create minimal inode number)
|
||||
EXTRA_IMAGECMD_ext2 ?= "-i 8192"
|
||||
EXTRA_IMAGECMD_ext3 ?= "-i 8192"
|
||||
EXTRA_IMAGECMD_ext4 ?= "-i 8192"
|
||||
|
@ -229,9 +219,9 @@ IMAGE_DEPENDS = ""
|
|||
IMAGE_DEPENDS_jffs2 = "mtd-utils-native"
|
||||
IMAGE_DEPENDS_sum.jffs2 = "mtd-utils-native"
|
||||
IMAGE_DEPENDS_cramfs = "cramfs-native"
|
||||
IMAGE_DEPENDS_ext2 = "genext2fs-native"
|
||||
IMAGE_DEPENDS_ext3 = "genext2fs-native e2fsprogs-native"
|
||||
IMAGE_DEPENDS_ext4 = "genext2fs-native e2fsprogs-native"
|
||||
IMAGE_DEPENDS_ext2 = "e2fsprogs-native"
|
||||
IMAGE_DEPENDS_ext3 = "e2fsprogs-native"
|
||||
IMAGE_DEPENDS_ext4 = "e2fsprogs-native"
|
||||
IMAGE_DEPENDS_btrfs = "btrfs-tools-native"
|
||||
IMAGE_DEPENDS_squashfs = "squashfs-tools-native"
|
||||
IMAGE_DEPENDS_squashfs-xz = "squashfs-tools-native"
|
||||
|
|
Loading…
Reference in New Issue