Kaynaktan MediaTek Android Kernal Nasıl Oluşturulur



Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin

Birçok Android kullanıcısı, bir dizi performans ve pil ömrünü artıran ince ayarlar sunabilen özelleştirilmiş çekirdekler yüklemekten hoşlanır. Ancak beğendiğiniz bir çekirdek bulamazsanız veya cihazınız için hiçbiri yoksa, bazen sadece kendi kernelinizi oluşturmanız gerekir. Bu kılavuz, Mediatek cihazları için kaynaktan bir çekirdeğin nasıl oluşturulacağına odaklanacaktır.



Lütfen bu kılavuzun yeni başlayanlar için olmadığını unutmayın; Android ROM'ları özelleştirme, Linux terminallerinde çalışma ve genel olarak ne yaptığımız hakkında biraz çalışma bilgisi olan kişiler için hazırlanmıştır.



Gereksinimler:

  1. Bir Linux işletim sistemi
  2. Bazı temel C bilgileri ve Makefiles ile nasıl çalışılacağı
  3. Android NDK

Başlamak için, Linux için aşağıdaki paketleri indirmeniz gerekecek:



  • Python
  • GNU Yap
  • JDK
  • Git

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 dev5.0 libc6-dev lib321b32ncurses 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 xsltprocline-libread6 -gplv2-dev libncurses5-dev lib32readline5 lib32readline6 libreadline-dev libreadline6-dev: i386 libreadline6: i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev libushcrashto-dev libsd0t1.2-dev libesx. 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

Şimdi etc / udev / rules.d / 51-android.rules'e gidin:

Tutkuyla ilgili adb protokolü (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, SAHİBİ =” ”
# tutku üzerine fastboot protokolü (Nexus One)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, SAHİBİ = ””
# crespo / crespo4g (Nexus S) üzerinde adb protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, SAHİBİ =” ”
# crespo / crespo4g (Nexus S) üzerinde fastboot protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, SAHİBİ =” ”
# stingray / wingray (Xoom) üzerinde adb protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, SAHİBİ =” ”
# stingray / wingray (Xoom) üzerinde fastboot protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, SAHİBİ = ””
# maguro / toro'da adb protokolü (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, SAHİBİ =” ”
# maguro / toro'da fastboot protokolü (Galaxy Nexus)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, SAHİBİ =” ”
# panda (PandaBoard) üzerinde adb protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, SAHİBİ =” ”
# panda üzerinde adb protokolü (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, SAHİBİ =” ”
# pandada fastboot protokolü (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, SAHİBİ =” ”
# panda üzerinde usbboot protokolü (PandaBoard)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, SAHİBİ = ””
# panda üzerinde usbboot protokolü (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, SAHİBİ =” ”
gruplayıcı / tilapia (Nexus 7) üzerinde # adb protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, SAHİBİ =” ”
Grouper / tilapia'da (Nexus 7) # fastboot protokolü
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, SAHİBİ =” ”
# manta üzerinde adb protokolü (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, SAHİBİ =” ”
# manta'da fastboot protokolü (Nexus 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee0 ″, MODE = ”0600 ″, SAHİBİ =” ”



Ve bash.rc'de:

USE_CCACHE = 1 dışa aktar
Şimdi nihayet:

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Artık derleme ortamını kurmaya hazırız. Terminalde şunu yazın:

dışa aktar TARGET_BUILD_VARIANT = kullanıcı TARGET_PRODUCT = cihaz adı MTK_ROOT_CUSTOM = .. / mediatek / özel / TARGET_KERNEL_V
İşte bu komutların yapacakları:

BUILD_VARIANT: çekirdeğin ne için inşa edileceğini belirtir.
TARGET_PRODUCT / TARGET_KERNEL_PRODUCT: Linux'a hangi cihaza özel dosyaların kullanılacağını söyler.
MTK_ROOT_CUSTOM: mediatek / özel klasörün dizinini belirtir. bu mide'nin çekirdek kaynağı ile aynı dizinde olmasını da unutmayın.
PATH: araç zinciri çalıştırılabilir dosyalarınızı yolunuza ayarlar.
CROSS_COMPILE: Çapraz derleyici, derleyicinin üzerinde çalıştığı platformdan farklı bir platform için çalıştırılabilir kod oluşturabilen bir derleyicidir. Alet zinciri bu işlevi kolaylaştırır
ARCH = arm, ARM, İngiliz şirketi ARM Holdings tarafından geliştirilen azaltılmış komut seti hesaplama (RISC) mimarisine dayanan bilgisayar işlemcileri için bir komut seti mimarileri ailesidir. ARM ayrıca Android'de de kullanılmaktadır.

Dolayısıyla, terminale 'ihracat ARCH = arm' yazdığımızda, temel olarak Linux'a ARM mimarisi için geliştirdiğimizi söylüyoruz.

Artık çekirdeği yapılandırmaya başlamaya hazırız. Çok dikkatli olmalısınız, çünkü çekirdek temelde telefonunuzun denetleyicisidir. Bu yüzden dikkatlice takip edin.


Temel yapılandırmayı büyük olasılıkla kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform'da bulacaksınız.
Bu temel yapılandırmayı kullanabilir ve farklı gereksinimlerle oluşturabiliriz, örneğin SELinux izinleri etkin veya devre dışı. Her zaman sıfırdan bir temel yapılandırma oluşturabilirsiniz, ancak bunu gerçekten önermiyorum.

Şimdi Linux terminaline yazalım:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
menuconfig yap

Bu, çekirdeğe özellikler eklemenizi sağlayacak grafiksel bir arayüz oluşturacaktır. Örneğin, G / Ç Zamanlamasını, CPU Yöneticilerini, GPU Frekansını vb. İnce ayar yapabilirsiniz.
İstediğiniz ayarları değiştirdikten sonra, çekirdeği derlemeye hazırsınız. Öyleyse Linux terminaline yazın:
zImage yapmak

Ve şöyle bir şey döndürmelidir:

arch / arm / boot / zImage Hazır

3 dakika okundu