Как да изградите Android Kernel на Windows 10

Appual's има няколко страхотни ръководства за разработка на Android, като например Как да изградим потребителски ROM от Android Open Source Project - но тези ръководства обикновено са насочени към чиста среда за изграждане на Linux.

В това ръководство ще ви покажем как да изградите Android ядро ​​на Windows 10 - да, все пак ще използваме среда за изграждане на Linux, но това ще бъде подсистема на Linux в Windows 10. Така че, ако сте Windows 10 потребител, който се интересува от разработване за Android, следвайте внимателно нашето ръководство.

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

Изисквания

  • Windows 10 x64 (с актуализация на Fall Creator)

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

  1. В Windows 10 отворете Настройки> Актуализация и защита> За разработчици> активирайте режима на програмисти.
  2. Сега отидете на Контролен панел> Програми> Включете или изключете функциите на Windows> активирайте подсистемата на 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-съществено ядро-пакет libncurses5-dev bzip2
  10. За да проверите дали всички зависимости са правилно инсталирани, въведете 'gcc' в терминала (без кавички).
  11. Ако „gcc“ вече е инсталиран, трябва да видите „gcc: фатална грешка: няма входен файл“
  12. Сега можете да напишете 'make' в терминала. Ако „make“ вече е инсталиран, трябва да видите „make: *** няма посочена цел и не е намерен makefile. Спри се."
  13. Следващ тип „git“ и ако iff „git“ вече е инсталиран, трябва да видите куп основни git команди.
  14. Сега имаме нужда от няколко вериги инструменти (има няколко вида, включително GCC, Linaro и шепа потребителски). Някои устройства могат да изискват различни вериги инструменти, например не всички ядра на устройството ще се зареждат или компилират с GCC.

За ARM устройства

За това ще използваме GCC 4.7.

  1. Отворете терминала на Linux и напишете: mkdir ядро
  2. Сега напишете: cd ядро
  3. (не е необходимо да бъде „ядро“, това е за простота, можете да го наречете каквото искате.)
  4. Сега напишете: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

За устройства ARM 64

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

Извличане на изходните файлове за вашето устройство

Това е трудна част, тъй като трябва да намерите репо за GitHub, което да хоства вашия източник на ядро. Разбира се, ще трябва да го потърсите, най-вероятно той може да бъде намерен на форумите на XDA.

Ето пример за източник на ядро ​​Git.

От горната лява страна трябва да видите „Клон: Завършен от xxxx“.

Има различни версии на ядро ​​/ проект, обикновено разделени с „Тестване“, „Бета“, „Окончателна версия“ и т.н.

Папките на ядрото обикновено са както следва:

  • / arch / arm / configs : Това съдържа различни конфигурационни файлове за устройството, като например регулатори и т.н.
  • / изход / арка / ръка / багажник / : Тук ще се съхранява зима.
  • build.sh : Скрипт, който ще опрости процеса на изграждане.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Обикновено това е инструментална верига, поставена в източника на ядрото, като по този начин е по-лесно да се намери.

Ще трябва да изтеглите вашия източник на ядро.

Отворете терминала на Linux и се уверете, че сте в папката на ядрото, което сте създали преди това (cd ядро).

След това напишете терминал: „git clone“ URL на github ядрото “-b„ име на клона “

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

Изграждане на ядрото

За да го улесните, можете да отворите до местоположението във файла Explorer. Това трябва да бъде / home / user ID / kernel (или каквото сте нарекли папката на ядрото).

Трябва да видите две папки вътре, за веригата с инструменти и източника на ядрото. Влезте в папката на източника на ядрото.

За ARM устройства

В терминал въведете следните команди:

 #! / bin / bash износ ARCH = експорт на ръка CROSS_COMPILE = mkdir изход make -C $ (pwd) O = изход "име на defconfig и вариант, ако е необходимо" make -j4 -C $ (pwd) O = изход 

Ето преглед на това, което правят тези команди, за да се улесни това в бъдеще.

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

Друг пример:

 #! / bin / bash износ ARCH = експортиране на ръка CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir изход направи -C $ (хората с увреждания) О = изход msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig sELINUX_DEFCONFIG = selinux_defconfig да -j4 -С $ (хората с увреждания) О = изход ср изход / свод / рамо / обувка / изображение $ (хората с увреждания) / свод / рамо / обувка / zImage 

За устройства ARM 64

 #! / bin / bash export ARCH = arm64 експортиране CROSS_COMPILE = "път към вашата инструментална верига" (трябва да завърши с нещо като "nameofarch-something-") mkdir изход make -C $ (pwd) O = output "име на defconfig и вариант, ако е необходимо "направи -j4 -C $ (pwd) O = изход 

За устройства Mediatek (MTK)

 #! / bin / bash export CROSS_COMPILE = "път към вашата инструментална верига" (трябва да завърши с нещо като "nameofarch-something-") export ARCH = arm ARCH_MTK_PLATFORM = make "име на defconfig и вариант, ако е необходимо" make -j4 

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

След това ще въведете потребителската си парола и процесът на съставяне ще започне.

Може да отнеме известно време, но обикновено не много дълго, компилирането на ядро ​​не е като компилирането на цял Android ROM. Това наистина зависи от процесора - например AMD Phenom X4 3.4GHz с 8GB RAM трябва да отнеме около 10 минути, за да се компилира от началото до края.

Когато приключи, той трябва да ви уведоми със съобщение като „zimage е готов“.

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

Отидете на „/ изход / арка / ръка / обувка /“, за да намерите вашето зима.

Устройства Mediatek

Отидете на „/ арка / ръка / обувка /“, за да намерите зима.

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

Важно: Ако ще компилирате отново, се препоръчва да въведете командите да изчистите и да направите mrproper, преди да започнете процеса на компилиране отново.

Изработка на ядрото на ядрото

Има две възможности, които можете да изберете.

Можете или да използвате метода anykernel (както е дефиниран от XDA потребител @ osm0sis в тази нишка XDA). Трябва да прочетете целия урок, но обобщение на стъпките е следното:

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

Другият метод, който имате на разположение, е разопаковането на boot.img от същия ROM (като CM, TouchWiz, EMUI и т.н.) и същата версия на Android. След това бихте разменили Zimage. Отново, това е наистина сложен процес и трябва да прочетете точния урок, но обобщение на стъпките е:

  1. Разархивирайте.
  2. Или използвайте командния ред „unpackimg“, или просто плъзнете и пуснете изображението. Това ще раздели изображението и ще разопакова рамковия диск в поддиректория.
  3. Променете рамковия диск както искате.
  4. Пакетният скрипт на repackimg не изисква никакво въвеждане и просто рекомбинира предишно разделения zImage с току-що пакетирания модифициран ramdisk, като се използва цялата оригиналната информация за изображението (която също беше разделена и записана).
  5. Пакетният скрипт за изчистване възстановява папката до първоначалното й състояние, премахвайки директории split_img + ramdisk и всички нови пакетирани рамков диск или файлове с изображения.

Преди да разбъркате ядрото си, трябва да създадете резервно копие на своя състав boot.img и след това да флаш ядрото си, за да видите дали позволява на вашата Android система да се зарежда.

Добавяне на функции към ядрото ви

Добавянето на функции към вашето ядро ​​е чудесен начин да го подправите. Има много неща, които можете да настроите, като например централни процесори, IO планировщици, овърклок на графичния процесор, аудио подобрения и т.н.

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

В първите 2 текстови полета можем да видим, че в „arch / arm / configs“ ”„ msm8974_sec_defconfig ”и„ cm_msm8974_sec_defconfig ”са променени.

Между редовете 140 и 141 на тези файлове е добавен този текст: „CONFIG_CPU_FREQ_GOV_INTELLIMM = y“

(Този ред е за активиране на Intellimm, когато компилирате ядрото си)

Същата техника се прилага и за другите текстови полета (какво е добавено и изтрито и това е местоположението)

В зависимост от функциите, които добавяте, повече или по-малко файлове могат да бъдат променяни, добавяни или изтривани.

Така че да обобщим, един ангажимент нека да видим всички направени промени и всичко останало!

Общи съвети и трикове

Как да промените името и версията на ядрото:

Простият метод:

Редактирайте този ред във файла на defconfig:

 "CONFIG_LOCALVERSION =" - "след - във вашата defconfig 

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

Разширените методи:

Отворете Makefile в основната папка на вашия източник на ядрото.

Добавете тези редове:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

НЕ променяйте линиите Версия, PatchLevel, Sublevel или Extraversion.

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

Отидете на скриптове / mkcompile_h и добавете тези редове:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

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

Ако срещнете грешката „Вашият път ли е правилен?“, Опитайте това в терминала на Linux:

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

Достъп до вашите папки на Ubuntu от Windows 10

Вашият път към Ubuntu обикновено трябва да бъде:

C: \ Потребители “NAME” \ AppData \ Local \ пакети \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

Но не трябва да редактирате файлове директно от Windows, тъй като това обикновено нарушава разрешенията за тях - тогава ще трябва да нулирате разрешенията от Linux терминал.

Интересни Статии