Як побудувати ядро ​​Android на 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-basic ядро-пакет 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 : Тут містяться різні конфігураційні файли для пристрою, такі як регулятори тощо.
  • / вихід / арка / рука / завантаження / : Тут зберігатиметься zimage.
  • 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"

Побудова ядра

Щоб зробити це простіше, ви можете перейти до місця в файловому провіднику. Це має бути / home / user ID / ядро ​​(або те, що ви назвали папкою ядра).

Ви повинні побачити дві папки всередині ланцюжка інструментів та джерела ядра. Перейдіть до папки джерела ядра.

Для пристроїв ARM

У терміналі введіть такі команди:

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

Ось огляд того, що роблять ці команди, щоб полегшити це в майбутньому.

  • #! / bin / bash: Показує запуск сценарію в командній оболонці
  • export ARCH = arm: визначення типу архітектури ядра (наприклад, arm64 тощо)
  • export CROSS_COMPILE = : Знайдіть, де знаходиться ланцюжок інструментів. Він повинен відповідати точному шляху, і тире зрештою дійсно є обов’язковим.
  • Вихід mkdir: Це створює каталог для збереження складеного зображення
  • make -C $ (pwd) O = вихід : визначення defconfig для компіляції ядра.
  • make -j4 -C $ (pwd) O = вихід : Коли процес будівництва починається, -j # повідомляє йому, як швидко спробувати і компілювати. Зазвичай ви встановлюєте це число відповідно до свого процесора. Наприклад, встановлення на -j32 на бюджетному процесорі, ймовірно, спричинить значну нестабільність.
  • cp output / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Це для переміщення зображення на другий шлях.

Ще один приклад:

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

Для пристроїв ARM 64

 #! / bin / bash export ARCH = arm64 export CROSS_COMPILE = "шлях до вашої ланцюжка інструментів" (він повинен закінчуватися чимось на зразок "nameofarch-something-") mkdir output make -C $ (pwd) O = output "ім'я defconfig і варіант, якщо потрібно "make -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, 4 ГГц з 8 ГБ оперативної пам’яті потрібно близько 10 хвилин, щоб скласти від початку до кінця.

Коли вона закінчиться, вона повинна повідомити вас повідомленням типу "zimage is ready".

Пристрої ARM та ARM64

Перейдіть до розділу «/ вихід / арка / рука / завантаження /», щоб знайти своє зображення.

Пристрої Mediatek

Перейдіть до "/ arch / arm / boot /", щоб знайти свою фотографію.

Не всі побудови ядра призведуть до файлу 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 з того самого ПЗУ (наприклад, CM, TouchWiz, EMUI тощо) та тієї ж версії Android. Тоді ви б поміняли місцями Zimage. Знову ж таки, це дійсно складний процес, і ви повинні прочитати точний підручник, але короткий підсумок кроків:

  1. Розпакуйте.
  2. Або скористайтеся командним рядком “unpackimg”, або просто перетягніть зображення. Це розділить зображення і розпакує рамбіск до підкаталогу.
  3. Змініть рамний диск, як вам подобається.
  4. Пакетний скрипт repackimg не вимагає введення даних і просто рекомбінує раніше розбитий zImage з нещодавно упакованим модифікованим ramdisk, використовуючи всю вихідну інформацію зображення (яка також була розділена і збережена).
  5. Пакетний сценарій очищення скидає папку до її початкового стану, видаляючи каталоги split_img + ramdisk та будь-які нові упаковані файли ramdisk або зображення.

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

Додавання функцій до вашого ядра

Додавання функцій до ядра - це прекрасний спосіб приправити його. Ви можете налаштувати багато речей, наприклад, керуючі процесорами, планувальники вводу-виводу, розгону графічного процесора, покращення звуку тощо.

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

У перших двох текстових полях ми бачимо, що в "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.

Цікаві Статті