
Guida passo-passo alla creazione di kernel Kali NetHunter personalizzati per Android: recupero del sorgente, selezione della toolchain, cross-compilazione e flashing.
L'ostacolo più grande per la maggior parte delle persone che vogliono configurare un dispositivo Nethunter è il requisito del kernel. A meno che il tuo dispositivo non abbia già un kernel precompilato (e mantenuto), ti verrà detto di compilarne uno da solo. Esiste già molta documentazione su questo processo, ma dalla mia esperienza può essere difficile capire cosa si applica al tuo caso e cosa no.
Questo problema è aggravato da stronzi persone che scrivono guide con titoli clickbait come “Compila un kernel Nethunter per QUALSIASI dispositivo Android!” o con false promesse come “Impara a compilare un kernel Nethunter in dieci minuti!” È anche una sfortunata realtà di Internet nel 2025 che molti idioti pensino che ChatGPT o altri grandi modelli linguistici abbiano risposte autorevoli alle loro domande, quando tutto ciò che questi modelli hanno davvero sono informazioni recuperate dai suddetti stronzi.
Scrivo questa guida nel modo più approfondito e onesto possibile. Tuttavia, non è pensata per essere l'unico documento che dovrai leggere per questo processo: sicuramente avrai domande a cui questo documento non può rispondere. Vorrei incoraggiarti a cercare le risposte a queste domande nella documentazione software pertinente e NON su YouTube o da ChatGPT.
Prima di iniziare QUALSIASI parte di questo processo, dovresti GIÀ avere:
apt update && apt upgrade -y (facoltativo: aggiunti metapacchetti)Per completare questo processo, avrai bisogno di:
cd, rm, ls, mkdir, find, diff, grep, ecc.)vim per i ragazzi fighi, altrimenti nano)build-devel sulle distro basate su Arch, build-essential su quelle basate su Debian) – ti consiglio anche di installare Perl + Python3 poiché alcuni makefile del kernel li richiedonoSarà possibile per il mio dispositivo?
Il kernel Linux è concesso in licenza GNU General Public License 2.0, che è una licenza copyleft. Ciò significa che il codice sorgente del kernel Linux è distribuito liberamente e puoi modificare il codice sorgente come desideri (come ha fatto ogni produttore Android), TUTTAVIA, il codice sorgente risultante deve ANCHE essere distribuito liberamente.
Con sorpresa di nessuno, molte delle gigantesche corporation che usano codice con licenza GPL sfoggiano i termini di questa licenza. O rifiutano di distribuire il loro codice sorgente o ne rilasciano solo una parte (di solito rotta, obsoleta e con blob binari incorporati). Se non c'è codice sorgente disponibile per il kernel del tuo dispositivo, non c'è modo di creare un kernel Nethunter per esso.
La tua capacità di sbloccare il bootloader e installare una ROM personalizzata dipende anche in gran parte dai capricci del produttore del tuo dispositivo. Anche se consentono lo sblocco del bootloader e sei stato in grado di fare il root del telefono con Magisk, se non pubblicano i device tree, probabilmente non ci sono ROM personalizzate per il tuo dispositivo. In questo caso, è estremamente dubbio che il codice sorgente del kernel che hanno pubblicato (se presente) abbia ricevuto manutenzione dalla sua pubblicazione, o che compili anche senza modifiche. Se non vedi nessun altro che mantiene qualcosa (kernel, ROM, recovery) per il tuo dispositivo, allora sarà difficile, se non impossibile, trasformare quel dispositivo in un Nethunter completo.
Una nota sulle versioni del kernel
Immaginiamo che ci siano ROM personalizzate/kernel/recovery aggiornati e mantenuti regolarmente per il tuo dispositivo, ma semplicemente nessun kernel Nethunter. In questo caso, dovresti essere in grado di completare questo processo, ma il processo varierà a seconda della versione del kernel Linux utilizzata dal tuo dispositivo.
Le informazioni in questa guida si basano sulla mia esperienza di modifica dei kernel 4.14.x. Ci sono guide più vecchie che parlano dell'uso di toolchain GCC (invece di LLVM/clang, come useremo noi) che si applicano ai kernel 3.x. Se il tuo dispositivo usa una versione 5.x/6.x del kernel Linux, le informazioni in questa guida non saranno sufficienti per completare questo processo. Il metodo di compilazione Android cambia continuamente e dovresti cercare una guida che copra i kernel GKI e l'uso di Bazel/Kleaf.
Un buon modo per trovare repository che contengono il sorgente del kernel per il tuo dispositivo è usare il suo nome in codice. Ogni Android ne ha uno, anche se alcuni produttori (es. OnePlus) si divertono un po' di più di altri (es. Samsung). Il nome in codice del mio Xiaomi Poco X3 NFC è "surya", mentre quello del mio Samsung A51 è "SM-A515F". Tipicamente, i repository del sorgente del kernel seguono la convenzione di denominazione
android_kernel_MANUFACTURER_CODENAME
dove il produttore è la società madre, cioè android_kernel_xiaomi_surya, non android_kernel_poco_surya.
Tuttavia, potrebbero esserci anche repository basati sul SoC (system-on-a-chip) del tuo dispositivo, a volte "unificati" per includere file sorgente per altri dispositivi con lo stesso SoC. Questo è il caso del Samsung che ho menzionato, il cui repository sorgente si chiama android_kernel_samsung_exynos9611. Dai un'occhiata su github/gitlab e vedi cosa riesci a trovare.