@@ -129,6 +129,17 @@ MOUNT_CONTAINER_ID="$MOUNT_CONTAINER_ID" ROOTFS_DIR="$ROOTFS_DIR" \
129129 ROOTFS_IMAGE=" $ROOTFS_IMAGE " OUTPUT_DIR=" $OUTPUT_DIR " \
130130 " $DIR /vamos" profile
131131
132+ # Build EROFS image (before unmount, while rootfs is still mounted)
133+ EROFS_IMAGE=" $BUILD_DIR /system.erofs.img"
134+ OUT_EROFS_IMAGE=" $OUTPUT_DIR /system.erofs.img"
135+ echo " Building EROFS image (LZ4HC, 64K clusters)"
136+ exec_as_root mkfs.erofs \
137+ -zlz4hc,12 \
138+ -C65536 \
139+ -T0 \
140+ --all-root \
141+ " $EROFS_IMAGE " " $ROOTFS_DIR "
142+
132143# Unmount image
133144echo " Unmount filesystem"
134145exec_as_root umount -l " $ROOTFS_DIR "
@@ -137,6 +148,9 @@ exec_as_root umount -l "$ROOTFS_DIR"
137148echo " Sparsifying system image"
138149exec_as_user img2simg " $ROOTFS_IMAGE " " $OUT_IMAGE "
139150
151+ # Copy EROFS image to output
152+ cp " $EROFS_IMAGE " " $OUT_EROFS_IMAGE "
153+
140154# Patch sparse image size into profile JSON
141155SPARSE_SIZE=$( stat -c%s " $OUT_IMAGE " 2> /dev/null || stat -f%z " $OUT_IMAGE " )
142156if command -v jq & > /dev/null; then
@@ -145,4 +159,13 @@ if command -v jq &>/dev/null; then
145159 mv " $OUTPUT_DIR /rootfs-profile.json.tmp" " $OUTPUT_DIR /rootfs-profile.json"
146160fi
147161
162+ # Size comparison
163+ EXT4_SPARSE_SIZE=$( stat -c%s " $OUT_IMAGE " 2> /dev/null || stat -f%z " $OUT_IMAGE " )
164+ EROFS_SIZE=$( stat -c%s " $OUT_EROFS_IMAGE " 2> /dev/null || stat -f%z " $OUT_EROFS_IMAGE " )
165+ echo " "
166+ echo " === Image size comparison ==="
167+ echo " ext4 (sparse): $( numfmt --to=iec-i --suffix=B " $EXT4_SPARSE_SIZE " ) ($EXT4_SPARSE_SIZE bytes)"
168+ echo " EROFS (LZ4HC): $( numfmt --to=iec-i --suffix=B " $EROFS_SIZE " ) ($EROFS_SIZE bytes)"
169+ echo " "
170+
148171echo " Done!"
0 commit comments