AXP Magisk resurrection track: Speckit 009 port AXP/LOS22 to LOS23.

Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
This commit is contained in:
sunfish-admin committed 2026-09-16 21:56:22 +00:00
commit 12d2179c20
150 files changed
+26263

No files matched your search

+80
View File
@@ -0,0 +1,80 @@
# abu (KernelSU-Next) vs ours (ReSukiSU) — SusFS integration checklist
> **Historical hypothesis checklist:** The [2026-09-16 source audit](007-susfs-source-audit.md)
> supersedes causal claims here. ReSukiSU intentionally supports SUSFS as an
> alternative inline hook provider; forcing MANUAL+SUSFS is a local porting
> choice, not an established universal fix. Check module ABI and command wire
> formats as well as Kconfig. The reference checkout is not proven identical
> to the owner's working Abu L22 binary.
Oracle: `/srv/rom/references/abu-msm-4.14-ksu` (`drivers/kernelsu` → `KernelSU-Next/kernel`).
Ours: ReSukiSU under `msm-4.14/drivers/kernelsu` + LOS 23.2 A16.
**Do not copy abu ROM/boot**; copy *model* only. Forks differ (Next ≠ ReSukiSU).
## Architectural model (abu — correct)
| Topic | abu KernelSU-Next | ReSukiSU upstream (broken for us) | Ours after patches |
|-------|-------------------|-------------------------------------|--------------------|
| SusFS | **Addon** `bool` under `menu "KernelSU - SUSFS"`, `depends on KSU` | Was a **choice** entry XOR with MANUAL/TRACEPOINT | Kconfig: SusFS outside choice (abu-like) |
| Hooks | `KSU_KPROBES_HOOK` default y; or manual (disable kprobes) | `choice` MANUAL / TRACEPOINT / (was SUSFS) | MANUAL_HOOK + AUTO_* for 4.14 |
| `susfs_init()` | `#ifdef CONFIG_KSU_SUSFS` always in `ksu.c`, **independent** of hook method | Often behind `#elif CONFIG_KSU_SUSFS` only | Fixed `init.c`: MANUAL branch also calls `susfs_init()` |
| Hook enable keys | N/A (different code) | `#elif SUSFS` before `#elif MANUAL` → no `ksu_init_rc_hook` when both | Fixed `ksud_integration.c`: SusFS-only branch if `!MANUAL_HOOK` |
## Failures we already hit (XOR leftovers)
1. Defconfig SusFS on → choice flipped → **no MANUAL_HOOK** → vibrator hang / broken hooks (`T004038Z`).
2. MANUAL+SusFS without **AUTO_*** → early logo reboot (`T091211Z`).
3. AUTO_* + SusFS → link error `ksu_init_rc_hook` (SUSFS `#elif` won).
4. Even after link fix: without `susfs_init()` in MANUAL path, SusFS would be dead code.
## Remaining `#elif CONFIG_KSU_SUSFS` in our tree (review)
| File | Pattern | Risk when MANUAL+SUSFS | Action |
|------|---------|------------------------|--------|
| `runtime/ksud_integration.c` | SusFS iff `!MANUAL` | OK | done |
| `core/init.c` | MANUAL then `ifdef SUSFS` init; elif SUSFS legacy | OK | done |
| `feature/sucompat.h` | `#elif SUSFS` before else MANUAL macros | Uses SusFS TIF/helpers — **intended** for addon | leave; verify LAB |
| `supercall/dispatch.c:527` | mark get: SUSFS then else | SusFS path when addon — OK | leave |
| `supercall/dispatch.c:902` | MANUAL before SUSFS for hook_type string | Reports "Manual" when both — OK | leave |
| `feature/sucompat.c` | `SUSFS \|\| MANUAL` | OK compose | leave |
**Rule:** any `#elif CONFIG_KSU_SUSFS` that **defines symbols or inits** needed by MANUAL/AUTO must become either `&& !MANUAL` or `#ifdef SUSFS` *nested inside* MANUAL (abu: always `#ifdef SUSFS`).
## Feature flag delta (Kconfig)
abu Next has extras we lack (Next-specific / different SusFS port):
- `KSU_SUSFS_HAS_MAGIC_MOUNT`
- `KSU_SUSFS_AUTO_ADD_SUS_*` / `TRY_UMOUNT*`
- `KSU_SUSFS_SUS_SU` (needs KPROBES)
Our ReSukiSU SusFS set: PATH/MOUNT/KSTAT/LOG/HIDE_SYMBOLS/SPOOF_CMDLINE/OPEN_REDIRECT/SUS_MAP (+ SPOOF_UNAME optional).
Bring-up: keep **SPOOF_UNAME off** (already commented in defconfig); consider SPOOF_CMDLINE off until boot stable.
abu `sunfish_defconfig` in this reference has **0** `CONFIG_KSU*` lines — enablement is elsewhere / not this file; do not treat that defconfig as SusFS pin list.
## Hook stack (do not mix blindly)
| | abu | ours |
|--|-----|------|
| Primary | KPROBES (`CONFIG_KSU_KPROBES_HOOK`) | MANUAL + AUTO_SETUID/INITRC/INPUT |
| Non-GKI docs | kernelsu.org manual integrate | resukisu.org manual integrate |
Porting abu **kprobe** assumptions into ReSukiSU MANUAL builds = future footgun.
## Pre-build gate (mandatory)
Before each SusFS `bootimage`:
```bash
CFG=out/target/product/sunfish/obj/KERNEL_OBJ/.config
grep -E "CONFIG_KSU_MANUAL_HOOK=y|CONFIG_KSU_MANUAL_HOOK_AUTO_.*=y|CONFIG_KSU_SUSFS=y" "$CFG"
# must have MANUAL=y, all three AUTO=y, SUSFS=y
# must NOT have "# CONFIG_KSU_MANUAL_HOOK is not set"
nm …/ksud_integration.o | grep ksu_init_rc_hook # after CC
```
After Image: extract-ikconfig and confirm same.
## Flash discipline
Flash SusFS to one slot only; keep penúltimo on the other; `--set-active`; both-slot rollback after failure.