Skip to content

Release v2.4.5#3

Merged
Kryxan merged 3 commits into
mainfrom
prerelease
May 21, 2026
Merged

Release v2.4.5#3
Kryxan merged 3 commits into
mainfrom
prerelease

Conversation

@Kryxan
Copy link
Copy Markdown
Owner

@Kryxan Kryxan commented May 21, 2026

Release v2.4.5

Merges prerelease into main for the v2.4.5 release.

What's new

  • Expanded prebuilt support: Arch Linux, SteamOS 3.7, Ubuntu 25.04/25.10/26.04, Debian 14, Azure Linux 4, Fedora 40/41/42/43/latest, CentOS Stream 10, AlmaLinux 10, Rocky Linux 10, CloudLinux 9/10, openEuler 25.03
  • Kallsyms wrappers for unexported kernel symbols on vanilla kernels (zap_page_range_single, file_close_fd)
  • Graceful Docker pull failure handling for unavailable container images
  • Lower COMPAT_FS_HAS_INIT_FS_CONTEXT threshold from 7.0 to 5.1 to fix builds on kernels 5.1-6.x (mount_nodev removed upstream)

CI

Prerelease CI run #26205288737 passed (all non-allow_failure jobs green, package-release completed successfully).

Kryxan added 3 commits May 20, 2026 18:06
…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.
Copilot AI review requested due to automatic review settings May 21, 2026 04:35
@Kryxan Kryxan merged commit e4fbde0 into main May 21, 2026
19 of 22 checks passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_failure support.
  • Updated binder compat layer to avoid relying on exported legacy mount APIs (now using the init_fs_context path 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.

Comment thread CHANGELOG.md
- `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
Comment thread docs/KERNEL_COMPAT.md
| `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 thread README.md
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.
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