
Guía paso a paso para compilar kernels personalizados de Kali NetHunter para Android: obtención del código fuente, selección de la cadena de herramientas, compilación cruzada y flasheo.
El mayor obstáculo para la mayoría de las personas que quieren configurar un dispositivo Nethunter es el requisito del kernel. A menos que tu dispositivo ya tenga un kernel precompilado (y mantenido), te dirán que compiles uno tú mismo. Ya hay mucha documentación sobre este proceso, pero en mi experiencia puede ser difícil saber qué aplica en tu caso y qué no.
Este problema se ve agravado por gilipollas personas que escriben guías con títulos clickbait como “¡Compila un kernel de Nethunter para CUALQUIER dispositivo Android!” o con falsas promesas como “¡Aprende a compilar un kernel de Nethunter en diez minutos!” También es una desafortunada realidad de internet en 2025 que muchas idiotas personas piensen que ChatGPT u otros modelos de lenguaje grandes tienen respuestas autoritativas a sus preguntas, cuando todo lo que esos modelos realmente tienen es información que extrajeron de los mencionados gilipollas.
Escribo esta guía de la manera más exhaustiva y honesta que puedo. Sin embargo, no pretende ser el único documento que necesitarás leer para este proceso – seguramente tendrás preguntas que este documento no puede responder. Me gustaría animarte a buscar respuestas a estas preguntas en la documentación de software relevante, y NO en YouTube ni en ChatGPT.
Antes de comenzar CUALQUIER parte de este proceso, ya deberías tener:
apt update && apt upgrade -y (opcional: añadidos metapaquetes)Para completar este proceso, necesitarás:
cd, rm, ls, mkdir, find, diff, grep, etc.)vim para los más guays, o si no nano)build-devel en distros basadas en Arch, build-essential en las basadas en Debian) – también recomendaría instalar Perl + Python3, ya que algunos makefiles del kernel los requieren¿Esto será posible para mi dispositivo?
El kernel de Linux está licenciado bajo la GNU General Public License 2.0, que es una licencia copyleft. Esto significa que el código fuente del kernel de Linux se distribuye libremente y puedes modificar el código fuente como desees (como ha hecho cada fabricante de Android), SIN EMBARGO, tu código fuente resultante TAMBIÉN debe distribuirse libremente.
Para sorpresa de absolutamente nadie, muchas de las gigantescas corporaciones que usan código con licencia GPL hacen caso omiso de los términos de esta licencia. O se niegan a distribuir su código fuente o solo publican parte de él (generalmente roto, desactualizado y con blobs binarios incrustados). Si no hay código fuente disponible para el kernel de tu dispositivo, entonces no hay forma de crear un kernel de Nethunter para él.
Tu capacidad de desbloquear el bootloader e instalar una ROM personalizada también depende en gran medida de los caprichos del fabricante de tu dispositivo. Incluso si permiten desbloquear el bootloader y has podido rootear tu teléfono con Magisk, si no publican device trees, probablemente no haya ROMs personalizadas para tu dispositivo. En este caso, es extremadamente dudoso que el código fuente del kernel que publicaron (si lo hay) haya recibido mantenimiento desde su publicación, o que compile incluso sin modificaciones. Si no ves a nadie más manteniendo nada (kernels, ROMs, recoveries) para tu dispositivo, entonces será difícil, si no imposible, convertir ese dispositivo en un Nethunter completo.
Una Nota Sobre las Versiones del Kernel
Imaginemos que hay ROMs/kernels/recoveries personalizados actualizados y mantenidos regularmente para tu dispositivo, pero simplemente no hay kernel de Nethunter. En este caso, deberías poder completar este proceso, pero el proceso variará según la versión del kernel de Linux que use tu dispositivo.
La información en esta guía se basa en mi experiencia modificando kernels 4.14.x. Hay guías más antiguas que hablan sobre el uso de toolchains GCC (en lugar de LLVM/clang, como usaremos nosotros) que se aplican a kernels 3.x. Si tu dispositivo usa una versión 5.x/6.x del kernel de Linux, entonces la información de esta guía no será suficiente para completar este proceso. El método de compilación de Android cambia todo el tiempo, y deberías buscar una guía que cubra los kernels GKI y el uso de Bazel/Kleaf.
Una buena forma de encontrar repositorios que contengan el código fuente del kernel de tu dispositivo es usar su codename. Todo Android tiene uno, aunque algunos fabricantes (p. ej. OnePlus) se divierten un poco más con esto que otros (p. ej. Samsung). El codename de mi Xiaomi Poco X3 NFC es "surya", mientras que el codename de mi Samsung A51 es "SM-A515F". Normalmente, los repositorios de código fuente del kernel siguen la convención de nomenclatura
android_kernel_MANUFACTURER_CODENAME
donde el fabricante es la empresa matriz, es decir, android_kernel_xiaomi_surya, no android_kernel_poco_surya.
Sin embargo, también puede haber repositorios basados en el SoC (system-on-a-chip) de tu dispositivo, a veces “unificados” para incluir archivos fuente de otros dispositivos con el mismo SoC. Este es el caso del Samsung que mencioné, cuyo repositorio fuente se llama android_kernel_samsung_exynos9611. Echa un vistazo por github/gitlab y mira lo que puedes encontrar.
Para los propósitos de esta guía, usaré la última LineageOS 22.2 (compilada el 2025-08-04) en surya, por lo tanto, querré clonar el código fuente del kernel desde el repositorio de LineageOS. Pero antes de hacer eso, quiero copiar dos archivos desde mi dispositivo a la computadora que usaré para compilar el kernel: /proc/config.gz y /proc/version.