diff options
| author | Robert Yang <liezhi.yang@windriver.com> | 2013-08-22 15:54:44 +0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-08-26 11:50:49 +0100 |
| commit | 6a78e22aaede80cd4e0bcbc06b878574766d7b7c (patch) | |
| tree | 4c83b4e6831879fd5db8d13ce73a7f2dfb5eee17 | |
| parent | 2dfc0e1cc72491d24536792d4bc1d5f978634671 (diff) | |
| download | poky-6a78e22aaede80cd4e0bcbc06b878574766d7b7c.tar.gz | |
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>
| -rw-r--r-- | meta/classes/image_types.bbclass | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass index 0e5a9a8600..c168ed50e6 100644 --- a/meta/classes/image_types.bbclass +++ b/meta/classes/image_types.bbclass | |||
| @@ -141,34 +141,24 @@ IMAGE_CMD_sum.jffs2 = "${IMAGE_CMD_jffs2} && sumtool -i ${DEPLOY_DIR_IMAGE}/${IM | |||
| 141 | 141 | ||
| 142 | IMAGE_CMD_cramfs = "mkcramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cramfs ${EXTRA_IMAGECMD}" | 142 | IMAGE_CMD_cramfs = "mkcramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cramfs ${EXTRA_IMAGECMD}" |
| 143 | 143 | ||
| 144 | IMAGE_CMD_ext2 () { | 144 | oe_mkext234fs () { |
| 145 | rm -rf ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN} && mkdir ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN} | 145 | fstype=$1 |
| 146 | genext2fs -b $ROOTFS_SIZE -d ${IMAGE_ROOTFS} ${EXTRA_IMAGECMD} ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN}/${IMAGE_NAME}.rootfs.ext2 | 146 | extra_imagecmd="" |
| 147 | mv ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN}/${IMAGE_NAME}.rootfs.ext2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2 | ||
| 148 | rmdir ${DEPLOY_DIR_IMAGE}/tmp.gz-${PN} | ||
| 149 | } | ||
| 150 | 147 | ||
| 151 | IMAGE_CMD_ext3 () { | 148 | if [ $# -gt 1 ]; then |
| 152 | genext2fs -b $ROOTFS_SIZE -d ${IMAGE_ROOTFS} ${EXTRA_IMAGECMD} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3 | 149 | shift |
| 153 | tune2fs -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext3 | 150 | extra_imagecmd=$@ |
| 154 | } | 151 | fi |
| 155 | 152 | ||
| 156 | oe_mkext4fs () { | 153 | # Create a sparse image block |
| 157 | genext2fs -b $ROOTFS_SIZE -d ${IMAGE_ROOTFS} ${EXTRA_IMAGECMD} $1 | 154 | dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype seek=$ROOTFS_SIZE count=0 bs=1k |
| 158 | tune2fs -O extents,uninit_bg,dir_index,has_journal,filetype $1 | 155 | mkfs.$fstype -F $extra_imagecmd ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype |
| 159 | e2fsck -yfDC0 $1 || chk=$? | 156 | populate-extfs.sh ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype |
| 160 | case $chk in | ||
| 161 | 0|1|2) | ||
| 162 | ;; | ||
| 163 | *) | ||
| 164 | return $chk | ||
| 165 | ;; | ||
| 166 | esac | ||
| 167 | } | 157 | } |
| 168 | 158 | ||
| 169 | IMAGE_CMD_ext4 () { | 159 | IMAGE_CMD_ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}" |
| 170 | oe_mkext4fs ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4 | 160 | IMAGE_CMD_ext3 = "oe_mkext234fs ext3 ${EXTRA_IMAGECMD}" |
| 171 | } | 161 | IMAGE_CMD_ext4 = "oe_mkext234fs ext4 ${EXTRA_IMAGECMD}" |
| 172 | 162 | ||
| 173 | IMAGE_CMD_btrfs () { | 163 | IMAGE_CMD_btrfs () { |
| 174 | mkfs.btrfs -b `expr ${ROOTFS_SIZE} \* 1024` ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.btrfs | 164 | 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- | |||
| 218 | JFFS2_ERASEBLOCK ?= "0x40000" | 208 | JFFS2_ERASEBLOCK ?= "0x40000" |
| 219 | EXTRA_IMAGECMD_jffs2 ?= "--pad ${JFFS2_ENDIANNESS} --eraseblock=${JFFS2_ERASEBLOCK} --no-cleanmarkers" | 209 | EXTRA_IMAGECMD_jffs2 ?= "--pad ${JFFS2_ENDIANNESS} --eraseblock=${JFFS2_ERASEBLOCK} --no-cleanmarkers" |
| 220 | 210 | ||
| 221 | # Change these if you want default genext2fs behavior (i.e. create minimal inode number) | 211 | # Change these if you want default mkfs behavior (i.e. create minimal inode number) |
| 222 | EXTRA_IMAGECMD_ext2 ?= "-i 8192" | 212 | EXTRA_IMAGECMD_ext2 ?= "-i 8192" |
| 223 | EXTRA_IMAGECMD_ext3 ?= "-i 8192" | 213 | EXTRA_IMAGECMD_ext3 ?= "-i 8192" |
| 224 | EXTRA_IMAGECMD_ext4 ?= "-i 8192" | 214 | EXTRA_IMAGECMD_ext4 ?= "-i 8192" |
| @@ -229,9 +219,9 @@ IMAGE_DEPENDS = "" | |||
| 229 | IMAGE_DEPENDS_jffs2 = "mtd-utils-native" | 219 | IMAGE_DEPENDS_jffs2 = "mtd-utils-native" |
| 230 | IMAGE_DEPENDS_sum.jffs2 = "mtd-utils-native" | 220 | IMAGE_DEPENDS_sum.jffs2 = "mtd-utils-native" |
| 231 | IMAGE_DEPENDS_cramfs = "cramfs-native" | 221 | IMAGE_DEPENDS_cramfs = "cramfs-native" |
| 232 | IMAGE_DEPENDS_ext2 = "genext2fs-native" | 222 | IMAGE_DEPENDS_ext2 = "e2fsprogs-native" |
| 233 | IMAGE_DEPENDS_ext3 = "genext2fs-native e2fsprogs-native" | 223 | IMAGE_DEPENDS_ext3 = "e2fsprogs-native" |
| 234 | IMAGE_DEPENDS_ext4 = "genext2fs-native e2fsprogs-native" | 224 | IMAGE_DEPENDS_ext4 = "e2fsprogs-native" |
| 235 | IMAGE_DEPENDS_btrfs = "btrfs-tools-native" | 225 | IMAGE_DEPENDS_btrfs = "btrfs-tools-native" |
| 236 | IMAGE_DEPENDS_squashfs = "squashfs-tools-native" | 226 | IMAGE_DEPENDS_squashfs = "squashfs-tools-native" |
| 237 | IMAGE_DEPENDS_squashfs-xz = "squashfs-tools-native" | 227 | IMAGE_DEPENDS_squashfs-xz = "squashfs-tools-native" |
