Skip to content

Latest commit

 

History

History
366 lines (279 loc) · 7.08 KB

File metadata and controls

366 lines (279 loc) · 7.08 KB

🐉 DragonBornOS Porting Guide

Guía completa para portear DragonBornOS a nuevos dispositivos


📋 REQUISITOS PREVIOS

Conocimientos Necesarios

  • ✅ Linux básico (Ubuntu/Debian)
  • ✅ Git y repo tool
  • ✅ Android build system
  • ✅ Device trees y kernels
  • ✅ HALs y blobs propietarios

Hardware Requerido

  • PC: 8+ cores, 32GB+ RAM, 500GB+ SSD
  • Dispositivo: Bootloader desbloqueable
  • Conexión: Internet rápido (200GB+ descarga)

🚀 PROCESO DE PORTING

Fase 1: Preparación (1-2 días)

1.1 Recopilar Información del Dispositivo

# Conectar dispositivo y obtener info
adb shell getprop | grep -E "ro.product|ro.board"

# Obtener información del kernel
adb shell cat /proc/version
adb shell cat /proc/cpuinfo

# Obtener particiones
adb shell ls -la /dev/block/by-name/

1.2 Obtener Fuentes del Fabricante

# Kernel source (requerido por GPL)
git clone <manufacturer-kernel-source>

# Device tree
git clone <manufacturer-device-tree>

# Vendor blobs
git clone <manufacturer-vendor-blobs>

1.3 Crear Estructura DragonBornOS

cd DragonBornOS

# Crear directorios
mkdir -p device/{vendor}/{codename}
mkdir -p kernel/{vendor}/{soc}
mkdir -p vendor/{vendor}

Fase 2: Configuración (2-3 días)

2.1 BoardConfig.mk

Crear device/{vendor}/{codename}/BoardConfig.mk:

# Inherit common DragonBornOS config
include vendor/dragonborn/config/common.mk

# Device specific flags
TARGET_BOARD_PLATFORM := {soc}
TARGET_BOOTLOADER_BOARD_NAME := {codename}

# Kernel config
TARGET_KERNEL_SOURCE := kernel/{vendor}/{soc}
TARGET_KERNEL_CONFIG := {codename}_defconfig

# Partitions (obtener del dispositivo)
BOARD_BOOTIMAGE_PARTITION_SIZE := {size}
BOARD_SYSTEMIMAGE_PARTITION_SIZE := {size}
BOARD_USERDATAIMAGE_PARTITION_SIZE := {size}

2.2 Device.mk

Crear device/{vendor}/{codename}/device.mk:

# Inherit from AOSP
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)

# Inherit from DragonBornOS
$(call inherit-product, vendor/dragonborn/config/common_full_phone.mk)

# Device properties
PRODUCT_SYSTEM_PROPERTIES += \
    ro.dragonborn.maintainer={yourname} \
    ro.product.brand={brand} \
    ro.product.device={codename}

# Overlays
DEVICE_PACKAGE_OVERLAYS += device/{vendor}/{codename}/overlay

2.3 AndroidProducts.mk

Crear device/{vendor}/{codename}/AndroidProducts.mk:

PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/dragonborn_{codename}.mk

COMMON_LUNCH_CHOICES := \
    dragonborn_{codename}-user \
    dragonborn_{codename}-userdebug \
    dragonborn_{codename}-eng

Fase 3: Kernel (3-5 días)

3.1 Configurar Kernel

cd kernel/{vendor}/{soc}

# Copiar defconfig del fabricante
cp {manufacturer}_defconfig {codename}_defconfig

# Editar configuración
make ARCH=arm64 {codename}_defconfig
make ARCH=arm64 menuconfig

# Habilitar requeridos:
# - CONFIG_ANDROID=y
# - CONFIG_ASHMEM=y
# - CONFIG_BINDER=y
# - CONFIG_LOGGER=y

3.2 Compilar Kernel

# Setup cross-compiler
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

# Compilar
make {codename}_defconfig
make -j$(nproc)

# Verificar output
ls -la arch/arm64/boot/Image.gz-dtb

3.3 Crear boot.img

# Usar mkbootimg
python3 mkbootimg.py \
    --kernel arch/arm64/boot/Image.gz-dtb \
    --ramdisk out/ramdisk.cpio.gz \
    --cmdline "{cmdline}" \
    --base {base} \
    --pagesize {pagesize} \
    --output boot.img

Fase 4: Vendor Blobs (2-3 días)

4.1 Extraer Blobs del Dispositivo

# Conectar dispositivo con root
adb root
adb remount

# Extraer vendor partition
adb pull /vendor vendor_blobs

# O usar extract-files.sh
./extract-files.sh

4.2 Crear proprietary-files.txt

# Vendor blobs list
bin/qcrilmsgtunnel
etc/permissions/privapp-permissions-qti.xml
lib64/libqti-perfd-client.so

4.3 Setup vendor makefile

Crear vendor/{vendor}/{codename}/{codename}-vendor.mk:

PRODUCT_COPY_FILES += \
    vendor/{vendor}/{codename}/proprietary/{blob}:{path}

Fase 5: Build & Test (5-7 días)

5.1 Primer Build

cd DragonBornOS

# Setup environment
source build/envsetup.sh
lunch dragonborn_{codename}-userdebug

# Build
mka bacon -j$(nproc)

5.2 Flash & Boot

# Boot a fastboot
adb reboot bootloader

# Flash
fastboot flash boot out/target/product/{codename}/boot.img
fastboot flash system out/target/product/{codename}/system.img
fastboot flash vendor out/target/product/{codename}/vendor.img
fastboot reboot

5.3 Debugging

# Ver logs
adb logcat

# Ver boot animation
adb shell getprop sys.boot_completed

# Ver errores
adb shell dmesg | grep -i error

🔧 PROBLEMAS COMUNES

Bootloop

Causas:
- Kernel mal configurado
- Vendor blobs incompatibles
- SELinux permissions

Solución:
1. Verificar kernel config
2. Extraer logs: adb logcat > bootloop.txt
3. Revisar SELinux: adb shell getenforce

WiFi no funciona

Causas:
- Firmware WiFi faltante
- Kernel driver no cargado

Solución:
1. Verificar firmware en /vendor/firmware/wifi
2. Check dmesg: adb shell dmesg | grep wlan

Cámara no funciona

Causas:
- HAL de cámara faltante
- Vendor blobs incompatibles

Solución:
1. Extraer camera HAL del stock ROM
2. Verificar permissions

RIL no funciona (sin señal)

Causas:
- RIL blobs incompatibles
- modem firmware faltante

Solución:
1. Extraer RIL del stock ROM
2. Verificar modem partition

📊 TIMELINE ESTIMADO

Fase Tiempo Dificultad
Preparación 1-2 días 🟢 Fácil
Configuración 2-3 días 🟡 Medio
Kernel 3-5 días 🔴 Difícil
Vendor Blobs 2-3 días 🟡 Medio
Build & Test 5-7 días 🔴 Difícil
TOTAL 13-20 días 🔴 Difícil

✅ CHECKLIST FINAL

Antes del Release

  • Boot completo
  • WiFi funciona
  • Bluetooth funciona
  • RIL (señal) funciona
  • Cámara funciona
  • Audio funciona
  • Touchscreen funciona
  • Sensors funcionan
  • GPS funciona
  • Charging funciona
  • SELinux Enforcing
  • SafetyNet pasa (opcional)
  • VoLTE funciona (opcional)

Documentación

  • README.md del dispositivo
  • Installation instructions
  • Changelog
  • Known issues
  • Credits

📞 SOPORTE

Recursos

Canales de Ayuda

  • #devs en Telegram
  • #porting en Discord
  • Issues en GitHub

🏁 CONCLUSIÓN

Portear DragonBornOS es un proceso complejo que requiere:

  • ✅ Paciencia y dedicación
  • ✅ Conocimientos de Android
  • ✅ Tiempo (2-3 semanas mínimo)
  • ✅ Dispositivo para testing

Pero el resultado vale la pena:

  • 🐉 Custom ROM estable y optimizada
  • 🐉 Última versión de Android
  • 🐉 Características exclusivas DragonBornOS
  • 🐉 Comunidad de usuarios

¡Good luck and happy porting! 🐉


Documentación: DragonBornOS Team
Versión: 1.0
Última actualización: 2026-03-26