Ship Magisk like GOLDEN; KernelSU optional recycle only; parallel to sunfish-a16-rom standby.
4.4 KiB
abu (KernelSU-Next) vs ours (ReSukiSU) — SusFS integration checklist
Historical hypothesis checklist: The 2026-09-16 source audit 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)
- Defconfig SusFS on → choice flipped → no MANUAL_HOOK → vibrator hang / broken hooks (
T004038Z). - MANUAL+SusFS without AUTO_* → early logo reboot (
T091211Z). - AUTO_* + SusFS → link error
ksu_init_rc_hook(SUSFS#elifwon). - 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_MOUNTKSU_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:
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.