Restore disable_configstore, EuiccDisabler and thermal CDEV guards, branding and rebuild/sync helpers; document device roles, laptop migration, and Gitea. Co-authored-by: Cursor <cursoragent@cursor.com>
85 lines
4.7 KiB
Markdown
85 lines
4.7 KiB
Markdown
<!-- Status: parallel KernelSU track — see docs/007-parallel-on-009.md -->
|
|
|
|
> **Status: parallel KernelSU / SusFS track** (kept). Bridge to current Magisk ROM: [`007-parallel-on-009.md`](007-parallel-on-009.md). Magisk ship resume: [`009-handoff-20261008.md`](009-handoff-20261008.md).
|
|
|
|
# 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.
|