Как да изградим MediaTek Android Kernal от източника



Опитайте Нашия Инструмент За Премахване На Проблемите

Много потребители на Android се наслаждават на инсталирането на персонализирани ядра, които могат да предложат редица настройки за подобряване на производителността и живота на батерията. Но ако не можете да намерите ядро, което ви харесва, или нито едно не е налично за вашето устройство, понякога просто трябва да създадете свое собствено. Това ръководство ще се съсредоточи върху това как да изградите ядро ​​от източник за устройства Mediatek.



Моля, имайте предвид, че това ръководство не е за начинаещи, то е предназначено за хора с разбиране за персонализиране на Android ROM, работа в терминали на Linux и просто като цяло малко работни знания за това, което правим.



Изисквания:

  1. Операционна система Linux
  2. Някои основни знания за C и как да работите с Makefiles
  3. Android NDK

За начало ще трябва да изтеглите следните пакети за Linux:



  • Python
  • GNU Make
  • JDK
  • Отивам

sudo apt-get инсталиране git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev: i386 x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 libgl1-mesa-glx: i386 libgv1-mesa g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev: i386 git-core lzop ccache gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev: i386 libb32z lbc32-lbbbn-lbbb-lbcb-lbbv-lbcb-lvcb x11proto-core-dev libx11-dev: i386 libreadline6-dev: i386 lib32z-dev libgl1-mesa-glx: i386 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltvbreadline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz debs lib32bv debs lib32bv debs lib32bv debs lib32bv debs lib32bv debs 8-dev python gcc g ++ cpp gcc-4.8 g ++ - 4.8 && sudo ln -s / usr / lib / i386-linux-gnu / mesa / li bGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Сега отидете на etc / udev / rules.d / 51-android.rules:

# adb протокол за страстта (Nexus One)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, СОБСТВЕНИК”
# протокол за бързо стартиране на страстта (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, OWNER = ””
# adb протокол на crespo / crespo4g (Nexus S)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, СОБСТВЕНИК =” ”
# протокол за бързо стартиране на crespo / crespo4g (Nexus S)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, СОБСТВЕНИК”
# adb протокол за stingray / wingray (Xoom)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, СОБСТВЕНИК”
# протокол за бързо зареждане на stingray / wingray (Xoom)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, OWNER = ””
# adb протокол на maguro / toro (Galaxy Nexus)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, OWNER =” ”
# протокол за бързо зареждане на maguro / toro (Galaxy Nexus)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, СОБСТВЕНИК =” ”
# adb протокол на панда (PandaBoard)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, OWNER =” ”
# adb протокол на панда (PandaBoard ES)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, СОБСТВЕНИК =” ”
# протокол за бързо зареждане на панда (PandaBoard)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, OWNER =” ”
# usbboot протокол на panda (PandaBoard)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, OWNER = ””
# usbboot протокол на panda (PandaBoard ES)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, OWNER =” ”
# adb протокол за групер / тилапия (Nexus 7)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, СОБСТВЕНИК =” ”
# протокол за бързо стартиране на групер / тилапия (Nexus 7)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, СОБСТВЕНИК =” ”
# adb протокол на манта (Nexus 10)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, СОБСТВЕНИК =” ”
# протокол за бързо стартиране на манта (Nexus 10)
ПОДСИСТЕМА == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, OWNER =” ”



И в bash.rc:

износ USE_CCACHE = 1
Сега накрая:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Така че сега сме готови да настроим средата за изграждане. В терминала въведете:

експортиране TARGET_BUILD_VARIANT = потребител TARGET_PRODUCT = име на устройството MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Ето какво ще правят тези команди:

BUILD_VARIANT: указва за какво ще бъде изградено ядрото.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: казва на Linux кои конкретни устройства да се използват.
MTK_ROOT_CUSTOM: указва директорията на папката mediatek / custom. не забравяйте, че този мид също е в същата директория като източника на ядрото.
PATH: задава изпълнимите файлове на вашата верига от инструменти към вашия път.
CROSS_COMPILE: Кръстосаният компилатор е компилатор, способен да създаде изпълним код за платформа, различна от тази, на която работи компилаторът. Веригата инструменти улеснява тази функция
ARCH = arm, ARM е фамилия от архитектури на набори от инструкции за компютърни процесори, базирани на архитектура на изчисления с намален набор от инструкции (RISC), разработена от британската компания ARM Holdings. ARM се използва и в Android.

Така че, когато въведем „експортиране на ARCH = ръка“ в терминала, ние основно казваме на Linux, че изграждаме за ARM архитектурата.

Така че сега сме готови да започнем да конфигурираме ядрото. Трябва да бъдете изключително внимателни, защото ядрото е основно контролерът за вашия телефон. Затова просто следвайте внимателно.


Най-вероятно ще намерите основната конфигурация в kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform.
Можем да използваме тази основна конфигурация и да я изграждаме с различни изисквания, например разрешения за SELinux или разрешени. Винаги можете просто да създадете основна конфигурация от нулата, но наистина не я препоръчвам.

Така че сега нека напишем в терминала на Linux:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
направи menuconfig

Това ще създаде графичен интерфейс, който ще ви позволи да добавяте функции към ядрото. Например можете да промените I / O графика, CPU регулатори, GPU честота и т.н.
След като промените желаните настройки, сте готови да компилирате ядрото. Така че въведете в терминала на Linux:
направи zImage

И трябва да върне нещо като:

arch / arm / boot / zImage Ready

3 минути четене