-
Notifications
You must be signed in to change notification settings - Fork 5
feat: add ARM64 kernel build support #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, small nit
It would required changes in infra as well though, but imho it'd make it easier than having IFs everywhere
build.sh
Outdated
| if [[ "$TARGET_ARCH" == "arm64" ]]; then | ||
| cp ../configs/arm64/"${version}.config" .config | ||
| else | ||
| cp ../configs/"${version}.config" .config | ||
| fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wouldn't it make sense to simplify
| if [[ "$TARGET_ARCH" == "arm64" ]]; then | |
| cp ../configs/arm64/"${version}.config" .config | |
| else | |
| cp ../configs/"${version}.config" .config | |
| fi | |
| cp ../configs/"$TARGET_ARCH"/"${version}.config" .config |
build.sh
Outdated
| echo "Copying finished build to builds directory" | ||
| mkdir -p "../builds/vmlinux-${version}" | ||
| cp vmlinux "../builds/vmlinux-${version}/vmlinux.bin" | ||
| # Output path: arm64 builds go into a subdirectory to distinguish from x86_64 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you could simplify here, if you change as suggested
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
- Move x86_64 configs to configs/x86_64/ (keep legacy configs/ for now)
- Add arm64 configs in configs/arm64/ (Firecracker reference + NFS v3, WireGuard, NFSD)
- build.sh: TARGET_ARCH env var, configs from configs/{arch}/, cross-compile support
- x86_64 outputs to both legacy path and x86_64/ subdir for backwards compat
- GH Action: matrix build for both architectures, merged artifacts
Output structure:
builds/vmlinux-{ver}/vmlinux.bin # x86_64 legacy (backwards compat)
builds/vmlinux-{ver}/x86_64/vmlinux.bin # x86_64 new
builds/vmlinux-{ver}/arm64/vmlinux.bin # arm64 new
cb000d4 to
8f588da
Compare
|
Summary
configs/arm64/) based on upstream Firecracker aarch64 reference config, with E2B-specific additions (NFS v3, WireGuard, NFSD)build.sh:TARGET_ARCHenv var (x86_64default,arm64), cross-compiles viagcc-aarch64-linux-gnuwhen building on x86_64 hostsMakefile:build-arm64convenience targetarm64 kernels output to
builds/vmlinux-{version}/arm64/vmlinux.bin, so GCS gets:Test plan
file vmlinux.bin→ELF 64-bit LSB ... ARM aarch64Note
Medium Risk
Changes the kernel build/publish pipeline and output layout, so misconfiguration could break CI releases or downstream consumers despite legacy x86_64 compatibility handling.
Overview
Adds ARM64 kernel build support by introducing
configs/arm64/*and updatingbuild.shto build per-architecture viaTARGET_ARCH(including optional cross-compilation on x86_64 hosts).Updates the GitHub Actions workflow to run a build matrix for
x86_64andarm64, upload per-arch artifacts, then onmaindownload/merge those artifacts and publish to GCS and GitHub Releases with arch-aware asset naming while keeping legacy x86_64 output paths for compatibility. Also adds amake build-arm64convenience target.Written by Cursor Bugbot for commit 8f588da. This will update automatically on new commits. Configure here.