Вс. Сен 6th, 2026

    В Appual есть несколько отличных руководств по разработке под Android, например, Как создать пользовательское ПЗУ из проекта с открытым исходным кодом Android, но эти руководства обычно ориентированы на чистую среду сборки Linux.

    В этом руководстве мы покажем вам, как собрать ядро ​​Android в Windows 10 – да, мы по-прежнему будем использовать среду сборки Linux, но это будет подсистема Linux в Windows 10. Итак, если вы Windows 10 пользователей, заинтересованных в разработке для Android, внимательно следуйте нашему руководству.

    В этом руководстве мы специально узнаем, как для создания ядра для устройств ARM и MediaTek, добавления функций и базового обзора использования Git.

    Требования

    • Windows 10 x64 (с обновлением Fall Creator)

    Настройка среды Linux

    1. В Windows 10 перейдите выберите «Настройки»> «Обновление и безопасность»> «Для разработчиков»> включите режим разработчика.
    2. Теперь перейдите в «Панель управления»> «Программы»> «Включите Wi-Fi». ndows Features On или Off> включите подсистему Windows для Linux.
    3. Перезагрузите компьютер.
    4. Запустите подсистему Linux и позвольте ей пройти процесс загрузки. Установите пароль и не потеряйте его.
    5. Теперь перейдите в магазин приложений Windows и загрузите Ubuntu.
    6. Запустите Ubuntu на рабочем столе Windows 10, и он запросит имя пользователя и пароль.
    7. В Ubuntu запустите собственный терминал и введите следующую команду: apt-get update
    8. Это продолжит обновление всех репозиториев для приложения и зависимости.
    9. Далее в типе терминала: sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
    10. Чтобы проверить, все зависимости были установлены правильно, введите в терминале «gcc» (без кавычек).
    11. Если «gcc» уже установлен, вы должны увидеть «gcc: фатальная ошибка: нет входного файла»
    12. Теперь вы можете набрать make в терминале. Если «make» уже установлен, вы должны увидеть «make: *** цель не указана и make-файл не найден. стоп ».
    13. Затем введите« git », и если« git »уже установлен, вы должны увидеть несколько базовых команд git.
    14. Теперь нам нужны некоторые инструменты (есть несколько типов, включая GCC, Linaro и несколько пользовательских). Для некоторых устройств могут потребоваться разные наборы инструментов, например, не все ядра устройств будут загружаться или компилироваться с GCC.

    Для устройств ARM

    Мы будем использовать GCC 4.7 для этого.

    1. Откройте терминал Linux и введите: mkdir kernel
    2. Теперь введите: cd kernel
    3. (это не обязательно должно быть «ядро», это для простоты, вы можете называть его как хотите.)
    4. Теперь введите: git clone https://android.googlesource. com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

    Для устройств ARM 64

    Вам понадобится 64- компилятор битового ядра для устройств ARM 64, например aarch64.

    Получение исходных файлов для вашего устройства

    Это сложная часть, так как вам нужно найти репозиторий GitHub, в котором размещен исходный код вашего ядра. Вам, конечно, нужно будет поискать его, скорее всего, его можно найти на форумах XDA.

    Вот пример исходного кода ядра Git.

    В левом верхнем углу стороны вы должны увидеть «Branch: Completed by xxxx».

    Существуют разные версии ядра/проекта, обычно разделенные «Testing», «Beta», «Final Release» и т. д.

    Папки ядра обычно выглядят следующим образом:

    • /arch/arm/configs : содержит различные файлы конфигурации для устройства, такие как регуляторы и т. д.
    • /output/arch/arm/boot/: здесь будет храниться zimage.
    • : сценарий, который упростит процесс сборки.
    • /arm-cortex-linux -gnueabi-linaro_5.2-2015.11-2 : обычно это набор инструментов, помещенный в исходный код ядра, что упрощает поиск.

    Вы собираетесь необходимо загрузить исходный код ядра.

    Откройте терминал Linux и убедитесь, что вы находитесь в ядре ранее созданная папка (cd-ядро).

    Затем введите в терминале: «git clone« URL-адрес ядра github »-b« имя ветки »

    Например: «git clone https://github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW»

    Создание ядра

    Чтобы упростить задачу, вы можно перейти к нужному месту в файловом проводнике. Это должен быть/home/user ID/kernel (или как вы назвали папку ядра).

    Внутри вы должны увидеть две папки, для цепочки инструментов и исходного кода ядра. Войдите в папку с исходными кодами ядра.

    Для устройств ARM

    В терминале введите следующие команды:

     #!/Bin /bashexport ARCH = armexport CROSS_COMPILE = mkdir outputmake -C $ (pwd) O = output "имя defconfig и вариант, если необходимо" make -j4 -C $ (pwd) O = output 

    Вот обзор того, что делают эти команды, чтобы упростить эту задачу в будущем.

    • #!/bin/bash: Указывает, что сценарий запускается в команде оболочки.
    • export ARCH = arm: Определение типа архитектуры ядра (например, arm64 и т. Д.)
    • export CROSS_COMPILE = : найдите, где находится цепочка инструментов. Он должен соответствовать точному пути, и тире в конце действительно обязательно.
    • mkdir output: Это создает каталог для сохранения скомпилированного zimage
    • make -C $ (pwd) O = output : определение defconfig для управления компиляцией ядра.
    • make -j4 -C $ (pwd) O = output : когда начинается процесс сборки, -j # сообщает, как быстро пытаться скомпилировать. Обычно вы устанавливаете это число в соответствии с вашим процессором. Например, установка -j32 на бюджетном процессоре, вероятно, вызовет серьезную нестабильность..
    • cp output/arch/arm/boot/Image $ (pwd)/arch/arm/boot/zImage : это для перемещения изображения по второму пути .

    Другой пример:

     #!/bin/bashexport ARCH = armexport CROSS_COMPILE = $ (pwd)/arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi-mkdir  outputmake -C $ (pwd) O = вывод msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selinux_defconfigmake $ -j4 -C $ (pwd/boot/armage) O arch = armage output/load/pwd/armage pwd/armage output/armage output/armage output /pre> 

    Для устройств ARM 64

     #!/bin/bashexport ARCH = arm64export CROSS_COMPILE = "путь к вашей цепочке инструментов" (он должен заканчиваться чем-то вроде "nameofarch-something  - ") mkdir outputmake -C $ (pwd) O = output" имя defconfig и вариант, если необходимо "make -j4 -C $ (pwd) O = output 

    Для устройств Mediatek (MTK)

     #!/bin/bashexport CROSS_COMPILE = "путь к вашей цепочке инструментов" (он должен заканчиваться чем-то вроде "nameof  arch-something - ") export ARCH = arm ARCH_MTK_PLATFORM = make" имя defconfig и вариант, если необходимо "make -j4 

    Когда вы выполнили шаги, необходимые для вашей архитектуры ядра, вы можете ввести терминал: sudo bash build.sh

    Затем вы введете свой пароль пользователя, и начнется процесс компиляции.

    Это может занять некоторое время, но обычно не очень долго, компиляция ядра не похожа на компиляцию всего Android ROM. Это действительно зависит от ЦП - например, AMD Phenom X4 3,4 ГГц с 8 ГБ ОЗУ должна занимать около 10 минут для компиляции от начала до конца.

    По завершении он должен уведомить вас с помощью сообщение типа «zimage готово».

    Устройства ARM и ARM64

    Перейдите в «/Output/arch/arm/boot/», чтобы найти ваш zimage.

    Устройства Mediatek

    Перейдите в «/arch/arm/boot/», чтобы найти свой zimage.

    Не все сборки ядра приводят к файл Zimage, его иногда можно собрать как другие форматы изображений.

    Важно: если вы собираетесь компилировать снова, рекомендуется ввести команды make clean и make mrproper, прежде чем начинать снова скомпилировать процесс.

    Выполнение загрузки ядра

    Есть два варианта на ваш выбор.

    Вы можете использовать любое ядро метод (как определено пользователем XDA @ osm0sis в этом потоке XDA). Вы должны прочитать весь учебник, но краткое изложение шагов выглядит следующим образом:

    1. Поместите zImage в корень (dtb и/или dtbo также должны быть здесь для устройств, требующих пользовательские, каждый вернется к исходному, если не включен)
    2. Поместите все необходимые файлы ramdisk в/ramdisk и модули в/modules (с полным путем, например/modules/system/lib/modules)
    3. Поместите все необходимые файлы исправлений (обычно частичные файлы, которые идут с командами) в/patch
    4. Измените anykernel. sh, чтобы добавить имя вашего ядра, расположение загрузочного раздела, разрешения для включенных файлов ramdisk и использовать методы для любых необходимых модификаций ramdisk (при желании также поместите файлы баннеров и/или версии в корень, чтобы они отображались во время flash)
    5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

    Другой доступный метод - распаковка boot.img из того же ПЗУ (например, CM, TouchWiz, EMUI и т. д.) и той же версии Android. Затем вы бы поменяли Zimage. Опять же, это действительно сложный процесс, и вам следует прочитать точный учебник, но краткое изложение шагов таково:

    1. Распаковать.
    2. Либо используйте командную строку «unpackimg » или просто перетащите изображение. Это разделит образ и распакует виртуальный диск в подкаталог.
    3. Измените виртуальный диск по своему усмотрению.
    4. Пакетный сценарий repackimg не требует ввода и просто рекомбинирует ранее разделить zImage на недавно упакованный модифицированный ramdisk, используя всю информацию об исходном изображении (которая также была разделена и сохранена).
    5. Сценарий пакетной очистки сбрасывает папку в исходное состояние, удаляя каталоги split_img + ramdisk и любые новые упакованные RAM-диски или файлы изображений.

    Перед прошивкой ядра вы должны создать резервную копию вашего стандартного boot.img, а затем перепрограммировать ядро, чтобы проверить, позволяет ли оно ваша система Android для загрузки.

    Добавление функций в ядро ​​

    Добавление функций в ядро ​​- отличный способ оживить его. Есть много вещей, которые вы можете настроить, например регуляторы ЦП, планировщики ввода-вывода, разгон графического процессора, улучшения звука и т. Д.

    Здесь приведен пример добавления регулятора (этот регулятор имеет кодовое название Intellimm ).

    Мы видим в первых двух текстовых полях, что в «arch/arm/configs/» «msm8974_sec_defconfig» и «cm_msm8974_sec_defconfig» были изменены.

    Между строками 140 и 141 этого файла был добавлен этот текст: «CONFIG_CPU_FREQ_GOV_INTELLIMM = y»
    (Эта строка предназначена для включения Intellimm при компиляции ядра)

    То же Техника применяется к другим текстовым полям (что было добавлено и удалено, а также его местоположение)

    В зависимости от добавляемых вами функций большее или меньшее количество файлов может быть изменено, добавлено или удалено.

    Итак, чтобы подвести итог, коммит позволяет вам увидеть все внесенные изменения и все остальное!

    Общие советы и рекомендации

    Как для изменения имени и версии ядра:

    Простой метод:

    Отредактируйте эту строку i в вашем файле defconfig:

     "CONFIG_LOCALVERSION =" - "после - в вашем defconfig 

    Пример: CONFIG_LOCALVERSION =” - XenomTW-3.2.6 ″

    Дополнительные методы:

    Перейдите к Makefile в корневой папке исходного кода ядра..

    Добавьте следующие строки:

     CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

    НЕ изменяйте строки Version, PatchLevel, Подуровень или Экстраверсия.

    Альтернативный метод:

    Перейдите в scripts/mkcompile_h и добавьте эти строки:

     LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

    Решение проблем с PATH:

    Если вы столкнулись с ошибкой «Ваш путь правильный?», попробуйте это в терминале Linux:

     "export PATH =" pathtotoolchainlocation "/bin: $ PATH" 

    Доступ к вашим папкам Ubuntu из Windows 10

    Ваш путь к Ubuntu обычно должен быть:

    C: Users ”NAME” AppData Local Packages CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc LocalState rootfs home

    Но вам не следует редактировать файлы непосредственно из Windows, так как это обычно нарушает права доступа к ним - тогда вам нужно будет сбросить разрешения из терминала Linux.

    v>

    Источник