Kuinka rakentaa MediaTek Android Kernal lähteestä



Kokeile Instrumenttia Ongelmien Poistamiseksi

Monet Android-käyttäjät nauttivat mukautettujen ytimien asentamisesta, mikä voi tarjota erilaisia ​​suorituskykyä ja akun käyttöikää parantavia säätöjä. Mutta jos et löydä haluamaasi ydintä tai mikään ei ole käytettävissä laitteellesi, joskus sinun tarvitsee vain rakentaa oma. Tässä oppaassa keskitytään siihen, miten ydin rakennetaan lähteestä Mediatek-laitteille.



Varoitetaan, että tämä opas ei ole tarkoitettu aloittelijoille, se on tarkoitettu ihmisille, joilla on tietoa Android-ROM-levyjen mukauttamisesta, työskentelystä Linux-päätelaitteissa ja kaiken kaikkiaan vähän työtuntemuksesta mitä teemme.



Vaatimukset:

  1. Linux-käyttöjärjestelmä
  2. Joitakin C-perustietoja ja kuinka työskennellä Makefilesin kanssa
  3. Android NDK

Aluksi sinun on ladattava seuraavat Linux-paketit:



  • Python
  • GNU-merkki
  • JDK
  • Mennä

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 flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev: i386 libc6-lib libcn1 lib libcn1 lib libcn lib Lib 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 libesws 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

Siirry nyt kansioon etc / udev / rules.d / 51-android.rules:

# adb-protokolla intohimosta (Nexus One)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla intohimossa (Nexus One)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, TILA =” 0600 ″, OMISTAJA = ””
# adb-protokolla laitteessa crespo / crespo4g (Nexus S)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla laitteessa crespo / crespo4g (Nexus S)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, OMISTAJA =” ”
# adb-protokolla on stingray / wingray (Xoom)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla on stingray / wingray (Xoom)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, TILA =” 0600 ″, OMISTAJA = ””
# adb-protokolla magurolla / torolla (Galaxy Nexus)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla maguro / torolla (Galaxy Nexus)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, OMISTAJA =” ”
# adb-protokolla pandassa (PandaBoard)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, OMISTAJA =” ”
# adb-protokolla pandalla (PandaBoard ES)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla pandassa (PandaBoard)
ALAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, OMISTAJA =” ”
# usbboot-protokolla pandassa (PandaBoard)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, TILA =” 0600 ″, OMISTAJA = ””
# usbboot-protokolla pandassa (PandaBoard ES)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, OMISTAJA =” ”
# adb-protokolla ryhmittelyssä / tilapiassa (Nexus 7)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla ryhmittelyssä / tilapiassa (Nexus 7)
ALAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, OMISTAJA =” ”
# adb-protokolla mantassa (Nexus 10)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, OMISTAJA =” ”
# pikakäynnistysprotokolla mantassa (Nexus 10)
OSAJÄRJESTELMÄ == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, OMISTAJA =” ”



Ja bash.rc: ssä:

vie USE_CCACHE = 1
Lopuksi:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Joten nyt olemme valmiita luomaan rakennusympäristön. Kirjoita päätelaitteeseen:

vienti TARGET_BUILD_VARIANT = käyttäjä TARGET_PRODUCT = devicename MTK_ROOT_CUSTOM = .. / mediatek / custom / TARGET_KERNEL_V
Tässä mitä nämä komennot aikovat tehdä:

BUILD_VARIANT: määrittää, mihin ydin rakennetaan.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: kertoo Linuxille mitä laitekohtaisia ​​tiedostoja käyttää.
MTK_ROOT_CUSTOM: määrittää mediatek / mukautetun kansion hakemiston. muista, että tämä mide on samassa hakemistossa myös ytimen lähteen kanssa.
PATH: asettaa työkaluketjun suoritettavat tiedostot polulle.
CROSS_COMPILE: Ristikääntäjä on kääntäjä, joka pystyy luomaan suoritettavan koodin muulle alustalle kuin sille, jolla kääntäjä on käynnissä. Työkaluketju helpottaa tätä toimintoa
ARCH = arm, ARM on tietokoneprosessoreiden komentojoukkoarkkitehtuurien perhe, joka perustuu brittiläisen ARM Holdings -yhtiön kehittämään RISC-arkkitehtuuriin. ARM: ää käytetään myös Androidissa.

Joten kun kirjoitamme terminaaliin ”export ARCH = arm”, sanomme periaatteessa Linuxille, että rakennamme ARM-arkkitehtuuria.

Joten nyt olemme valmiita aloittamaan ytimen määritykset. Sinun on oltava erittäin varovainen, koska ydin on periaatteessa puhelimesi ohjain. Joten seuraa vain huolellisesti.


Löydät todennäköisesti peruskokoonpanon kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform -alustasta.
Voimme käyttää tätä peruskokoonpanoa ja rakentaa sen erilaisilla vaatimuksilla, esimerkiksi SELinux-käyttöoikeudet käyttöön tai pois käytöstä. Voit aina rakentaa perusmäärityksen vain tyhjästä, mutta en todellakaan suosittele sitä.

Joten nyt kirjoitetaan Linux-päätelaitteeseen:

CD-ytimen lähde
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
tee menukonfig

Tämä luo graafisen käyttöliittymän, jonka avulla voit lisätä ominaisuuksia ytimeen. Voit esimerkiksi säätää I / O-aikataulua, suorittimen ohjaimia, GPU-taajuutta jne.
Kun olet muokannut haluamiasi asetuksia, olet valmis kääntämään ytimen. Kirjoita siis Linux-päätelaitteeseen:
tee zImage

Ja sen pitäisi palauttaa jotain:

arch / arm / boot / zKuva on valmis

3 minuuttia luettu