
Пошаговое руководство по сборке пользовательских ядер Kali NetHunter для Android: получение исходного кода, выбор тулчейна, кросс-компиляция и прошивка.
Самое большое препятствие для большинства людей, желающих настроить устройство Nethunter, — это требование к ядру. Если для вашего устройства ещё нет готового (и поддерживаемого) ядра, вам придётся собрать его самостоятельно. Документации по этому процессу уже много, но, по моему опыту, бывает сложно понять, что применимо в вашем случае, а что нет.
Эту проблему усугубляют мудаки люди, которые пишут гайды с кликбейтными заголовками вроде «Соберите ядро Nethunter для ЛЮБОГО Android-устройства!» или с ложными обещаниями вроде «Научитесь компилировать ядро Nethunter за десять минут!» Также печальная реальность интернета в 2025 году состоит в том, что многие идиоты люди считают, будто ChatGPT и другие большие языковые модели дают авторитетные ответы на их вопросы, хотя на самом деле все, что есть у этих моделей, — это информация, которую они соскребли с вышеупомянутых мудаков.
Я пишу это руководство максимально подробно и честно, насколько могу. Однако оно не задумано как единственный документ, который вам нужно будет прочитать для этого процесса — surely у вас возникнут вопросы, на которые этот документ не сможет ответить. Я хочу призвать вас искать ответы на эти вопросы в соответствующей документации программного обеспечения, а НЕ на YouTube или в ChatGPT.
Прежде чем начинать ЛЮБОЙ из этих шагов, у вас УЖЕ должно быть:
apt update && apt upgrade -y (опционально: добавлены метапакеты)Для выполнения этого процесса вам понадобятся:
cd, rm, ls, mkdir, find, diff, grep и т.д.)vim для крутых, иначе nano)build-devel в Arch-основанных дистрибутивах, build-essential в Debian-основанных) — я также рекомендую установить Perl и Python3, так как некоторые makefile ядра требуют ихВозможно ли это для моего устройства?
Ядро Linux распространяется под лицензией GNU General Public License 2.0, которая является копилефт-лицензией. Это означает, что исходный код ядра Linux свободно распространяется, и вы можете изменять его как угодно (что и сделал каждый производитель Android), ОДНАКО ваш результирующий исходный код также должен распространяться свободно.
К удивлению абсолютно никого, многие гигантские корпорации, использующие код под лицензией GPL, пренебрегают условиями этой лицензии. Они либо отказываются распространять свой исходный код, либо выпускают лишь его часть (обычно сломанную, устаревшую и с встроенными двоичными blob'ами). Если для ядра вашего устройства нет доступного исходного кода, то создать ядро Nethunter для него невозможно.
Ваша возможность разблокировать загрузчик и установить кастомную прошивку также сильно зависит от прихотей производителя вашего устройства. Даже если они разрешают разблокировку загрузчика и вам удалось получить root с помощью Magisk, если они не публикуют device trees, то, скорее всего, для вашего устройства нет кастомных прошивок. В этом случае крайне сомнительно, что опубликованный ими исходный код ядра (если он вообще есть) получал какое-либо обслуживание с момента выпуска, или что он вообще соберётся даже без изменений. Если вы не видите, чтобы кто-то ещё поддерживал что-либо (ядра, прошивки, recovery) для вашего устройства, то превратить это устройство в полноценный Nethunter будет трудно, если не невозможно.
Замечание о версиях ядра
Представим, что для вашего устройства регулярно обновляются и поддерживаются кастомные прошивки/ядра/recovery, но просто нет ядра Nethunter. В этом случае вы должны суметь пройти этот процесс, но сам процесс будет различаться в зависимости от того, какую версию ядра Linux использует ваше устройство.
Информация в этом руководстве основана на моём опыте модификации ядер 4.14.x. Существуют более старые руководства, в которых говорится об использовании тулчейнов GCC (вместо LLVM/clang, как мы будем использовать), применимых к ядрам 3.x. Если ваше устройство использует версию ядра Linux 5.x/6.x, то информации из этого руководства будет недостаточно для завершения процесса. Метод сборки Android постоянно меняется, и вам следует искать руководство, которое охватывает GKI-ядра и использование Bazel/Kleaf.
Хороший способ найти репозитории с исходным кодом ядра для вашего устройства — использовать его кодовое имя (codename). У каждого Android-устройства оно есть, хотя некоторые производители (например, OnePlus) подходят к этому немного веселее, чем другие (например, Samsung). Кодовое имя моего Xiaomi Poco X3 NFC — «surya», а кодовое имя моего Samsung A51 — «SM-A515F». Обычно репозитории исходного кода ядра следуют соглашению об именовании
android_kernel_ПРОИЗВОДИТЕЛЬ_КОДОВОЕ_ИМЯ
где производитель — это материнская компания, т.е. android_kernel_xiaomi_surya, а не android_kernel_poco_surya.
Однако могут также существовать репозитории, основанные на SoC (система-на-кристалле) вашего устройства, иногда «объединённые», чтобы включать исходные файлы для других устройств с тем же SoC. Так обстоит дело с упомянутым Samsung, чей репозиторий исходников называется android_kernel_samsung_exynos9611. Поищите на github/gitlab и посмотрите, что сможете найти.
Для целей этого руководства я буду использовать последнюю LineageOS 22.2 (сборка от 2025-08-04) на surya, поэтому я захочу клонировать исходники ядра из репозитория LineageOS. Но прежде чем делать это, я хочу скопировать два файла с устройства на компьютер, который буду использовать для сборки ядра: /proc/config.gz и /proc/version.
Я мог бы скопировать первый файл, /proc/config.gz, в /sdcard, вытащить его с устройства через ADB, распаковать gunzip и переименовать. Но это слишком много шагов, поэтому вместо этого я сделал вот что: