Hogyan készítsük el a MediaTek Android Kernalt a forrásból



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Sok Android-felhasználó élvezi a testreszabott kernelek telepítését, amelyek számos teljesítményt és akkumulátor-élettartamot javító módosítást kínálnak. De ha nem talál egy tetszőleges kernelt, vagy egyik sem érhető el az eszközéhez, néha csak fel kell építenie a sajátját. Ez az útmutató arra összpontosít, hogy miként lehet kernelt forrásból készíteni a Mediatek eszközökhöz.



Felhívjuk figyelmét, hogy ez az útmutató nem újoncoknak szól, hanem olyan embereknek szól, akik értenek az Android ROM-ok testreszabásához, a Linux terminálokban dolgoznak, és összességében csak egy kis munkaismerettel rendelkeznek arról, hogy mit csinálunk.



Követelmények:

  1. Linux operációs rendszer
  2. Néhány alapvető C tudás és a Makefiles használatának módja
  3. Android NDK

A kezdéshez le kell töltenie a következő csomagokat Linux rendszerre:



  • Piton
  • GNU Make
  • JDK
  • Megy

sudo apt-get install 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 libgl1-mesa-dev g ++ - multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev: i386 git-core lzop ccache gnupg flexibölény bison gperf build-essential zip curl zlib1g-dev zlib1g-dev: i386 libc6-dev lib32n21 lib5n lib libn1 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 xsltproc readline-common libreadline6-dev libreadline -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libeswsdk-lib libwddk-lib libwddd-lib libwdds-dev libashwsdk-dev libashwsdk-dev libashwsdk-dev libashwsd0-dev pp libwxdd-dev libgwdds-dev pp libfxdd-nl lib libwddd-ns lib libwddd-ns lib libwddd-ns lib libwddd-ns lib libwreads0-dev pp libwdddd-s lib squwfsdk-ds lib libwreads0k 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

Most lépjen az etc / udev / rules.d / 51-android.rules oldalra:

# ADB protokoll a szenvedélyről (Nexus One)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e12', MODE = '0600', TULAJDONOS = ''
# gyorsindítási protokoll a szenvedélyen (Nexus One)
ALRENDSZER == 'usb', ATTR {idVendor} == '0bb4', ATTR {idProduct} == '0fff', MODE = '0600', TULAJDONOS = ''
# adb protokoll a crespo / crespo4g készüléken (Nexus S)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e22', MODE = '0600', TULAJDONOS = ''
# gyorsboot protokoll a crespo / crespo4g készüléken (Nexus S)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e20', MODE = '0600', TULAJDONOS = ''
# adb protokoll a stingray / wingray (Xoom)
ALRENDSZER == 'usb', ATTR {idVendor} == '22b8', ATTR {idProduct} == '70a9', MODE = '0600', TULAJDONOS = ''
# fastboot protokoll a stingray / wingray-en (Xoom)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '708c', MODE = '0600', TULAJDONOS = ''
# adb protokoll a maguro / toron (Galaxy Nexus)
ALRENDSZER == 'usb', ATTR {idVendor} == '04e8', ATTR {idProduct} == '6860', MODE = '0600', TULAJDONOS = ''
# gyorsboot protokoll a maguro / toro-n (Galaxy Nexus)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e30', MODE = '0600', TULAJDONOS = ''
# adb protokoll a pandán (PandaBoard)
ALRENDSZER == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd101', MODE = '0600', TULAJDONOS = ''
# adb protokoll a pandán (PandaBoard ES)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == 'd002', MODE = '0600', TULAJDONOS = ''
# fastboot protokoll a pandán (PandaBoard)
ALRENDSZER == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd022', MODE = '0600', TULAJDONOS = ''
# usbboot protokoll a pandán (PandaBoard)
ALRENDSZER == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd00f', MODE = '0600', TULAJDONOS = ''
# usbboot protokoll a pandán (PandaBoard ES)
ALRENDSZER == 'usb', ATTR {idVendor} == '0451', ATTR {idProduct} == 'd010', MODE = '0600', TULAJDONOS = ''
# adb protokoll a csoportosítón / tilápián (Nexus 7)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e42', MODE = '0600', TULAJDONOS = ''
# fastboot protokoll a csoportosítón / tilápia (Nexus 7)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4e40', MODE = '0600', TULAJDONOS = ''
# adb protokoll a mantán (Nexus 10)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4ee2', MODE = '0600', TULAJDONOS = ''
# gyorsboot protokoll a mantán (Nexus 10)
ALRENDSZER == 'usb', ATTR {idVendor} == '18d1', ATTR {idProduct} == '4ee0', MODE = '0600', TULAJDONOS = ''



És a bash.rc-ben:

export USE_CCACHE = 1
Most végre:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Tehát most készen állunk az építési környezet beállítására. Írja be a terminálba:

export TARGET_BUILD_VARIANT = felhasználó TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
A következő parancsok fognak történni:

BUILD_VARIANT: meghatározza, hogy mire készüljön a kernel.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: megmondja a Linuxnak, hogy melyik eszközspecifikus fájlokat használja.
MTK_ROOT_CUSTOM: meghatározza a mediatek / custom mappa könyvtárát. ne feledje, hogy ez a mide ugyanabban a könyvtárban legyen, mint a kernel forrása is.
PATH: az eszközlánc futtatható fájljait az útvonalához állítja.
CROSS_COMPILE: A keresztfordító olyan fordító, amely képes futtatható kód létrehozására egy olyan platformhoz, amely nem a fordító fut. Az eszközlánc megkönnyíti ezt a funkciót
ARCH = arm, az ARM az utasításkészlet-architektúrák családja a számítógépes processzorok számára, amely az ARM Holdings brit vállalat által kifejlesztett, csökkentett utasításkészlet-számítási (RISC) architektúrán alapul. Az ARM-et Android-ban is használják.

Tehát amikor beírjuk a terminálba az „export ARCH = arm” kifejezést, akkor alapvetően azt mondjuk a Linuxnak, hogy az ARM architektúrára építünk.

Tehát most készen állunk a kernel konfigurálására. Rendkívül óvatosnak kell lennie, mert a rendszermag alapvetően a telefon vezérlője. Tehát csak kövesse figyelmesen.


Valószínűleg az alapkonfigurációt a kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform fájlban találja meg.
Használhatjuk ezt az alapkonfigurációt, és különböző követelményekkel hozhatjuk létre, például engedélyezhetjük vagy letilthatjuk a SELinux engedélyeket. Mindig csak a nulláról lehetne építeni egy alapkonfigurát, de én tényleg nem ajánlom.

Tehát most írjuk be a Linux terminált:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
menukonfigot készíteni

Ez egy grafikus felületet hoz létre, amely lehetővé teszi, hogy funkciókat adjon hozzá a kernelhez. Például módosíthatja az I / O ütemezést, a CPU vezérlőket, a GPU frekvenciáját stb.
Miután módosította a kívánt beállításokat, készen áll a kernel fordítására. Tehát írja be a Linux terminált:
hogy zImage

Valamit vissza kell adnia:

arch / arm / boot / zImage Ready

3 perc olvasás