Skip to content

support Android 17 - #6

Open
RubenDiaz95 wants to merge 4 commits into
remote-android:redroid-16.0.0from
RubenDiaz95:redroid-17.0.0
Open

support Android 17#6
RubenDiaz95 wants to merge 4 commits into
remote-android:redroid-16.0.0from
RubenDiaz95:redroid-17.0.0

Conversation

@RubenDiaz95

Copy link
Copy Markdown

Brings redroid up to Android 17 (android-17.0.0_r1, SDK 37, security patch 2026-06-05). Four commits, one logical change each.

Two of them fix problems that are not specific to 17:

  • memfd instead of ashmem. Android <= 16 needs the ashmem kernel driver, removed from Linux in 5.18, which is why redroid 16 does not boot on a current host.

  • ueventd cold boot. ro.cold_boot_done=true leaves /dev unpopulated: apexd activates 0 APEX (so /system/bin/linker64 is a dangling symlink) and /dev/graphics/fb0 is missing (the composer cannot open the framebuffer and init takes surfaceflinger and zygote down with it). This also affects the 14, 15 and 16 branches.

Verified end to end on a clean tree: a pristine android-17.0.0_r1 checkout plus these branches builds and boots, with sys.boot_completed=1, gralloc 5 active and no aborted services.

Branched from redroid-16.0.0 so the pull request is reviewable. If you would rather have it rooted at a4bdf93 like the 15 and 16 branches, that is a one-command rebase on your side.

Companion pull requests: redroid-patches #8, plus device_redroid-prebuilts and local_manifests. The manifest one points at the redroid-17.0.0 branch this pull request creates, so it needs this one first.

This does not touch the ARM native bridge: see remote-android/redroid-doc#933.

Bump PRODUCT_MODEL to redroid17_* and switch the lunch targets to the
cp2a release configuration (SDK 37).
Android <= 16 needs the ashmem kernel driver, removed from Linux in 5.18,
so redroid 16 cannot boot on a current host. Android 17 accepts memfd
instead; on 16 the property alone was not enough because an extra ashmem
ioctl check still ran against it.

The property must go in PRODUCT_SYSTEM_PROPERTIES: sepolicy declares
use_memfd_prop as system_restricted_prop, so vendor_init cannot set it and
putting it in redroid.prop is silently ignored.
Android 17 enables the require_gralloc4_or_newer build flag in cp2a, which
rejects gralloc 2 and 3 outright, so surfaceflinger cannot start with the
current stack. minigbm provides gralloc 5 and coexists with gralloc 2:
GraphicBufferMapper probes 5 -> 4 -> 3 -> 2.

Requires the host to load the vkms kernel module. minigbm needs no real
GPU but does need a DRM device it recognises; bochs-drm has no render node
and virtio-gpu buffers are not GPU-writable.
Skipping the cold-boot scan leaves /dev unpopulated, with two symptoms that
look unrelated to each other and to the cause:

  no /dev/block/loopN    apexd activates 0 APEX, so /apex stays empty and
                         /system/bin/linker64 is a dangling symlink
  no /dev/graphics/fb0   the composer cannot open the framebuffer; after
                         four deaths init takes surfaceflinger and zygote
                         down with it

This also affects the 14, 15 and 16 branches.
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.

1 participant