- ✅ Linux básico (Ubuntu/Debian)
- ✅ Git y repo tool
- ✅ Android build system
- ✅ Device trees y kernels
- ✅ HALs y blobs propietarios
- PC: 8+ cores, 32GB+ RAM, 500GB+ SSD
- Dispositivo: Bootloader desbloqueable
- Conexión: Internet rápido (200GB+ descarga)
# 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/# Kernel source (requerido por GPL)
git clone <manufacturer-kernel-source>
# Device tree
git clone <manufacturer-device-tree>
# Vendor blobs
git clone <manufacturer-vendor-blobs>cd DragonBornOS
# Crear directorios
mkdir -p device/{vendor}/{codename}
mkdir -p kernel/{vendor}/{soc}
mkdir -p vendor/{vendor}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}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}/overlayCrear device/{vendor}/{codename}/AndroidProducts.mk:
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/dragonborn_{codename}.mk
COMMON_LUNCH_CHOICES := \
dragonborn_{codename}-user \
dragonborn_{codename}-userdebug \
dragonborn_{codename}-engcd 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# 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# 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# Conectar dispositivo con root
adb root
adb remount
# Extraer vendor partition
adb pull /vendor vendor_blobs
# O usar extract-files.sh
./extract-files.sh# Vendor blobs list
bin/qcrilmsgtunnel
etc/permissions/privapp-permissions-qti.xml
lib64/libqti-perfd-client.so
Crear vendor/{vendor}/{codename}/{codename}-vendor.mk:
PRODUCT_COPY_FILES += \
vendor/{vendor}/{codename}/proprietary/{blob}:{path}cd DragonBornOS
# Setup environment
source build/envsetup.sh
lunch dragonborn_{codename}-userdebug
# Build
mka bacon -j$(nproc)# 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# Ver logs
adb logcat
# Ver boot animation
adb shell getprop sys.boot_completed
# Ver errores
adb shell dmesg | grep -i errorCausas:
- 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
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
Causas:
- HAL de cámara faltante
- Vendor blobs incompatibles
Solución:
1. Extraer camera HAL del stock ROM
2. Verificar permissions
Causas:
- RIL blobs incompatibles
- modem firmware faltante
Solución:
1. Extraer RIL del stock ROM
2. Verificar modem partition
| 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 |
- 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)
- README.md del dispositivo
- Installation instructions
- Changelog
- Known issues
- Credits
- #devs en Telegram
- #porting en Discord
- Issues en GitHub
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