Skip to content

perf(convert): reduce rootfs copies from 3 to 1#110

Open
imlk0 wants to merge 63 commits into
masterfrom
fde-convert-slow
Open

perf(convert): reduce rootfs copies from 3 to 1#110
imlk0 wants to merge 63 commits into
masterfrom
fde-convert-slow

Conversation

@imlk0

@imlk0 imlk0 commented Apr 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Replace the intermediate rootfs.img file and final qemu-img convert step with a qcow2 overlay/snapshot architecture, reducing full rootfs copies from 3 → 1
  • Source image is modified through a writable overlay (source-mod), then forked into two independent snapshots (source-read for verity hash, source-write for dracut initrd generation)
  • Eliminates two full rootfs copies (~17s dd + ~32s qemu-img convert ≈ ~49s savings)
  • Remove --device / operate_on_device support: deprecate in-place device conversion in favor of file-based (--in/--out) only
  • Fix RPM version detection: rpm -q outputs error to stdout on uninstalled packages, which was captured as the version string
  • Fix unbound boot_part variable when source has no separate boot partition
  • Remove --wipe-freed-space option (no longer needed with qcow2 overlay architecture)
  • Update docs: quick-start.md, quick-start_zh.md — replace --device examples with --in/--out

Test plan

  • Run conversion on aliyun_3_x64 image — all 11 steps complete successfully
  • Verify output qcow2 has correct partition layout (BIOS boot, EFI, boot ext4, rootfs LUKS2)
  • Verify verity hash is computed correctly
  • Verify dracut generates initrd successfully
  • Timing: ~5m24s total

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@imlk0 imlk0 force-pushed the fde-convert-slow branch from aa6ba77 to ec85e19 Compare April 29, 2026 12:12
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@imlk0 imlk0 force-pushed the fde-convert-slow branch from ec85e19 to 07fc888 Compare April 29, 2026 12:17
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@imlk0 imlk0 force-pushed the fde-convert-slow branch from 9ef0a95 to 0c97e2d Compare April 29, 2026 13:09
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@imlk0 imlk0 force-pushed the fde-convert-slow branch from 0c97e2d to 8a094cc Compare April 29, 2026 13:13
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

When expanding EFI partition from 106M to 512M in UKI mode, the BOOT
partition (if exists) must also be moved to avoid overlapping with the
expanded EFI partition and the relocated rootfs partition.

New partition layout: EFI(512M) -> BOOT(original size) -> rootfs(rest)

This fixes the 'Sector already used' error from sfdisk and the subsequent
boot failure due to missing BOOT partition.
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

In UKI mode with an existing BOOT partition, the partition was being
moved to a new location in step 5 (to make room for expanded EFI), but
the boot partition content was never copied because copy_partitions()
skipped boot partition handling entirely in UKI mode.

Now copy the boot partition from source-read in UKI mode when
boot_part_exist=true, just like in GRUB mode.
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

…ce.sh

- SC2086/SC1012: dpkg-query format string uses ${dpkg-Package} and \n
  which are intentionally not expanded by shell (interpreted by dpkg-query)
- SC2016: add_run_cmd argument is a script to be executed later, variables
  should not be expanded at definition time
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

…ainers

os-prober scans all devices and fails with 'Device or resource busy' errors
when running inside Docker containers with NBD devices. This causes
grub2-mkconfig to fail to find kernel images, resulting in grub.cfg without
menuentry sections.

Disable os-prober by setting GRUB_DISABLE_OS_PROBER=true before running
grub2-mkconfig, similar to how DEB workflow handles it.
@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,您的请求已接收,请耐心等待结果。

@shankailun-aliyun

Copy link
Copy Markdown

@imlk0 ,您好,未检测到有镜像需要构建,如需重新检测请评论 /start

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants