Repository navigation
firmware: first end-to-end build fixes; ship the app in the rootfs - #67
Merged
Merged
Conversation
The rkaiq build embeds its IQ binary with xxd, which the Ubuntu base image does not have. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mpp's CMakeLists embeds the last few commit subjects in its version string and fails to configure on a depth-1 clone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- /userdata is an empty partition mounted over the rootfs directory, so a binary placed there by the build was hidden and a freshly flashed board had no rustkvm_app. The image now carries /usr/lib/rustkvm/rustkvm_app and S99rustkvm installs it to /userdata on first boot or after a wipe. - build step: select the board and build u-boot, kernel and Buildroot as the build user; `./build.sh <board>.mk` repeats the whole build as root and leaves root-owned objects that break the next run. - devkit.sh firmware mounts the host /dev so loop partition nodes exist. - collect names the images after the version baked into the image. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rust-KVM
marked this pull request as ready for review
October 17, 2026 20:04
rkupdate declared a NOTICE license file that does not exist, which aborted `make legal-info`. Point it at LICENSE, and leave host-tool sources out of the legal-info bundle (632 MB for v0.1.0). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Requested by 4c
Summary
Before:
scripts/devkit.sh firmwarestopped at several points on a clean checkout (missingxxd, a shallow mpp clone, no loop partition nodes, root-owned objects from the SDK's second build pass). Even a finished image would have booted without the app, because the binary sat in a rootfs directory that the empty/userdatapartition is mounted over.After: the first end-to-end build from public sources produced the SD image (425 MB) and the eMMC flasher image (713 MB). A freshly flashed board installs
rustkvm_appto/userdataon first boot from a factory copy in/usr/lib/rustkvm/.How
os/rk3588/rootfs-overlay/etc/init.d/S99rustkvm: copies/usr/lib/rustkvm/rustkvm_appto/userdata/rustkvm/bin/when missing (first boot, wiped userdata).scripts/build-firmware.sh: installs the binary into the overlay instead of the userdata staging dir; builds u-boot, kernel and Buildroot as the build user and only packs images as root (the SDK's./build.sh <board>.mkreruns everything under sudo); reclaims root-owned files from earlier runs; names output files after the version baked into the image.scripts/devkit.sh: firmware container gets the host/devsoloopNpMnodes exist.ci/firmware/Dockerfile: addsxxd(camera-engine-rkaiq).os/rk3588/manifest.xml:clone-depth="30"for mpp, whose CMake embeds recent commit subjects.os/rk3588/patches/buildroot/0003: rkupdate's license file isLICENSE, not the missingNOTICE, somake legal-infocompletes; the legal-info bundle leaves out host-tool sources.Testing
Full firmware build in the container on the workbench: u-boot, kernel, Buildroot, SD and eflasher images.
Inspected the rootfs of the first image with
debugfs:/etc/rustkvm-release,S99rustkvmpresent, root password locked (*), anduserdata.imgempty, which exposed the hidden-binary problem fixed here. The rebuilt image is checked the same way before release.Not flashed to hardware yet.
No Rust changes.
cargo +nightly fmt --allcargo +nightly clippy --workspace --release --all-targets -- -D warningscargo +nightly test --workspaceFrontend touched:
trunk build --lockedand wasm32 clippy incrates/rkvm-web. Not applicable.Tested on an RK3588 device (describe below), or not applicable. Pending: first flash.
Checklist
#[allow(...)]suppressions and no newunwrap()/expect()in production pathsMissedTickBehavior::Delayrkvm-protoapp/tests/rpc_methods.txtupdatedAGENTS.mdupdated🤖 Generated with Claude Code