Release v2.4.5#3
Merged
Merged
Conversation
…u 25.x/26.x, Debian 14, Azure Linux 4, Fedora 42/43/44, el10 family, CloudLinux 9/10, openEuler 25.03) - New build-prebuilt-arch job in release.yml (Arch Linux rolling, SteamOS 3.7+) - Ubuntu 25.04/25.10/26.04 and Debian 14 (forky) in DEB matrix - Azure Linux 4 in RPM matrix (tdnf support in rpm-dkms-build action) - Fedora 42/43 explicit entries; fedora:latest now Fedora 44 (kernel 7.0.9) - RHEL/CentOS 10, AlmaLinux 10, Rocky Linux 10 with EPEL 10/CRB - CloudLinux 9/10 via AlmaLinux proxy - openEuler 25.03 in RPM matrix - kernel-rebuild.yml and kernel-check.yml extended for Ubuntu 25.x/26.x and Debian 14 - check-kernels.sh: plucky/questing/quokka/forky checks added - rpm-dkms-build: el10 EPEL 10 case, azurelinux/mariner case, tdnf detection - KERNEL_COMPAT.md, README.md, BUILD.md, CHANGELOG.md updated
…ernels - deps.c: add zap_page_range_single() kallsyms wrapper for kernels >= 6.3 Vanilla Arch (7.0.9-arch1-1) and similar do not export this symbol; the module now resolves it at runtime via kallsyms instead of relying on EXPORT_SYMBOL from the running kernel. - deps.c: remove < 6.8 guard around file_close_fd() wrapper file_close_fd was introduced in 6.8 but is not always exported on vanilla kernels. Always provide a local kallsyms wrapper that resolves to file_close_fd (>= 6.8) or close_fd_get_file (< 6.8) at runtime. - rpm-dkms-build action: gracefully handle missing Docker images When docker pull fails (manifest not found), emit a warning, set skipped=true, write skip-reason, and exit 0 rather than crashing. Fixes azure-linux-4 (image tag 4.0 not yet available) and rockylinux-10 (image not yet on Docker Hub).
mount_nodev (the legacy fs mount API) was removed from vanilla Linux around 6.8+. Arch linux-lts (currently 6.18.32-1-lts) no longer exports mount_nodev as a kernel symbol, causing modpost to fail with "mount_nodev [binder_linux.ko] undefined". The replacement API (init_fs_context / get_tree_nodev / kill_anon_super) has been available since kernel 5.1. Lower the threshold in compat.h and all corresponding guards in binderfs.c from KERNEL_VERSION(7, 0, 0) to KERNEL_VERSION(5, 1, 0) so that all kernels >= 5.1 use the new API. Kernels < 5.1 (e.g. Amazon Linux 2 / 4.14.x) continue to use the legacy mount_nodev / kill_litter_super / remount_fs path as before.
There was a problem hiding this comment.
Pull request overview
Release merge for v2.4.5, updating kernel compat logic and CI/release matrices to expand prebuilt module coverage across additional distros and kernel tracks, plus documentation updates describing the new support.
Changes:
- Expanded CI/release build matrices to add new distro targets (Ubuntu 25.x/26.04, Debian 14, Fedora 42–44, el10 family, Azure Linux 4, Arch/SteamOS, etc.) with
allow_failuresupport. - Updated binder compat layer to avoid relying on exported legacy mount APIs (now using the
init_fs_contextpath on kernels >= 5.1) and added kallsyms-based wrappers for unexported kernel symbols. - Refreshed README/build/kernel-compat docs and changelog for the v2.4.5 release.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| VERSION | Bumps project version to 2.4.5. |
| src/binder/deps.c | Adds kallsyms wrappers for unexported kernel symbols (zap_page_range_single, file_close_fd). |
| src/binder/compat.h | Lowers COMPAT_FS_HAS_INIT_FS_CONTEXT threshold to kernel >= 5.1. |
| src/binder/binderfs.c | Switches legacy mount API guards from 7.0 to 5.1 to align with init_fs_context availability. |
| README.md | Updates prebuilt support table and adds host/container guidance text. |
| docs/KERNEL_COMPAT.md | Extends distro/kernel coverage tables and compat notes for new targets. |
| docs/BUILD.md | Adds build instructions for newly supported distros (incl. Arch/SteamOS, el10, Azure Linux). |
| CHANGELOG.md | Adds v2.4.5 release notes and re-dates prior entries. |
| .github/workflows/release.yml | Expands prebuilt build matrices, adds allow-failure handling, and adds Arch/SteamOS job. |
| .github/workflows/kernel-rebuild.yml | Extends discovery matrix to include Ubuntu 25.x/26.04 and Debian forky. |
| .github/workflows/kernel-check.yml | Extends test-build matrix for new Ubuntu/Debian targets. |
| .github/scripts/check-kernels.sh | Adds kernel header checks for new Ubuntu/Debian releases. |
| .github/actions/rpm-dkms-build/action.yml | Adds graceful handling for missing container images, adds tdnf detection, and adds el10/EPEL logic. |
Comments suppressed due to low confidence (3)
README.md:7
- Typo: "depricated" should be "deprecated".
> **Note:** ashmem is only needed for android versions 8-11. As such, it will be depricated next release. This release, 2.4.5 will be the last release to include ashmem support.
README.md:53
- Typo: "capabale" should be "capable".
> redroid should capabale running on any linux (with some kernel features enabled).
README.md:54
- Spelling/branding: "Github" should be "GitHub". Also, the phrase "These are those kernel features" reads awkwardly—consider rewording to something like "These are the required kernel features".
As per the notes on redroid's Github & Docker Hub pages:
> redroid should capabale running on any linux (with some kernel features enabled).
**These are those kernel features**. After installing the modules, you can run redroid in a container.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - `build-fedora.yml` CI validation matrix now includes `fedora:40` and `fedora:41` entries (in addition to `fedora:latest`) | ||
| - `README.md` prebuilt support table updated: Ubuntu 22.04 row added; single Fedora row split into Fedora 40, 41, and 42 (latest) rows; Ubuntu 22.04 HWE fallback note added | ||
| - `fedora:latest` image now tracks Fedora 44 (kernel 7.0.9); Fedora 42 and 43 added as dedicated matrix entries | ||
| - `docs/KERNEL_COMPAT.md`: comprehensive update for all new distros — DEB table extended with Ubuntu 25.x/26.x and Debian 14; RPM table extended with Fedora 42–44, RHEL/CentOS 10, AlmaLinux/Rocky 10, CloudLinux 9/10, Azure Linux 4, openEuler 25.03; new Arch Linux / SteamOS section added; Header Resolution Logic and Distro-Specific Quirks sections updated; Minimum Supported Kernel updated to 5.x–7.x; API table updated with `COMPAT_FS_HAS_INIT_FS_CONTEXT` (7.0) and `compat_shmem_file_setup` (7.0) entries |
Comment on lines
+95
to
+109
| if ! docker pull "$INPUT_CONTAINER_IMAGE" 2>&1; then | ||
| echo "::warning::Container image ${INPUT_CONTAINER_IMAGE} not found in registry; skipping ${INPUT_DISTRO_LABEL:-unknown} build." | ||
| _SKIP_LABEL="$(slugify "${INPUT_DISTRO_LABEL:-rpm-dkms}")" | ||
| [ -n "$_SKIP_LABEL" ] || _SKIP_LABEL="rpm-dkms" | ||
| _SKIP_PATH="$ROOT_DIR/artifacts/$_SKIP_LABEL" | ||
| mkdir -p "$_SKIP_PATH/logs" | ||
| echo "container-image-unavailable" > "$_SKIP_PATH/logs/skip-reason.txt" | ||
| printf 'artifacts_path=%s\n' "$_SKIP_PATH" >> "$GITHUB_OUTPUT" | ||
| printf 'kernel_version=%s\n' "" >> "$GITHUB_OUTPUT" | ||
| printf 'distro_id=%s\n' "unknown" >> "$GITHUB_OUTPUT" | ||
| printf 'distro_version_id=%s\n' "unknown" >> "$GITHUB_OUTPUT" | ||
| printf 'skipped=%s\n' "true" >> "$GITHUB_OUTPUT" | ||
| printf 'skip_reason=%s\n' "container-image-unavailable" >> "$GITHUB_OUTPUT" | ||
| log "Artifacts staged in $_SKIP_PATH" | ||
| exit 0 |
| | `compat_freezer_do_not_count/count()` | 6.1 | Freezer removed (integrated into scheduler) | | ||
| | `compat_vm_flags_set/clear()` | 6.3 | `vm_flags_set/clear` vs direct assignment | | ||
| | `DEFINE_SHOW_ATTRIBUTE` | 4.16 | Backfill for very old kernels | | ||
| | `COMPAT_FS_HAS_INIT_FS_CONTEXT` | 7.0 | `file_system_type.mount` and `super_operations.remount_fs` removed in 7.0; binderfs uses `init_fs_context` / `reconfigure` paths when this is set. Validated on Fedora 44 (7.0.9), Proxmox 9 (7.0.2-4-pve), and Arch Linux rolling. | |
Comment on lines
+5
to
+7
| Some Distros come packaged with binder support or it can be installed as an extra module from the distro's repositories. For those that don't, this project provides a unified installer with prebuilt modules for popular distros and a DKMS fallback for others. See the table below for details on supported prebuilt modules. | ||
|
|
||
| > **Note:** ashmem is only needed for android versions 8-11. As such, it will be depricated next release. This release, 2.4.5 will be the last release to include ashmem support. |
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.
Release v2.4.5
Merges prerelease into main for the v2.4.5 release.
What's new
CI
Prerelease CI run #26205288737 passed (all non-allow_failure jobs green, package-release completed successfully).