மூலத்திலிருந்து மீடியாடெக் ஆண்ட்ராய்டு கர்னலை உருவாக்குவது எப்படி



சிக்கல்களை அகற்ற எங்கள் கருவியை முயற்சிக்கவும்

பல ஆண்ட்ராய்டு பயனர்கள் தனிப்பயனாக்கப்பட்ட கர்னல்களை நிறுவுவதில் மகிழ்ச்சி அடைகிறார்கள், இது பலவிதமான செயல்திறன் மற்றும் பேட்டரி ஆயுளை மேம்படுத்தும் மாற்றங்களை வழங்க முடியும். ஆனால் நீங்கள் விரும்பும் கர்னலைக் கண்டுபிடிக்க முடியவில்லை அல்லது உங்கள் சாதனத்திற்கு எதுவும் கிடைக்கவில்லை என்றால், சில நேரங்களில் நீங்கள் சொந்தமாக உருவாக்க வேண்டும். இந்த வழிகாட்டி மீடியாடெக் சாதனங்களுக்கான மூலத்திலிருந்து ஒரு கர்னலை எவ்வாறு உருவாக்குவது என்பதில் கவனம் செலுத்தும்.



தயவுசெய்து எச்சரிக்கையாக இருங்கள் இந்த வழிகாட்டி புதியவர்களுக்கானது அல்ல, இது Android ROM களைத் தனிப்பயனாக்குவது, லினக்ஸ் டெர்மினல்களில் பணிபுரிவது மற்றும் ஒட்டுமொத்தமாக நாம் என்ன செய்கிறோம் என்பது குறித்த அறிவைப் பற்றிய புரிதல் உள்ளவர்களுக்கு மட்டுமே.



தேவைகள்:

  1. ஒரு லினக்ஸ் இயக்க முறைமை
  2. சில அடிப்படை சி அறிவு மற்றும் மேக்ஃபைல்களுடன் எவ்வாறு செயல்படுவது
  3. Android NDK

தொடங்க, நீங்கள் லினக்ஸிற்கான பின்வரும் தொகுப்புகளை பதிவிறக்கம் செய்ய வேண்டும்:



  • பைதான்
  • குனு மேக்
  • ஜே.டி.கே.
  • போ

sudo apt-get install git gnupg flex bison gperf build-அத்தியாவசிய ஜிப் சுருட்டை 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-அத்தியாவசிய ஜிப் சுருட்டை zlib1g-dev zlib1g-dev: i386 libc1-libb1 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 xsltproc6 lineline libreadread6 -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 libescs0. 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 நெறிமுறை (நெக்ஸஸ் ஒன்)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e12 ″, MODE = ”0600 ″, OWNER =” ”
பேரார்வம் குறித்த # ஃபாஸ்ட்பூட் நெறிமுறை (நெக்ஸஸ் ஒன்)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0bb4 ″, ATTR {idProduct} ==” 0fff ”, MODE =” 0600 ″, OWNER = ””
crespo / crespo4g (Nexus S) இல் # adb நெறிமுறை
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e22 ″, MODE = ”0600 ″, OWNER =” ”
க்ரெஸ்போ / க்ரெஸ்போ 4 ஜி (நெக்ஸஸ் எஸ்) இல் # ஃபாஸ்ட்பூட் நெறிமுறை
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e20 ″, MODE = ”0600 ″, OWNER =” ”
ஸ்டிங்ரே / விங்ரே (ஜூம்) இல் # adb நெறிமுறை
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”22b8 ″, ATTR {idProduct} ==” 70a9 ″, MODE = ”0600 ″, OWNER =” ”
ஸ்டிங்ரே / விங்ரே (ஜூம்) இல் # ஃபாஸ்ட்பூட் நெறிமுறை
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 708c ”, MODE =” 0600 ″, OWNER = ””
மாகுரோ / டோரோவில் # கேடிபி நெறிமுறை (கேலக்ஸி நெக்ஸஸ்)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”04e8 ″, ATTR {idProduct} ==” 6860 ″, MODE = ”0600 ″, OWNER =” ”
மாகுரோ / டோரோவில் # ஃபாஸ்ட்பூட் நெறிமுறை (கேலக்ஸி நெக்ஸஸ்)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e30 ″, MODE = ”0600 ″, OWNER =” ”
பாண்டாவில் # adb நெறிமுறை (பாண்டா போர்டு)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d101 ″, MODE = ”0600 ″, OWNER =” ”
பாண்டாவில் # adb நெறிமுறை (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” d002 ″, MODE = ”0600 ″, OWNER =” ”
பாண்டாவில் # ஃபாஸ்ட்பூட் நெறிமுறை (பாண்டா போர்டு)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d022 ″, MODE = ”0600 ″, OWNER =” ”
பாண்டாவில் # usbboot நெறிமுறை (பாண்டா போர்டு)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d00f ”, MODE =” 0600 ″, OWNER = ””
பாண்டாவில் # usbboot நெறிமுறை (PandaBoard ES)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”0451 ″, ATTR {idProduct} ==” d010 ″, MODE = ”0600 ″, OWNER =” ”
குரூப்பர் / டிலாபியாவில் # adb நெறிமுறை (நெக்ஸஸ் 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e42 ″, MODE = ”0600 ″, OWNER =” ”
குரூப்பர் / டிலாபியாவில் # ஃபாஸ்ட்பூட் நெறிமுறை (நெக்ஸஸ் 7)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4e40 ″, MODE = ”0600 ″, OWNER =” ”
மந்தாவில் # adb நெறிமுறை (நெக்ஸஸ் 10)
SUBSYSTEM == ”usb”, ATTR {idVendor} == ”18d1 ″, ATTR {idProduct} ==” 4ee2 ″, MODE = ”0600 ″, OWNER =” ”
மந்தாவில் # ஃபாஸ்ட்பூட் நெறிமுறை (நெக்ஸஸ் 10)
SUBSYSTEM == ”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: எந்த சாதன குறிப்பிட்ட கோப்புகளைப் பயன்படுத்த வேண்டும் என்று லினக்ஸிடம் கூறுகிறது.
MTK_ROOT_CUSTOM: மீடியாடெக் / தனிப்பயன் கோப்புறையின் கோப்பகத்தைக் குறிப்பிடுகிறது. இந்த மண் கர்னல் மூலத்தின் அதே கோப்பகத்தில் இருக்க வேண்டும் என்பதை நினைவில் கொள்க.
பாதை: உங்கள் கருவித்தொகுப்பு இயங்கக்கூடியவற்றை உங்கள் பாதையில் அமைக்கிறது.
CROSS_COMPILE: குறுக்கு தொகுப்பி என்பது தொகுப்பி இயங்கும் ஒரு தளத்தைத் தவிர வேறு ஒரு தளத்திற்கு இயங்கக்கூடிய குறியீட்டை உருவாக்கும் திறன் கொண்ட ஒரு தொகுப்பி ஆகும். கருவித்தொகுதி இந்த செயல்பாட்டை எளிதாக்குகிறது
ARCH = கை, ARM என்பது பிரிட்டிஷ் நிறுவனமான ARM ஹோல்டிங்ஸ் உருவாக்கிய குறைக்கப்பட்ட அறிவுறுத்தல் தொகுப்பு கணினி (RISC) கட்டமைப்பின் அடிப்படையில் கணினி செயலிகளுக்கான அறிவுறுத்தல் தொகுப்பு கட்டமைப்புகளின் குடும்பமாகும். அண்ட்ராய்டிலும் ARM பயன்படுத்தப்படுகிறது.

ஆகவே, முனையத்தில் ‘ஏற்றுமதி ARCH = கை’ என்று தட்டச்சு செய்யும் போது, ​​நாங்கள் அடிப்படையில் லினக்ஸிடம் ARM கட்டமைப்பிற்காக உருவாக்குகிறோம் என்று சொல்கிறோம்.

எனவே இப்போது கர்னலை உள்ளமைக்கத் தயாராக உள்ளோம். நீங்கள் மிகவும் கவனமாக இருக்க வேண்டும், ஏனென்றால் கர்னல் அடிப்படையில் உங்கள் தொலைபேசியின் கட்டுப்படுத்தியாகும். எனவே கவனமாகப் பின்தொடரவும்.


நீங்கள் பெரும்பாலும் அடிப்படை கட்டமைப்பை kernel_source / mediatek / config / devicename / autoconfig / kconfig / platform இல் காணலாம்.
இந்த அடிப்படை கட்டமைப்பை நாம் பயன்படுத்தலாம் மற்றும் வெவ்வேறு தேவைகளுடன் அதை உருவாக்கலாம், எடுத்துக்காட்டாக SELinux அனுமதிகள் இயக்கப்பட்டன அல்லது முடக்கப்பட்டுள்ளன. நீங்கள் எப்போதுமே புதிதாக ஒரு அடிப்படை கட்டமைப்பை உருவாக்க முடியும், ஆனால் நான் அதை பரிந்துரைக்கவில்லை.

எனவே இப்போது லினக்ஸ் முனையத்தில் தட்டச்சு செய்யலாம்:

cd kernel_source
cp mediatek / config / devicename / autoconfig / kconfig / platform .config
menuconfig ஐ உருவாக்கவும்

இது கர்னலில் அம்சங்களைச் சேர்க்க உங்களை அனுமதிக்கும் ஒரு வரைகலை இடைமுகத்தை உருவாக்கப் போகிறது. எடுத்துக்காட்டாக, நீங்கள் I / O அட்டவணை, CPU கவர்னர்கள், GPU அதிர்வெண் போன்றவற்றை மாற்றலாம்.
நீங்கள் விரும்பிய அமைப்புகளை மாற்றியமைத்ததும், கர்னலை தொகுக்க நீங்கள் தயாராக உள்ளீர்கள். எனவே லினக்ஸ் முனையத்தில் தட்டச்சு செய்க:
zImage செய்யுங்கள்

இது போன்ற ஒன்றைத் தர வேண்டும்:

arch / arm / boot / zImage தயார்

3 நிமிடங்கள் படித்தேன்