
Guia passo a passo para compilar kernels Kali NetHunter personalizados para Android: obtenção do código-fonte, seleção da toolchain, compilação cruzada e flashing.
O maior obstáculo para a maioria das pessoas que querem configurar um dispositivo Nethunter é o requisito do kernel. A menos que o seu dispositivo já tenha um kernel pré-construído (e mantido), vão dizer-lhe para compilar um você mesmo/a. Já existe muita documentação sobre este processo, mas na minha experiência pode ser difícil saber o que se aplica ao seu caso e o que não se aplica.
Este problema é agravado por parvos pessoas que escrevem guias com títulos de clique como "Compila um kernel Nethunter para QUALQUER dispositivo Android!" ou com falsas promessas como "Aprende a compilar um kernel Nethunter em dez minutos!" É também uma infeliz realidade da internet em 2025 que muitos idiotas pensam que o ChatGPT ou outros grandes modelos de linguagem têm respostas autoritativas para as suas perguntas, quando tudo o que esses modelos realmente têm é informação que rasparam dos parvos acima mencionados.
Estou a escrever este guia da forma mais completa e honesta que consigo. No entanto, não pretende ser o único documento que vai precisar de ler para este processo – certamente terá perguntas que este documento não consegue responder. Gostaria de o encorajar a procurar respostas para essas perguntas na documentação de software relevante, e NÃO no YouTube ou no ChatGPT.
Antes de começar QUALQUER parte deste processo, já deverá ter:
apt update && apt upgrade -y (opcional: adicionados metapacotes)Para concluir este processo, vai precisar de:
cd, rm, ls, mkdir, find, diff, grep, etc)vim para os fixes, caso contrário nano)build-devel em distros baseadas em Arch, build-essential nas baseadas em Debian) – também recomendo instalar Perl + Python3, pois alguns makefiles de kernel exigem estesIsto vai ser possível para o meu dispositivo?
O kernel Linux é licenciado sob a GNU General Public License 2.0, que é uma licença copyleft. Isto significa que o código-fonte do kernel Linux é distribuído livremente e pode alterar o código-fonte como desejar (como cada fabricante Android fez), NO ENTANTO, o código-fonte resultante TAMBÉM deve ser distribuído livremente.
Para surpresa de absolutamente ninguém, muitas das gigantescas corporações que utilizam código licenciado pela GPL desrespeitam os termos desta licença. Ou recusam-se a distribuir o seu código-fonte ou apenas publicam parte dele (geralmente avariado, desatualizado e com blobs binários inline). Se não houver código-fonte disponível para o kernel do seu dispositivo, então não há forma de criar um kernel Nethunter para ele.
A sua capacidade de desbloquear o bootloader e instalar uma ROM personalizada também depende muito dos caprichos do fabricante do seu dispositivo. Mesmo que permitam o desbloqueio do bootloader e você tenha conseguido obter root no seu telemóvel com o Magisk, se não publicarem device trees, provavelmente não existem ROMs personalizadas para o seu dispositivo. Nesse caso, é extremamente duvidoso que o código-fonte do kernel que publicaram (se o fizeram) tenha recebido alguma manutenção desde a sua publicação, ou que compile mesmo sem modificações. Se você não vir mais ninguém a manter qualquer coisa (kernels, ROMs, recoveries) para o seu dispositivo, então será difícil, senão impossível, transformar esse dispositivo num Nethunter completo.
Uma Nota Sobre Versões de Kernel
Imaginemos que existem ROMs/kernels/recoveries personalizadas atualizadas e mantidas regularmente para o seu dispositivo, mas simplesmente não existe um kernel Nethunter. Nesse caso, deverá conseguir concluir este processo, mas o processo variará dependendo de qual versão do kernel Linux o seu dispositivo usa.
A informação neste guia é baseada na minha experiência a modificar kernels 4.14.x. Existem guias mais antigos que falam sobre utilizar toolchains GCC (em vez de LLVM/clang, como vamos usar) que se aplicam a kernels 3.x. Se o seu dispositivo utiliza uma versão 5.x/6.x do kernel Linux, então a informação neste guia não será suficiente para concluir este processo. O método de compilação Android muda constantemente, e deve procurar um guia que cubra kernels GKI e a utilização de Bazel/Kleaf.
Uma boa forma de encontrar repositórios que contêm o código-fonte do kernel para o seu dispositivo é usar o seu codinome. Todos os Android têm um, embora alguns fabricantes (ex.: OnePlus) se divirtam um pouco mais com isto do que outros (ex.: Samsung). O codinome do meu Xiaomi Poco X3 NFC é "surya", enquanto o codinome do meu Samsung A51 é "SM-A515F". Normalmente, os repositórios de código-fonte do kernel seguem a convenção de nomenclatura
android_kernel_MANUFACTURER_CODENAME
onde o fabricante é a empresa-mãe, ou seja, android_kernel_xiaomi_surya, não android_kernel_poco_surya.
No entanto, também pode haver repositórios baseados no SoC (system-on-a-chip) do seu dispositivo, por vezes "unificados" para incluir ficheiros de código-fonte de outros dispositivos com o mesmo SoC. Este é o caso do Samsung que mencionei, cujo repositório de código-fonte se chama android_kernel_samsung_exynos9611. Dê uma vista de olhos pelo github/gitlab e veja o que consegue encontrar.