Files
AXP-Resurection/docs/009-axpr-rom-presentation.md
sunfish-adminandCursor 2d145c2878 009: Polish bacon fixes, OTA host scripts, and migration docs.
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>
2026-10-16 21:06:45 +02:00

18 KiB
Raw Permalink Blame History

AXP Resurrection Pro (AXPR) — Presentación de la ROM

Dispositivo: Google Pixel 4a (sunfish)
Base upstream: LineageOS 23.2 / Android 16 (BP4a, lineage_sunfish-user)
Producto: AXP Resurrection Pro — clon funcional de AXP.OS Pro (LOS22 / GOLDEN) sobre LOS23
Repositorio: AXP_Resurection (rama Magisk / 009)
Documento: síntesis enriquecida para lectura o exportación a PDF — 2026-10-11

Público / usuarios: ver public/AXP-Resurrection-Pro-sunfish.md y lista CVE public/kernel-cve-backport-list.txt.


Exportar a PDF (en el laptop)

cd /home/aventura/Workspaces/AXP_Resurection
# Opción A — pandoc (si está instalado)
pandoc docs/009-axpr-rom-presentation.md -o docs/009-axpr-rom-presentation.pdf \
  --pdf-engine=xelatex -V geometry:margin=2.5cm -V lang=es

# Opción B — navegador / VS Code: vista previa Markdown → Imprimir → Guardar como PDF

Fuentes normativas: specs/009-axp-los23-port/spec.md, .specify/memory/constitution.md, docs/009-handoff-20261008.md. Este archivo es presentación; no sustituye el spec.


Tabla de contenidos

  1. Resumen ejecutivo
  2. Arco del proyecto (punto 0 → hoy)
  3. Línea base LineageOS vs identidad AXPR
  4. Qué se clonó de AXP.OS / EXTENDROM
  5. Kernel: AXP, GrapheneOS-class, CVE
  6. Userspace: parches AXP en Android 16
  7. Debloob / de-Google selectivo
  8. microG, Play y apps empaquetadas
  9. Magisk preroot (sin KernelSU en ship)
  10. Hardening userspace y malloc
  11. Toggles y políticas de privacidad
  12. Firma, AVB y actualizaciones
  13. Inspiración GrapheneOS (qué sí / qué no)
  14. Verificación y hitos en LAB
  15. Build de referencia actual (oct 2026)
  16. Abierto / no objetivo
  17. Apéndice: scripts de integración
  18. Apéndice: lecciones LAB (Magisk / flash)

1. Resumen ejecutivo

AXP Resurrection Pro (AXPR) no es un LineageOS con “algunos APKs”: es un resurrection track que toma LineageOS 23.2 vanilla probado en LAB (003) y reintegra el conjunto de capacidades AXP.OS Pro (referencia GOLDEN en Pixel 4a con AXP 22.2 / Android 15), adaptado a Android 16 y Magisk 30.7, con:

  • Kernel msm-4.14 de LOS + Stage 1 Graphene/AXP (~30 parches) + FORTIFY + ~429 CVE “clean-offset” + lotes high-offset + endurecimiento US-S5-1 (sin Yama como GOLDEN).
  • Userspace microG + Phonesky parcheado del proyecto + sigspoof y call recording con toggles + DNS privado / connectivity check al estilo AXP (sin servidores axp.os).
  • Debloob en 4 oleadas (euicc Google, carrier/RCS, herramientas Lineage, comandos solo-LAB) — no el Deblob.sh ciego de AXP.
  • Magisk embebido en build (EXTENDROM EXTENDROM_PREROOT_BOOT), manager dormant hasta activación; KernelSU/SusFS fuera del bacon de ship (007 en paralelo).
  • Firma release-keys de proyecto, AVB flags=0 (track desbloqueado + Magisk), SPL vendor fijado en 2023-09-05 (guardia anti-downgrade).

Paridad bancaria Swissquote en Island: PASS en cierre 2026-10-09; Yuh sigue abierto.


2. Arco del proyecto (punto 0 → hoy)

Fase Feature Qué se logró
Host 001 rom-dev01, artefactos bajo /srv/rom/artifacts/, builds largos en tmux (rom-detach)
Oracle 002 Inventario GOLDEN (11071JEC203839) — solo lectura adb
Baseline 003 LOS 23.2 UNOFFICIAL vanilla en LAB (20260914), smoke hardware, sin AXP/microG
MicroG track (standby) 004–008 microG, spoof, call rec, etc. — reutilizado por 009
KernelSU track (paralelo) 007 Boot OK sept 2026; no mezclar en bacon Magisk
Ship activo 009 AXP → LOS23 resurrection; spec 009-axp-los23-port

Dispositivos:

Rol Serial Uso
GOLDEN 11071JEC203839 Oracle AXP 22.2 — nunca flashear
LAB 11231JEC207477 Flash, sideload, Magisk, banca en Island

3. Línea base LineageOS vs identidad AXPR

3.1 Vanilla LOS (003)

  • Build: lineage-23.2-20260914-UNOFFICIAL-sunfish
  • ro.lineage.version UNOFFICIAL, test-keys, sin microG ni Magisk AXP
  • Vendor SPL 2023-09-05 (EOL Pixel; documentado)
  • Gate: smoke LAB OK → autoriza integración AXP

3.2 Pin upstream OTA (oct 2026)

  • Manifest pin: Lineage nightly 20261008 (lineage-23.2-20261008-nightly-sunfish)
  • Zip de producto: AXP-Resurection-Pro-23.2-20261008-sunfish.zip (hermano de lineage-23.2-20261008-PRO-sunfish.zip)
  • LINEAGE_BUILDTYPE=PRO, user, TARGET_RELEASE=bp4a
  • Platform SPL: 2026-09-01 (merges LOS)
  • Vendor SPL ship: 2023-09-05 (deliberado vs GOLDEN 2023-08-05 — guardia en apply_009_axp_identity.py)

3.3 Branding

  • Nombre producto: AXP Resurrection Pro
  • Bootanimation: fullscreen sunfish (mejora de tamaño vs banda Lineage); assets AXP PRO en payload aún limitados — animación puede seguir siendo clase Lineage en algunos builds
  • No NeoLauncher — Launcher3 Lineage
  • No servidores OTA AXP ni repos de mercado externos (EOL)

4. Qué se clonó de AXP.OS / EXTENDROM

Regla del repo (AGENTS.md): copiar método AXP/EXTENDROM/GOLDEN antes de inventar política local.

Área Mecanismo AXP Implementación AXPR
Magisk en boot EXTENDROM_PREROOT_BOOT, patch.sh, hook releasetools vendor/sunfish-a16/magisk/, out/.magisk/READY, SUNFISH_A16_MAGISK_PREROOT
Magisk no en PRODUCT Root dormant hasta activación Stub manager; no PRODUCT_PACKAGE Magisk
Env patcher PREINITDEVICE=userdata, KEEPVERITY, KEEPFORCEENCRYPT Mismo en vendor/sunfish-a16/magisk/patch.sh
Product wiring gms.mk, magisk.mk, apps.mk apply_009_product_includes.py en cada bacon
Identidad / certs vendor/lineage-priv/keys, avb.pem apply_009_axp_identity.py + /srv/rom/secrets/android-certs
Phonesky APK parcheado (exact alarm, etc.) /srv/rom/prebuilts/phonesky/ — no en git
Toggles EXTENDROM allow_signature_fake, extendrom_call_recording 005 sigspoof, 008 call rec / FLAG_SECURE
Private DNS lista AXP Settings providers apply_009_private_dns_providers.py
Connectivity / INTERNET UX AXP-class apply_009_connectivity_check.py
Disable app clásico vs Archive A16 apply_009_disable_user_apps.py
OpenSSH en product Binarios fuera; init.openssh.rc queda US-S4-1 + hardening.mk
Referencias build EXTENDROM en rom-dev01 /srv/rom/references/extendrom/

FAQ AXP (Magisk): tras flash, sí a descargar/instalar el APK del manager; el paso Additional setup que re-parchea boot suele no hacer falta en preroot (el boot ya va parcheado en bacon). Ver AXP FAQ.


5. Kernel: AXP, GrapheneOS-class, CVE

Base: kernel/google/msm-4.14 @ 4.14.357-openela (pin LOS 28f9290ae067), non-GKI.

5.1 Ya en LOS (no duplicar)

CFI, shadow call stack, stack protector, KASLR, PAN, hardened usercopy, restricción perf events, etc. (docs/009-kernel-hardening-map.md).

5.2 Stage 1 — parches Graphene/AH vía AXP kernel_patches

~30 parches aplicados (deny USB toggle, allocsize, BUG_ON, FORTIFY intra-object, randomize, ro_after_init, sanitize, slab hardened, unused-fn, …).
Omitido por política: location lockdown (FR-018), LinuxIncrementals, mega CVE hasta fase estable.

5.3 Combo4 + Clang FORTIFY

  • CONFIG_FORTIFY_SOURCE=y y opciones slab/init/on alloc tras Stage 1
  • Fixes de build (LTO/modules qcacld, stubs acotados en bisect histórico)

5.4 CVE

Etapa Contenido
CVE clean-offset ~429 IDs en cve-clean-offset.list (strict apply en bacon)
High-offset batches 1–3 Offsets grandes con max_abs_offset elevado
Denylist p.ej. CVE-2022-49980 (lock-scope USB)
Política Atribución en logs cve-stage/; no megapatch opaco

5.5 US-S5-1 (como GOLDEN)

  • CONFIG_SECURITY_YAMA no activado (Yama ptrace_scope=2 rompió PairIP / anti-debug)
  • SLAB_FREELIST_RANDOM=y, USERFAULTFD off
  • KSYM_NAME_LEN=192; sin KernelSU en defconfig ship

5.6 hardened_malloc (012)

  • Integrado en bacon OTA (009-bacon-hardened-malloc.sh)
  • Exclusiones SurfaceFlinger/cámara documentadas en árbol bionic

6. Userspace: parches AXP en Android 16

Scripts bajo vendor/sunfish-a16/patches/009-axp-los23-port/ (puertos desde árbol AXP legacy a A16, no “SDK 35”):

Script Función
apply_009_product_includes.py gms.mk + magisk.mk + apps.mk + BoardConfig
apply_009_axp_identity.py release keys, AVB, SPL vendor guard
apply_009_axp_branding.py branding Pro
apply_009_private_dns_providers.py lista DNS privado AXP
apply_009_connectivity_check.py checks de conectividad
apply_009_disable_user_apps.py Disable clásico
apply_009_supl_privacy.py SUPL / ubicación (sin lockdown extra FR-018)
apply_009_cmdline_mode.py cmdline / modo debug (Magisk track)
apply_009_yama_ptrace.py Yama inerte si no hay Yama en kernel
apply_009_a15_* timeouts reboot/Wi‑Fi/BT, settings
apply_005 / apply_008 sigspoof, call recording, FLAG_SECURE DO
apply_009_drop_* deblob waves (ver §7)

WMS / FLAG_SECURE: override global opcional (proyecto 008), default off.


7. Debloob / de-Google selectivo

No se ejecuta Deblob.sh por defecto AXP. Oleadas controladas (AXP_DEBLOB_WAVE4=1 en OTA):

Wave Contenido
1 Drop Google EUICC / LPA (apply_009_drop_euicc_google.py) — OpenEUICC en system_ext
2 Carrier Google + AOSP RCS (apply_009_drop_carrier_google.py)
3 Herramientas Lineage en system (bash, htop, nano, unrar, addon.d/50-lineage.sh) — Swissquote fallaba con estas en system
4 Comandos solo-LAB / diag (apply_009_drop_lab_only_commands.py)

Se mantiene (radio/IMS): ims, QtiTelephonyService, xtra-daemon, Widevine, EuiccSupportPixel donde el spec lo exige, Qualcomm diag en wave 4 parcial según cierre.


8. microG, Play y apps empaquetadas

8.1 Stack deGoogle (servicios)

Componente Ubicación Versión pin (ej.)
GmsCore (microG) system_ext/app/GmsCore 0.3.17.252432
GsfProxy system_ext 0.1.0
Phonesky system/priv-app/Phonesky 52.9.22-24 (artifact host)
JNI GmsCore .../lib/arm64/*.so Extraído en bacon (obligatorio para Maps)

8.2 Apps usuario (system_ext / product)

App Paquete Notas
Aurora Store com.aurora.store system_ext
Droidify com.looker.droidify sustituye cliente F-Droid
Fossify Gallery org.fossify.gallery no Gallery2/Glimpse
Jelly org.lineageos.jelly product
OpenEUICC im.angry.openeuicc LPA privilegiada
WebView com.android.webview LOS 23 — no Aosmium (EOL); selector multi-proveedor en Dev options

Postflight bacon: US-S4-2 (Jelly), US-S4-3 (Aurora/Droidify/Fossify en system_ext).


9. Magisk preroot (sin KernelSU en ship)

Tema Detalle
Versión 30.7 (pin; GOLDEN oracle 29.0)
Build Hook common.py + patch.sh en empaquetado target_files/IMAGES/boot.img
Verificación host magiskboot cpio ramdisk.cpio test ≠ 0 en ship boot.img
Artefacto forensics boot-make-out.img = out/.../boot.img sin Magisk — no flashear
Activación Abrir app → download/install APK real; evitar re-parchear boot (Install / inactive slot)
UI Ramdisk Yes/No Clasificación de método de instalación; con preroot puede quedar No sin impedir root
Módulos GOLDEN No empaquetados (PIF, hosts, tee sim, …) — usuario instala después
KernelSU Prohibido en mismo boot que Magisk ship

10. Hardening userspace y malloc

ID Medida
US-S4-1 Sin sshd/ssh/rsync/procmem en product; sí init.openssh.rc
US-S4-2/3 Superficie apps (Jelly + Fossify + stores)
US-S6 lineage_sunfish-user lunch
012 hardened_malloc en bionic (ship OTA)
SELinux Enforcing (medido en LAB)
Encryption FBE/file encryption estándar
Bootloader lock Wont — AXP/LOS/Magisk asumen unlock

11. Toggles y políticas de privacidad

Toggle / setting Origen Comportamiento
Signature spoofing AXP / 005 Restricted; Developer Options
Call recording unlock EXTENDROM / 008 SQLite / settings key
FLAG_SECURE override Proyecto 008 Default off
Private DNS providers AXP lista Sin endpoints axp.os
Connectivity check AXP-class Sin branding AXP en URLs
SUPL / XTRA / IZat AXP timeouts + switches Precisión GPS (no extra-cap FR-018)
Native debug / Yama props apply_009_yama_ptrace Inerte sin Yama en kernel
Disable app AXP vs Archive A16 Restaurar disable clásico

12. Firma, AVB y actualizaciones

Tema Valor ship
Firma APK/OAT vendor/lineage-priv/keys/releasekey
AVB key vendor/sunfish-a16/certs/avb.pem (SHA256_RSA4096)
AVB flags 0 (runtime unlocked; no “hardened verified boot” Magisk track)
Zip OTA payload.bin sideload; no OTA servidor AXP
FR-019 microG, Phonesky, apps — actualización sideload cada ~2–3 meses (stub doc)
Downgrade User builds rechazan SPL vendor < 2023-09-05

Flash LAB recomendado: recovery → factory reset → sideload zip completo.
Evitar: fastboot -w; mezclar vbmeta/boot de otro build; flashear solo boot-make-out.img.


13. Inspiración GrapheneOS (qué sí / qué no)

GrapheneOS / AH En AXPR
Parches kernel hardening (alloc, fortify, slab, sanitize, …) Sí — vía AXP kernel_patches + Stage1
hardened_malloc Sí (012)
Árbol kernel A13 Graphene sunfish No — base es LOS msm-4.14
Lockdown ubicación Graphene No (FR-018)
Auditoría attestation bancaria tipo Graphene No como gate; banking deferred
WebView Vanadium por defecto No — WebView LOS + elección usuario

14. Verificación y hitos en LAB

Hito Fecha / evidencia
Vanilla LOS boot 003 — 2026-09-14
Stage1 kernel bacon 20260918T180359Z-axp-kh-stage1
CVE bacon 20260918T215034Z-axp-kh-cve
Closure baseline wave 3 20261009T145241Z — Swissquote Island PASS
Final ship wave4 + malloc 20261009T172104Z, bacon009final
OTA rebacon pin 20261008 20261011T092526Z — bacon009ota-r13, bacon_exit=0

Matrices: docs/009-capability-matrix.md, docs/009-closure-parity-20261009.md, docs/axp-pro-parity.md.


15. Build de referencia actual (oct 2026)

Campo Valor
Directorio /srv/rom/artifacts/009-axp-los23-port/20261011T092526Z-axp-stage1-combo4-cve-hi-releasekeys
Zip AXP-Resurection-Pro-23.2-20261008-sunfish.zip
SHA256 zip 91d7adf5435c4e7279123bca4ce72793754384bb341cfbb61522f3411eea2847
boot.img (ship) 9e6ec52543445b10279b681f69c055fb240f6910616f569914fe598d77ef7d4f
README artefacto Stage1+combo4+FORTIFY+CVE+hi1-3+US-S4+US-S5-1+wave1-4+malloc+releasekeys
Script bacon scripts/009-bacon-axp-stage1-combo4-cve-hi-releasekeys.sh

16. Abierto / no objetivo

Abierto: rebase LOS periódico (009-upstream-rebase-ota.md), Yuh en Island, FR-019 sideload playbook, llamada SIM física gate radio, postflight OTA boot hash = ship boot, animación AXP completa en payload.

No objetivo / wont: KernelSU en ship, NeoLauncher, Aosmium WebView, OTA/repositorios AXP externos, backup ROM integrado, bootloader relock, flash GOLDEN, mezclar track 007 en bacon Magisk.

Paralelo: 007 KernelSU/SusFS — docs/007-parallel-on-009.md.


17. Apéndice: scripts de integración

Bacon entry (host): scripts/009-rebuild-from-los.sh → rsync vendor/sunfish-a16 → 009-bacon-axp-stage1-combo4-cve-hi-releasekeys.sh.

Wrappers OTA: 009-bacon-hardened-malloc.sh, 009-bacon-wave4-deblob.sh.

Kernel: vendor/sunfish-a16/patches/009-kernel-hardening/apply_stage1.sh, apply-cve-strict.sh, listas cve-clean-offset.list, cve-high-offset-batch*.list.

Checklist pre-bacon: docs/009-ota-rebuild-checklist.md.


18. Apéndice: lecciones LAB (Magisk / flash)

  1. Sideload completo tras wipe es el camino principal; no depender de reflashear solo boot salvo recovery rota.
  2. boot.img del artefacto = Magisk; boot-make-out.img = stock.
  3. Tras preroot: download/install del manager; no insistir en Additional setup que re-parchea boot ni Install inactive slot (conflicto slots / UI Ramdisk).
  4. Ramdisk: No en la app no implica ROM sin Magisk si magiskd y 30.7 están activos.
  5. Flash manual boot+vbmeta+dtbo debe ser juego completo del mismo artefacto; si no, riesgo de fastboot loop.
  6. No bajar vendor SPL bajo 2023-09-05 en upgrades (init_user0_failed / rollback Keymaster).

Fin del documento. Para el día a día del equipo: docs/README.md → 009-handoff-20261008.md.