Как да изградите 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 среда
- В Windows 10 отворете Настройки> Актуализация и защита> За разработчици> активирайте режима на програмисти.
- Сега отидете на Контролен панел> Програми> Включете или изключете функциите на Windows> активирайте подсистемата на Windows за Linux.
- Рестартирайте вашия компютър.
- Стартирайте подсистемата Linux и я оставете да премине през процеса на изтегляне. Задайте парола и не я губете.
- Сега отидете в магазина за приложения на Windows и изтеглете Ubuntu.
- Стартирайте Ubuntu на работния плот на Windows 10 и той ще изисква потребителско име и парола.
- В Ubuntu стартирайте родния терминал и напишете следната команда: apt-get update
- Това ще продължи, за да актуализирате всички репозиции за приложения и зависимости.
- Следващ в типа на терминала: sudo apt-get install -y build-съществено ядро-пакет libncurses5-dev bzip2
- За да проверите дали всички зависимости са правилно инсталирани, въведете 'gcc' в терминала (без кавички).
- Ако „gcc“ вече е инсталиран, трябва да видите „gcc: фатална грешка: няма входен файл“
- Сега можете да напишете 'make' в терминала. Ако „make“ вече е инсталиран, трябва да видите „make: *** няма посочена цел и не е намерен makefile. Спри се."
- Следващ тип „git“ и ако iff „git“ вече е инсталиран, трябва да видите куп основни git команди.
- Сега имаме нужда от няколко вериги инструменти (има няколко вида, включително GCC, Linaro и шепа потребителски). Някои устройства могат да изискват различни вериги инструменти, например не всички ядра на устройството ще се зареждат или компилират с GCC.
За ARM устройства
За това ще използваме GCC 4.7.
- Отворете терминала на Linux и напишете: mkdir ядро
- Сега напишете: cd ядро
- (не е необходимо да бъде „ядро“, това е за простота, можете да го наречете каквото искате.)
- Сега напишете: 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). Трябва да прочетете целия урок, но обобщение на стъпките е следното:
- Поставете zImage в корен (dtb и / или dtbo също трябва да отидете тук за устройства, които изискват персонализирани такива, всяко ще се върне към оригинала, ако не е включено)
- Поставете всички необходими ramdisk файлове в / ramdisk и модули в / модули (с пълния път като / модули / система / lib / модули)
- Поставете всички необходими файлове за кръпка (обикновено частични файлове, които вървят с команди) в / patch
- Променете anykernel.sh, за да добавите името на вашето ядро, местоположението на стартиращия дял, разрешенията за включени ramdisk файлове и използвайте методи за всички необходими модификации на ramdisk (по желание, също така поставете файлове с банери и / или версии в корена, за да бъдат показани по време на флаш)
- `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * заместител`
Другият метод, който имате на разположение, е разопаковането на boot.img от същия ROM (като CM, TouchWiz, EMUI и т.н.) и същата версия на Android. След това бихте разменили Zimage. Отново, това е наистина сложен процес и трябва да прочетете точния урок, но обобщение на стъпките е:
- Разархивирайте.
- Или използвайте командния ред „unpackimg“, или просто плъзнете и пуснете изображението. Това ще раздели изображението и ще разопакова рамковия диск в поддиректория.
- Променете рамковия диск както искате.
- Пакетният скрипт на repackimg не изисква никакво въвеждане и просто рекомбинира предишно разделения zImage с току-що пакетирания модифициран ramdisk, като се използва цялата оригиналната информация за изображението (която също беше разделена и записана).
- Пакетният скрипт за изчистване възстановява папката до първоначалното й състояние, премахвайки директории 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 терминал.