Repository navigation
sysupgrade: point a kernel-volume NAND camera at ipctool nand-migrate - #2578
Merged
Merged
Conversation
Collaborator
|
/review |
Code Review by Qodo
1. The firmware change lacks camera proof
|
widgetii
marked this pull request as ready for review
October 13, 2026 03:56
widgetii
requested review from
cronyx,
flyrouter and
viktorxda
as code owners
October 13, 2026 03:56
The first FIT NAND layout, with the kernel in a UBI volume of its own, was refused with only "reinstall it from U-Boot", which needs a serial console. Its U-Boot is a FIT NAND build that loads a kernel from UBIFS, so ipctool nand-migrate (OpenIPC/ipctool#243) moves it to the current layout in place: it rewrites the rootfs, switches bootcmd and drops the kernel volume, keeping U-Boot and the settings. Say so. A ubiblock camera on a SoC that moved keeps the reinstall message: its U-Boot predates FIT, and nand-migrate refuses it.
widgetii
force-pushed
the
sysupgrade-kvol-nand-migrate
branch
from
October 13, 2026 12:04
ebd4ed5 to
e6d45bd
Compare
widgetii
enabled auto-merge (squash)
October 13, 2026 12:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A NAND camera on the first FIT layout (
kernelFIT volume + UBIFSrootfs+rootfs_data, gk7205v500 family, from #2526) is refused by sysupgrade since #2537. The only advice is "reinstall it from U-Boot", which needs a serial console. That isn't necessary: its U-Boot is a FIT NAND build of u-boot-xmedia that canubifsload. OpenIPC/ipctool#243 addsipctool nand-migrate, which moves such a camera to the current layout in place. It rewrites the rootfs, switches bootcmd to the current stock one and drops the kernel volume, keeping U-Boot and the settings.This changes the
ubifs-kvolrefusal to name that command, with the U-Boot reinstall kept as the other option. A ubiblock camera on a SoC that moved keeps the old message unchanged: its U-Boot predates FIT, andnand-migraterefuses it. scr_version 1.0.71 → 1.0.72.The command it names is available: OpenIPC/ipctool#243 is merged, and the
latestrelease (2026-10-12 20:20 UTC), which the camera'sipctoolstub (extutils) downloads, carriesnand-migrate.Hardware tested on
The one camera that was on this layout, Zenointel SD-2N-4G (gk7205v510, 10.216.128.86), was migrated with
ipctool nand-migrateon real hardware: the evidence is in OpenIPC/ipctool#243. It has since been upgraded with sysupgrade on the new layout (its rootfs volume is now image-sized, and rootfs_data was recreated). So no camera is left on the old layout to print this message.This change only alters what an already-refused run prints. The refusal conditions and the "nothing was written" path are unchanged. I exercised it on a QEMU replica (qemu-hisilicon
gk7205v510) of that camera's own pre-migration flash: its U-Boot, env and three UBI volumes. Following the message there, with the released ipctool, completes the migration (below).Evidence
bash .github/scripts/test_sysupgrade.sh: all checks pass. The two refusal tests now also assert which advice each layout gets:STRICT=1 test_shell_parse.sh: all parsed clean under busybox ash.STRICT=1 test_strip_shell_comments.sh: all checks passed.Before (sysupgrade 1.0.71 from master,
sysupgrade -r -zon the kvol replica):After (1.0.72, same replica):
Following it, with the released ipctool (UPX build, fetched by the
ipctoolstub):Scope
general/package/all-patches/linux/(those go to OpenIPC/linux)general/overlay/or in a sharedload_<vendor>script hardcodes a value specific to my boardLD_PRELOAD, and no binaries that cannot be rebuilt from source