మీ Android కెర్నల్‌ను తాజా లైనక్స్ స్టేబుల్‌కు ఎలా అప్‌డేట్ చేయాలి

కెర్నల్ యొక్క ప్రతి భాగాన్ని నిర్మిస్తుంది, ఉబుంటు లేదా మింట్ వంటి అత్యంత సాధారణ లైనక్స్ డిస్ట్రోలు కూడా కాదు. ఈ పరిష్కారాలను మీరు తీసుకోకూడదని దీని అర్థం కాదు ఉన్నాయి మీరు డ్రైవర్ల కోసం పరిష్కారాలు DO రన్. ఉదాహరణకు ఆర్మ్ / ఆర్మ్ 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 పరికరం ఏ కెర్నల్ వెర్షన్‌ను నడుపుతుందో గుర్తించాలి.

ఇది చాలా చిన్నదిగా, మీరు ఎక్కడ ప్రారంభించాలో తెలుసుకోవడం అవసరం. మీ కెర్నల్ ట్రీలో కింది ఆదేశాన్ని అమలు చేయండి:

కెర్నల్వర్షన్ చేయండి

ఇది మీరు ఉన్న సంస్కరణను తిరిగి ఇస్తుంది. మీకు అవసరమైన శాఖను గుర్తించడానికి మొదటి రెండు సంఖ్యలు ఉపయోగించబడతాయి (ఉదా. ఏదైనా 4.4 కెర్నల్‌కు లినక్స్ -4.4.ఐ) మరియు విలీనంతో మీరు ఏ వెర్షన్‌ను ప్రారంభించాలో నిర్ణయించడానికి చివరి సంఖ్య ఉపయోగించబడుతుంది (ఉదా. మీరు 4.4 లో ఉంటే .21, మీరు తదుపరి 4.4.22 విలీనం చేస్తారు).

Kernel.org నుండి తాజా కెర్నల్ మూలాన్ని పొందండి

kernel.org లో తాజా కెర్నల్ మూలాన్ని కలిగి ఉంది లైనక్స్-స్టేబుల్ రిపోజిటరీ . ఆ పేజీ దిగువన, మూడు పొందే లింకులు ఉంటాయి. నా అనుభవంలో, గూగుల్ యొక్క అద్దం వేగంగా ఉంటుంది, కానీ మీ ఫలితాలు మారవచ్చు. కింది ఆదేశాలను అమలు చేయండి:

git రిమోట్ యాడ్ లినక్స్-స్టేబుల్ https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.gitgit లినక్స్-స్టేబుల్ పొందండి

మీరు మొత్తం కెర్నల్‌ను విలీనం చేయాలనుకుంటున్నారా లేదా చెర్రీ-పిక్ కమిట్స్ కావాలా అని నిర్ణయించుకోండి

తరువాత, మీరు కమిట్స్ లేదా చెర్రీ-పిక్ విలీనం చేయాలనుకుంటే మీరు ఎంచుకోవాలి. ప్రతి యొక్క లాభాలు మరియు నష్టాలు ఇక్కడ ఉన్నాయి మరియు మీరు వాటిని చేయాలనుకున్నప్పుడు.

గమనిక: మీ కెర్నల్ మూలం టార్బాల్ రూపంలో ఉంటే, మీరు చాలావరకు చెర్రీ-పిక్ చేయవలసి ఉంటుంది, లేకపోతే మీరు వేలాది ఫైల్ వైరుధ్యాలను పొందుతారు, ఎందుకంటే గిట్ చరిత్రను పూర్తిగా అప్‌స్ట్రీమ్ ఆధారంగా జనాభా కలిగి ఉంది, OEM లేదా CAF మారినది కాదు. 4 వ దశకు దాటవేయి.

చెర్రీ-పికింగ్:

ప్రోస్:

  • సంఘర్షణ సమస్యకు కారణమవుతుందో మీకు ఖచ్చితంగా తెలుసు కాబట్టి విభేదాలను పరిష్కరించడం సులభం.
  • ప్రతి కమిట్ దాని స్వంతంగా ఉన్నందున తిరిగి మార్చడం సులభం.
  • సమస్యల్లోకి వెళితే విభజించడం సులభం

కాన్స్:

  • ప్రతి నిబద్ధతను వ్యక్తిగతంగా ఎంచుకోవలసి ఉన్నందున ఎక్కువ సమయం పడుతుంది.
  • మొదటి చూపులో కమిట్ అప్‌స్ట్రీమ్ నుండి ఉందో లేదో చెప్పడం కొంచెం కష్టం

వెళ్ళండి

ప్రోస్ :

  • శుభ్రమైన పాచెస్ అన్నీ విలీనం కావడానికి మీరు వేచి ఉండనవసరం లేదు.
  • అప్‌స్ట్రీమ్ నుండి కమిట్ అయినప్పుడు చూడటం చాలా సులభం, ఎందుకంటే మీరు కట్టుబడి ఉండరు, అప్‌స్ట్రీమ్ నిర్వహణ ఉంటుంది.

కాన్స్:

  • విభేదాలను పరిష్కరించడం కొంచెం కష్టంగా ఉంటుంది, ఎందుకంటే గిట్ లాగ్ / గిట్ నిందను ఉపయోగించి సంఘర్షణకు కారణమయ్యే కట్టుబాట్లను మీరు చూడాలి, ఇది మీకు నేరుగా చెప్పదు.
  • మీరు విలీనాన్ని తిరిగి ఇవ్వలేనందున రీబేస్ చేయడం కష్టం, ఇది చెర్రీ-పిక్ ని ఒక్కొక్కటిగా ఎంచుకుంటుంది. అయినప్పటికీ, మీరు తరచుగా రీబేస్ చేయకూడదు, బదులుగా గిట్ రివర్ట్ మరియు గిట్ విలీనాన్ని ఉపయోగించి సాధ్యమైన చోట.

ప్రారంభంలో ఏదైనా సమస్య వైరుధ్యాలను గుర్తించడానికి చెర్రీ-పిక్ చేయమని నేను సిఫారసు చేస్తాను, విలీనం చేయడం, ఆపై సమస్యను తిరిగి మార్చడం తరువాత అప్‌డేట్ చేయడం సులభం (తాజాగా ఉన్న తర్వాత విలీనం వేగంగా ఉంటుంది).

మీ మూలానికి కమిట్‌లను జోడించండి, ఒకేసారి ఒక సంస్కరణ

ఈ ప్రక్రియ యొక్క అతి ముఖ్యమైన భాగం ఒక సమయంలో ఒక సంస్కరణ. మీ అప్‌స్ట్రీమ్ సిరీస్‌లో సమస్య పాచ్ ఉండవచ్చు, ఇది బూట్ చేయడంలో సమస్య కలిగిస్తుంది లేదా ధ్వని లేదా ఛార్జింగ్ వంటి వాటిని విచ్ఛిన్నం చేస్తుంది (చిట్కాలు మరియు ఉపాయాల విభాగంలో వివరించబడింది). ఈ కారణంగా పెరుగుతున్న సంస్కరణ మార్పులను చేయడం చాలా ముఖ్యం, కొన్ని సంస్కరణల కోసం 2000 కమిట్‌ల కంటే 50 కమిట్‌లలో సమస్యను కనుగొనడం సులభం. సమస్య కమిట్స్ మరియు సంఘర్షణలన్నీ మీకు తెలిసిన తర్వాత మాత్రమే పూర్తి విలీనం చేయాలని నేను సిఫారసు చేస్తాను.

చెర్రీ-పికింగ్

ఆకృతి:

git చెర్రీ-పిక్ ..

ఉదాహరణ:

git చెర్రీ-పిక్ v3.10.73..v3.10.74

వెళ్ళండి

ఆకృతి:

విలీనం వెళ్ళండి

ఉదాహరణ:

git విలీనం v3.10.74

# గుర్తులను తొలగించడం ద్వారా విలీన కమిట్లలోని విభేదాలను ట్రాక్ చేయాలని నేను సిఫార్సు చేస్తున్నాను.

విభేదాలను ఎలా పరిష్కరించాలి

ప్రతి సంఘర్షణను పరిష్కరించడానికి మేము దశల వారీ మార్గదర్శిని ఇవ్వలేము, ఎందుకంటే ఇందులో సి భాషపై మంచి జ్ఞానం ఉంటుంది, అయితే ఇక్కడ కొన్ని సూచనలు ఉన్నాయి.

మీరు విలీనం చేస్తుంటే, సంఘర్షణకు కారణమయ్యే కట్టుబాట్లను గుర్తించండి. మీరు దీన్ని రెండు మార్గాలలో ఒకటి చేయవచ్చు:

  1. git log -p v $ (కెర్నల్‌వర్షన్ చేయండి) .. మీ ప్రస్తుత సంస్కరణకు మరియు అప్‌స్ట్రీమ్ నుండి తాజా వాటికి మధ్య మార్పులను పొందడానికి. -P ఫ్లాగ్ ప్రతి కమిట్ చేసిన మార్పులను మీకు ఇస్తుంది కాబట్టి మీరు చూడగలరు.
  2. ఈ ప్రాంతంలోని ప్రతి కమిట్ యొక్క హాష్‌లను పొందడానికి ఫైల్‌పై గిట్ నిందను అమలు చేయండి. మీరు కమిట్ మెయిన్లైన్ / స్టేబుల్, గూగుల్ లేదా కోడ్అరోరా నుండి వచ్చారో లేదో తెలుసుకోవడానికి మీరు గిట్ షో –ఫార్మాట్ = ఫుల్లర్ ను అమలు చేయవచ్చు.
  • మీకు ఇప్పటికే నిబద్ధత ఉంటే గుర్తించండి. గూగుల్ లేదా సిఎఎఫ్ వంటి కొంతమంది విక్రేతలు డర్టీ COW పరిష్కారము వంటి క్లిష్టమైన దోషాల కోసం అప్‌స్ట్రీమ్‌ను చూడటానికి ప్రయత్నిస్తారు మరియు వారి బ్యాక్‌పోర్ట్‌లు అప్‌స్ట్రీమ్‌తో విభేదించవచ్చు. మీరు git log –grep = ”” ను అమలు చేయవచ్చు మరియు అది ఏదైనా తిరిగి ఇస్తుందో లేదో చూడండి. అది జరిగితే, మీరు నిబద్ధతను దాటవేయవచ్చు (గిట్ రీసెట్ ఉపయోగించి చెర్రీ-పికింగ్ ఉంటే -హార్డ్ && గిట్ చెర్రీ-పిక్-కొనసాగించండి) లేదా విభేదాలను విస్మరించండి (తొలగించండి<<<<<>>>>>).
  • రిజల్యూషన్‌ను గందరగోళపరిచే బ్యాక్‌పోర్ట్ ఉందా అని గుర్తించండి. Google మరియు CAF స్థిరంగా లేని కొన్ని పాచెస్‌ను బ్యాక్‌పోర్ట్ చేయాలనుకుంటాయి. గూగుల్ తరచుగా బ్యాక్‌పోర్ట్‌ను ఎంచుకునే కొన్ని పాచెస్ లేకపోవటానికి మెయిన్‌లైన్ యొక్క తీర్మానాన్ని స్థిరంగా మార్చడం అవసరం. మీరు గిట్ షోను అమలు చేయడం ద్వారా మెయిన్లైన్ కమిట్ చూడవచ్చు (స్థిరమైన కమిట్ యొక్క కమిట్ సందేశంలో మెయిన్లైన్ హాష్ అందుబాటులో ఉంటుంది). బ్యాక్‌పోర్ట్ గందరగోళంలో ఉంటే, మీరు మార్పులను విస్మరించవచ్చు లేదా మీరు మెయిన్‌లైన్ సంస్కరణను ఉపయోగించవచ్చు (ఇది మీరు సాధారణంగా చేయవలసి ఉంటుంది).
  • కమిట్ ఏమి చేయడానికి ప్రయత్నిస్తుందో చదవండి మరియు సమస్య ఇప్పటికే పరిష్కరించబడిందో లేదో చూడండి. కొన్నిసార్లు CAF అప్‌స్ట్రీమ్ నుండి స్వతంత్రంగా ఒక బగ్‌ను పరిష్కరించవచ్చు, అనగా మీరు అప్‌స్ట్రీమ్ కోసం వారి పరిష్కారాన్ని ఓవర్రైట్ చేయవచ్చు లేదా పైన చెప్పినట్లుగా విస్మరించవచ్చు.

లేకపోతే, ఇది కేవలం CAF / Google / OEM చేరిక యొక్క ఫలితం కావచ్చు, ఈ సందర్భంలో మీరు చుట్టూ కొన్ని విషయాలను షఫుల్ చేయాలి.

ఇక్కడ లినక్స్-స్టేబుల్ కెర్నల్.ఆర్గ్ రిపోజిటరీ యొక్క అద్దం 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 $ (కెర్నల్‌వర్షన్ చేయండి) .. $ (git tag --sort = -taggerdate -l v $ (కెర్నల్‌వర్షన్ చేయండి | cut -d. -f 1,2) * | head -n1)

మళ్లీ ప్రారంభించండి

Git లో రిరెరే (పునర్వినియోగ రికార్డెడ్ రిజల్యూషన్ అని అర్ధం) అనే లక్షణం ఉంది, అనగా ఇది సంఘర్షణను గుర్తించినప్పుడు, మీరు దాన్ని ఎలా పరిష్కరించారో అది రికార్డ్ చేస్తుంది, కాబట్టి మీరు దానిని తిరిగి ఉపయోగించుకోవచ్చు. విలీనం మరియు చెర్రీ-పికింగ్ రెండింటినీ కలిగి ఉన్న దీర్ఘకాలిక రీబేసర్‌లకు ఇది ప్రత్యేకంగా సహాయపడుతుంది ఎందుకంటే మీరు గిట్ యాడ్‌ను అమలు చేయాలి. && git - అప్‌స్ట్రీమ్ తీసుకురావడం పునరావృతం చేసేటప్పుడు కొనసాగించండి, ఎందుకంటే మీరు ఇంతకు ముందు దాన్ని ఎలా పరిష్కరించారో వివాదం పరిష్కరించబడుతుంది.

మీ కెర్నల్ రెపోలో కింది ఆదేశాన్ని అమలు చేయడం ద్వారా దీన్ని ప్రారంభించవచ్చు:

git config rerere.enabled true

కంపైలర్ లేదా రన్‌టైమ్ లోపంలో నడుస్తున్నప్పుడు ఎలా విడదీయాలి

మీరు గణనీయమైన సంఖ్యలో కమిట్‌లను జోడిస్తున్నందున, మీరు కంపైలర్ లేదా రన్‌టైమ్ లోపాన్ని పరిచయం చేయడం చాలా సాధ్యమే. ఇప్పుడే వదిలివేయడానికి బదులుగా, మీరు సమస్య యొక్క మూల కారణాన్ని గుర్తించడానికి git యొక్క అంతర్నిర్మిత ద్విపద సాధనాన్ని ఉపయోగించవచ్చు! ఆదర్శవంతంగా, మీరు ప్రతి కెర్నల్ సంస్కరణను జోడించినప్పుడు దాన్ని నిర్మించి, మెరుస్తూ ఉంటారు, కాబట్టి అవసరమైతే ద్విపదకు తక్కువ సమయం పడుతుంది, కానీ మీరు ఎటువంటి సమస్యలు లేకుండా 5000 కమిట్‌లను విడదీయవచ్చు.

Git bisect ఏమి చేస్తుంది, సమస్య ఉన్న చోట నుండి అది లేని చోటికి, ఆపై కమిట్ పరిధిని సగానికి తగ్గించడం ప్రారంభించండి, నిర్మించడానికి మరియు పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు ఇది మంచిదా కాదా అని తెలియజేయండి . ఇది మీ సమస్యకు కారణమయ్యే నిబద్ధతను ఉమ్మివేసే వరకు ఇది కొనసాగుతుంది. ఆ సమయంలో, మీరు దాన్ని పరిష్కరించవచ్చు లేదా తిరిగి మార్చవచ్చు.

  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. సమస్యను మార్చండి లేదా పరిష్కరించండి.

గమనిక: విలీనాలు తాత్కాలికంగా జిట్ రీబేస్ -ఐని అమలు చేయవలసి ఉంటుంది, సరైన విభజన కోసం మీ శాఖకు అన్ని పాచెస్‌ను వర్తింపజేయాలి, ఎందుకంటే విలీనాలతో విభజిస్తే తరచుగా అప్‌స్ట్రీమ్ కమిట్‌లలోకి చెక్అవుట్ అవుతుంది, అంటే మీకు ఆండ్రాయిడ్ నిర్దిష్ట కమిట్‌లు ఏవీ లేవు. అభ్యర్థనపై నేను దీనిపై మరింత లోతుగా వెళ్ళగలను కాని నన్ను నమ్మండి, అది అవసరం. మీరు సమస్యను గుర్తించిన తర్వాత, మీరు దానిని విలీనంలోకి మార్చవచ్చు లేదా తిరిగి మార్చవచ్చు.

అప్‌స్ట్రీమ్ నవీకరణలను స్క్వాష్ చేయవద్దు

క్రొత్త డెవలపర్లు దీన్ని నిర్వహించడానికి 'క్లీనర్' మరియు 'సులభం' అయినందున దీన్ని చేయటానికి శోదించబడతారు. కొన్ని కారణాల వల్ల ఇది భయంకరమైనది:

  • రచయిత హక్కు పోయింది. ఇతర డెవలపర్‌లకు వారి పని కోసం క్రెడిట్ ఇవ్వడం అన్యాయం.
  • విభజించడం అసాధ్యం. మీరు వరుస కమిట్‌లను స్క్వాష్ చేస్తే మరియు ఆ శ్రేణిలో ఏదో ఒక సమస్య ఉంటే, స్క్వాష్‌లో సమస్యకు కారణమేమిటో చెప్పడం అసాధ్యం.
  • భవిష్యత్ చెర్రీ-పిక్స్ కష్టం. మీరు స్క్వాష్డ్ సిరీస్‌తో తిరిగి మార్చాల్సిన అవసరం ఉంటే, సంఘర్షణ ఎక్కడ నుండి వస్తుందో చెప్పడం కష్టం / అసాధ్యం.

సకాలంలో నవీకరణల కోసం Linux కెర్నల్ మెయిలింగ్ జాబితాకు సభ్యత్వాన్ని పొందండి

అప్‌స్ట్రీమ్ నవీకరణ ఉన్నప్పుడల్లా తెలియజేయడానికి, సభ్యత్వాన్ని పొందండి లైనక్స్-కెర్నల్-అనౌన్స్ జాబితా . క్రొత్త కెర్నల్ విడుదలైన ప్రతిసారీ ఇమెయిల్ పొందడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది, కాబట్టి మీరు వీలైనంత త్వరగా నవీకరించవచ్చు మరియు నెట్టవచ్చు.

9 నిమిషాలు చదవండి