உங்கள் Android கர்னலை சமீபத்திய லினக்ஸ் நிலைக்கு எவ்வாறு புதுப்பிப்பது

கர்னலின் ஒவ்வொரு பகுதியையும் உருவாக்குகிறது, உபுண்டு அல்லது புதினா போன்ற மிகவும் பொதுவான லினக்ஸ் டிஸ்ட்ரோக்கள் கூட இல்லை. இந்த திருத்தங்களை நீங்கள் எடுக்கக்கூடாது என்று இது அர்த்தப்படுத்துவதில்லை உள்ளன டிரைவர்களுக்கான திருத்தங்கள் செய் ஓடு. உதாரணமாக கை / ஆர்ம் 64 மற்றும் எக்ஸ்ட் 4 ஐ எடுத்துக் கொள்ளுங்கள், அவை முறையே மிகவும் பொதுவான ஆண்ட்ராய்டு கட்டமைப்பு மற்றும் கோப்பு முறைமை. 4.4 இல், 4.4.78 (சமீபத்திய ஓரியோ CAF குறிச்சொல்லின் பதிப்பு) முதல் 4.4.121 வரை (சமீபத்திய அப்ஸ்ட்ரீம் குறிச்சொல்), இவை அந்த அமைப்புகளின் செயல்களுக்கு பின்வரும் எண்கள்:



நாதன் @ ஃப்ளாஷ்பாக்ஸ் ~ / கர்னல்கள் / லினக்ஸ்-நிலையான (மாஸ்டர்) $ கிட் பதிவு - வடிவமைப்பு =% h v4.4.78..v4.4.121 | wc -l2285 நாதன் @ ஃப்ளாஷ்பாக்ஸ் ~ / கர்னல்கள் / லினக்ஸ்-நிலையான (மாஸ்டர்) $ git log --format =% h v4.4.78..v4.4.121 arch / arm | wc -l58 நாதன் @ ஃப்ளாஷ்பாக்ஸ் ~ / கர்னல்கள் / லினக்ஸ்-நிலையான (மாஸ்டர்) $ git log --format =% h v4.4.78..v4.4.121 arch / arm64 | wc -l22 நாதன் @ ஃப்ளாஷ்பாக்ஸ் ~ / கர்னல்கள் / லினக்ஸ்-நிலையான (மாஸ்டர்) $ git log --format =% h v4.4.78..v4.4.121 fs / ext4 | wc -l18

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

லினக்ஸ் நிலையான கர்னலை Android கர்னலில் இணைப்பது எப்படி

உங்கள் Android சாதனம் எந்த கர்னல் பதிப்பை இயக்குகிறது என்பதை முதலில் நீங்கள் கண்டுபிடிக்க வேண்டும்.

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

கர்னல்வெர்ஷன் செய்யுங்கள்

இது நீங்கள் இயக்கிய பதிப்பைத் திருப்பித் தரும். உங்களுக்கு தேவையான கிளையை கண்டுபிடிக்க முதல் இரண்டு எண்கள் பயன்படுத்தப்படும் (எ.கா. எந்த 4.4 கர்னலுக்கும் லினக்ஸ் -4.4.y) மற்றும் இணைப்பதன் மூலம் நீங்கள் தொடங்க வேண்டிய பதிப்பைத் தீர்மானிக்க கடைசி எண் பயன்படுத்தப்படும் (எ.கா. நீங்கள் 4.4 இல் இருந்தால் .21, நீங்கள் அடுத்து 4.4.22 ஐ இணைப்பீர்கள்).

Kernel.org இலிருந்து சமீபத்திய கர்னல் மூலத்தைப் பற்றிக் கொள்ளுங்கள்

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

git remote add linux- நிலையான https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.gitgit லினக்ஸ்-நிலையான பெறவும்

நீங்கள் முழு கர்னலையும் ஒன்றிணைக்க விரும்புகிறீர்களா அல்லது செர்ரி-கமிட்டுகளைத் தேர்வுசெய்ய விரும்புகிறீர்களா என்று முடிவு செய்யுங்கள்

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

குறிப்பு: உங்கள் கர்னல் மூலமானது ஒரு தார்பால் வடிவத்தில் இருந்தால், நீங்கள் பெரும்பாலும் செர்ரி-பிக் செய்ய வேண்டியிருக்கும், இல்லையெனில் நீங்கள் ஆயிரக்கணக்கான கோப்பு மோதல்களைப் பெறுவீர்கள், ஏனென்றால் ஜிட் வரலாற்றை அப்ஸ்ட்ரீமை அடிப்படையாகக் கொண்டது, OEM அல்லது CAF மாறிவிட்டது அல்ல. 4 வது படிக்குச் செல்லவும்.

செர்ரி எடுப்பது:

நன்மை:

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

பாதகம்:

  • ஒவ்வொரு கமிட்டையும் தனித்தனியாக எடுக்க வேண்டியிருப்பதால் அதிக நேரம் எடுக்கும்.
  • கமிட் என்பது முதல் பார்வையில் அப்ஸ்ட்ரீமில் இருந்து வந்ததா என்று சொல்வது இன்னும் கடினம்

போ

நன்மை :

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

பாதகம்:

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

ஆரம்பத்தில் ஏதேனும் சிக்கல் மோதல்களைக் கண்டுபிடிக்க செர்ரி-பிக் செய்ய பரிந்துரைக்கிறேன், ஒன்றிணைத்தல், பின்னர் சிக்கலைத் திருப்புதல் பின்னர் புதுப்பித்தல் எளிதானது (புதுப்பித்தலுக்குப் பிறகு ஒன்றிணைத்தல் விரைவாக இருப்பதால்).

உங்கள் மூலத்தில் ஒரு நேரத்தில் ஒரு பதிப்பைச் சேர்க்கவும்

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

செர்ரி எடுப்பது

வடிவம்:

git cherry-pick ..

உதாரணமாக:

git cherry-pick v3.10.73..v3.10.74

போ

வடிவம்:

ஒன்றிணைந்து செல்லுங்கள்

உதாரணமாக:

git merge v3.10.74

# குறிப்பான்களை அகற்றுவதன் மூலம் ஒன்றிணைக்கும் கமிட்டிகளில் உள்ள மோதல்களைக் கண்காணிக்க பரிந்துரைக்கிறேன்.

மோதல்களை எவ்வாறு தீர்ப்பது

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

நீங்கள் ஒன்றிணைந்தால், மோதலுக்கு என்ன காரணம் இருக்கிறது என்பதைக் கண்டுபிடிக்கவும். இதை நீங்கள் இரண்டு வழிகளில் செய்யலாம்:

  1. git log -p v $ (கர்னல்வெர்ஷன் செய்யுங்கள்) .. உங்கள் தற்போதைய பதிப்பிற்கும் சமீபத்தியவற்றிற்கும் இடையிலான மாற்றங்களை அப்ஸ்ட்ரீமில் இருந்து பெற. -P கொடி ஒவ்வொரு கமிட்டிலும் செய்யப்பட்ட மாற்றங்களை உங்களுக்கு வழங்கும், எனவே நீங்கள் பார்க்க முடியும்.
  2. பகுதியில் உள்ள ஒவ்வொரு கமிட்டின் ஹாஷ்களையும் பெற கோப்பில் கிட் பழியை இயக்கவும். கமிட்டர் மெயின்லைன் / ஸ்டேபிள், கூகிள் அல்லது கோட்அரோராவிலிருந்து வந்ததா என்பதைப் பார்க்க நீங்கள் கிட் ஷோ-ஃபார்மேட் = ஃபுல்லரை இயக்கலாம்.
  • உங்களிடம் ஏற்கனவே உறுதி இருந்தால் கண்டுபிடிக்கவும். கூகிள் அல்லது சிஏஎஃப் போன்ற சில விற்பனையாளர்கள் டர்ட்டி COW பிழைத்திருத்தம் போன்ற முக்கியமான பிழைகள் குறித்து அப்ஸ்ட்ரீமைப் பார்க்க முயற்சிப்பார்கள், மேலும் அவர்களின் பின்னிணைப்புகள் அப்ஸ்ட்ரீமுடன் முரண்படக்கூடும். நீங்கள் git log –grep = ”” ஐ இயக்கலாம், அது எதையாவது தருகிறதா என்று பாருங்கள். அவ்வாறு செய்தால், நீங்கள் உறுதிப்பாட்டைத் தவிர்க்கலாம் (ஜிட் மீட்டமைப்பைப் பயன்படுத்தி செர்ரி எடுப்பது -ஹார்ட் && கிட் செர்ரி-பிக்-தொடருங்கள்) அல்லது மோதல்களைப் புறக்கணிக்கலாம் (அகற்றவும்<<<<<>>>>>).
  • தெளிவுபடுத்தும் ஒரு பேக்போர்ட் இருந்ததா என்பதைக் கண்டுபிடிக்கவும். கூகிள் மற்றும் CAF ஆகியவை நிலையானதாக இல்லாத சில திட்டுக்களை பின்வாங்க விரும்புகின்றன. கூகிள் பேக்போர்ட்டைத் தேர்வுசெய்யும் சில திட்டுக்கள் இல்லாதிருப்பதற்கு மெயின்லைன் தீர்மானத்தின் தீர்மானத்தை நிலையானதாக மாற்ற வேண்டும். கிட் ஷோவை இயக்குவதன் மூலம் மெயின்லைன் கமிட்டைப் பார்க்கலாம் (நிலையான கமிட்டின் கமிட் செய்தியில் மெயின்லைன் ஹாஷ் கிடைக்கும்). ஒரு பேக்போர்ட் அதைக் குழப்பினால், நீங்கள் மாற்றங்களை நிராகரிக்கலாம் அல்லது மெயின்லைன் பதிப்பைப் பயன்படுத்தலாம் (இதுதான் நீங்கள் வழக்கமாக செய்ய வேண்டியிருக்கும்).
  • கமிட் என்ன செய்ய முயற்சிக்கிறது என்பதைப் படித்து, சிக்கல் ஏற்கனவே சரி செய்யப்பட்டுள்ளதா என்று பாருங்கள். சில நேரங்களில் CAF அப்ஸ்ட்ரீமில் இருந்து சுயாதீனமாக ஒரு பிழையை சரிசெய்யக்கூடும், அதாவது அப்ஸ்ட்ரீமுக்கான அவற்றின் திருத்தத்தை மேலெழுதலாம் அல்லது மேலே உள்ளதைப் போல அதை நிராகரிக்கலாம்.

இல்லையெனில், இது ஒரு CAF / Google / OEM சேர்த்தலின் விளைவாக இருக்கலாம், இந்த விஷயத்தில் நீங்கள் சில விஷயங்களை மாற்ற வேண்டும்.

இங்கே லினக்ஸ்-நிலையான kernel.org களஞ்சியத்தின் கண்ணாடி GitHub இல், இது கமிட் பட்டியல்களைப் பார்ப்பதற்கு எளிதானது மற்றும் மோதல் தீர்வுக்கு வேறுபடுகிறது. முதலில் கமிட் பட்டியல் பார்வைக்குச் சென்று சிக்கலைக் கண்டறிவது அசல் வேறுபாட்டை உங்களுடையதை ஒப்பிட்டுப் பார்க்கவும்.

எடுத்துக்காட்டு URL: https://github.com/nathanchance/linux-stable/commits/linux-3.10.y/arch/arm64/mm/mmu.c

கட்டளை வரி வழியாகவும் இதைச் செய்யலாம்:

git log .. git show

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

git diff HEAD git diff v $ (kernelversion ஐ உருவாக்குங்கள்) .. $ (git tag --sort = -taggerdate -l v $ (kernelversion | cut -d. -f 1,2) * | head -n1)

மீண்டும் இயக்கவும்

Git க்கு rerere (மறுபயன்பாடு பதிவுசெய்யப்பட்ட தீர்மானத்தை குறிக்கிறது) என்று ஒரு அம்சம் உள்ளது, அதாவது இது ஒரு மோதலைக் கண்டறிந்தால், நீங்கள் அதை எவ்வாறு தீர்த்தீர்கள் என்பதை இது பதிவு செய்யும், பின்னர் நீங்கள் அதை மீண்டும் பயன்படுத்தலாம். ஒன்றிணைத்தல் மற்றும் செர்ரி எடுப்பது ஆகிய இரண்டையும் கொண்ட நாள்பட்ட மறுசீரமைப்பாளர்களுக்கு இது மிகவும் உதவியாக இருக்கும், ஏனெனில் நீங்கள் கிட் சேர்க்கை இயக்க வேண்டும். && git - அப்ஸ்ட்ரீம் கொண்டுவருவதை மீண்டும் செய்யும் போது தொடரவும், ஏனெனில் மோதல் நீங்கள் முன்பு அதை எவ்வாறு தீர்த்தீர்கள் என்பது தீர்க்கப்படும்.

உங்கள் கர்னல் ரெப்போவில் பின்வரும் கட்டளையை இயக்குவதன் மூலம் இதை இயக்கலாம்:

git config rerere.enabled true

ஒரு கம்பைலர் அல்லது இயக்க நேர பிழையில் இயங்கும் போது எப்படி கிட் பிஸ் செய்வது

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

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

  1. பிளவுபடுத்தத் தொடங்கு: git bisect start
  2. தற்போதைய திருத்தத்தை மோசமானது என்று லேபிளிடுங்கள்: git bisect bad
  3. ஒரு திருத்தத்தை நல்லது என்று லேபிளிடுங்கள்: git bisect good
  4. புதிய திருத்தத்துடன் உருவாக்கவும்
  5. முடிவின் அடிப்படையில் (சிக்கல் இருந்தால் அல்லது இல்லை), git ஐச் சொல்லுங்கள்: git bisect good or git bisect bad
  6. சிக்கல் ஏற்படும் வரை 4-5 படிகளை துவைக்க மற்றும் மீண்டும் செய்யவும்!
  7. சிக்கலை மாற்றவும் அல்லது சரிசெய்யவும்.

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

அப்ஸ்ட்ரீம் புதுப்பிப்புகளை ஸ்குவாஷ் செய்ய வேண்டாம்

நிர்வகிக்க “தூய்மையானது” மற்றும் “எளிதானது” என்பதால் நிறைய புதிய டெவலப்பர்கள் இதைச் செய்ய ஆசைப்படுகிறார்கள். சில காரணங்களுக்காக இது பயங்கரமானது:

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

சரியான நேரத்தில் புதுப்பிப்புகளுக்கு லினக்ஸ் கர்னல் அஞ்சல் பட்டியலுக்கு குழுசேரவும்

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

9 நிமிடங்கள் படித்தது