Просмотр исходного кода

meta/ext4-img: refactor to fit current image creation methods

EXT4_IMAGE_FILE does no longer contain the full path to the ext4 image
in the deploy directory.

Signed-off-by: Claudius Heine <ch@denx.de>
Claudius Heine 6 лет назад
Родитель
Сommit
8b8a339cfa
2 измененных файлов с 13 добавлено и 20 удалено
  1. 1 1
      meta-isar/classes/rpi-sdimg.bbclass
  2. 12 19
      meta/classes/ext4-img.bbclass

+ 1 - 1
meta-isar/classes/rpi-sdimg.bbclass

@@ -15,7 +15,7 @@ BOOT_SPACE ?= "40960"
 IMAGE_ROOTFS_ALIGNMENT = "4096"
 
 SDIMG = "${DEPLOY_DIR_IMAGE}/${PN}.rpi-sdimg"
-SDIMG_ROOTFS = "${EXT4_IMAGE_FILE}"
+SDIMG_ROOTFS = "${DEPLOY_DIR_IMAGE}/${EXT4_IMAGE_FILE}"
 
 do_rpi_sdimg () {
     # Align partitions

+ 12 - 19
meta/classes/ext4-img.bbclass

@@ -1,30 +1,23 @@
 # This software is a part of ISAR.
 # Copyright (C) 2015-2017 ilbers GmbH
 
-EXT4_IMAGE_FILE = "${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.ext4.img"
+EXT4_IMAGE_FILE = "${IMAGE_FULLNAME}.ext4.img"
+
+IMAGER_INSTALL += "e2fsprogs"
 
 do_ext4_image[stamp-extra-info] = "${DISTRO}-${MACHINE}"
 
 # Generate ext4 filesystem image
 do_ext4_image() {
-    rm -f ${EXT4_IMAGE_FILE}
-
-    dd if=/dev/zero of=${EXT4_IMAGE_FILE} bs=1k count=${ROOTFS_SIZE}
-
-    sudo mkfs.ext4 -F ${EXT4_IMAGE_FILE}
-
-    mkdir -p ${WORKDIR}/mnt
-    sudo mount -o loop ${EXT4_IMAGE_FILE} ${WORKDIR}/mnt
-    _do_ext4_image_cleanup() {
-        ret=$?
-        sudo umount ${WORKDIR}/mnt 2>/dev/null || true
-        sudo rmdir ${WORKDIR}/mnt 2>/dev/null || true
-        (exit $ret) || bb_exit_handler
-    }
-    trap '_do_ext4_image_cleanup' EXIT
-    sudo cp -r ${IMAGE_ROOTFS}/* ${WORKDIR}/mnt
-    _do_ext4_image_cleanup
+    rm -f '${DEPLOY_DIR_IMAGE}/${EXT4_IMAGE_FILE}'
+
+    truncate -s ${ROOTFS_SIZE}K '${DEPLOY_DIR_IMAGE}/${EXT4_IMAGE_FILE}'
+
+    image_do_mounts
+
+    sudo chroot ${BUILDCHROOT_DIR} /sbin/mke2fs ${MKE2FS_ARGS} \
+                -F -d '${PP_ROOTFS}' '${PP_DEPLOY}/${EXT4_IMAGE_FILE}'
 }
 
-addtask ext4_image before do_build after do_copy_boot_files
+addtask ext4_image before do_build after do_copy_boot_files do_install_imager_deps
 do_ext4_image[prefuncs] = 'set_image_size'