اپنے Android کارنل کو تازہ ترین لینکس مستحکم پر کیسے اپ ڈیٹ کریں

دانا کا ہر ایک حصہ بناتا ہے ، یہاں تک کہ عام لینکس بھی اوبنٹو یا ٹکسال کی طرح ڈسٹروس نہیں کرتا ہے۔ اس کا مطلب یہ نہیں ہے کہ آپ کو یہ اصلاحات نہیں کرنی چاہئیں کیونکہ وہاں موجود ہیں ہیں ڈرائیوروں کے ل fix آپ کی اصلاحات کیا رن. مثال کے طور پر بازو / بازو 64 اور ایکسٹ 4 لیں ، جو بالترتیب سب سے عام اینڈرائڈ فن تعمیر اور فائل سسٹم ہیں۔ 4..4 میں ، 4. the.7878 (جدید ترین اویرو سی اے ایف ٹیگ کا ورژن) سے لے کر 4.4..121 ((تازہ ترین اپ اسٹریم ٹیگ) ، ان سسٹم کے ارتکاب کے ل for درج ذیل اعداد یہ ہیں:



ناتھن @ فلیش باکس ~ / دانا / لینکس-مستحکم (ماسٹر) it گٹ لاگ --فارمٹ =٪ h v4.4.78..v4.4.121 | wc -l2285 نتھن @ فلیش باکس ~ / دانا / لینکس مستحکم (ماسٹر) it گٹ لاگ --فارمٹ =٪ h v4.4.78..v4.4.121 چاپ / بازو | wc -l58 ناتھن @ فلیش باکس ~ / دانا / لینکس مستحکم (ماسٹر) it گٹ لاگ --فارمٹ =٪ h v4.4.78..v4.4.121 چاپ / بازو 64 | wc -l22 ناتھن @ فلیش باکس ~ / دانا / لینکس-مستحکم (ماسٹر) it گٹ لاگ --فارمٹ =٪ h v4.4.78..v4.4.121 fs / ext4 | WC -l18

سب سے زیادہ وقت لینے والا حصہ ابتدائی طور پر سامنے لانا ہے۔ ایک بار جب آپ جدید ترین راستہ بن جاتے ہیں تو ، کسی نئی ریلیز میں ضم ہونے میں بالکل وقت نہیں لگتا ہے ، جس میں عام طور پر 100 سے زیادہ کمٹٹس نہیں ہوتے ہیں۔ اس سے جو فوائد حاصل ہوتے ہیں (آپ کے صارفین کیلئے زیادہ استحکام اور بہتر حفاظت) اس عمل کی ضرورت ہے۔

لینکس مستحکم دانی کو اینڈروئیڈ کرنل میں ضم کرنے کا طریقہ

پہلے آپ کو یہ جاننے کی ضرورت ہوگی کہ آپ کا Android آلہ کون سا کرنل ورژن چل رہا ہے۔

جتنا معمولی لگتا ہے ، یہ جاننا ضروری ہے کہ آپ کو کہاں سے شروع ہونا ہے۔ اپنے دانا کے درخت میں درج ذیل کمانڈ چلائیں:

کرنلورژن بنائیں

یہ آپ کے جس ورژن پر ہے اس کو واپس کردے گا۔ پہلے دو نمبروں کو آپ کی ضرورت والی شاخ کا پتہ لگانے کے لئے استعمال کیا جائے گا (جیسے کسی بھی 4.4 دانا کے لئے linux-4.4.y) اور آخری نمبر کا تعی willن کرنے کے لئے استعمال کیا جائے گا کہ آپ کو ملاپ کے ساتھ کیا ورژن شروع کرنا ہوگا (جیسے اگر آپ 4.. 4. پر ہیں تو .21 ، آپ اگلے 4.4.22 کو ضم کریں گے)۔

kernel.org سے تازہ ترین دانا ماخذ پکڑو

kernel.org میں دانا کا تازہ ترین ذریعہ ہے لینکس مستحکم ذخیرہ . اس صفحے کے نیچے ، بازیافت کے تین لنکس ہوں گے۔ میرے تجربے میں ، گوگل کا آئینہ سب سے تیز تر ہوتا ہے لیکن آپ کے نتائج مختلف ہو سکتے ہیں۔ درج ذیل کمانڈ چلائیں:

گٹ ریموٹ ایڈ لینکس مستحکم https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.gitgit بازیافت لینکس مستحکم

فیصلہ کریں کہ کیا آپ پوری دانا کو ضم کرنا چاہتے ہیں یا معاہدے کو چیری چنیں

اگلا ، آپ کو منتخب کرنے کی ضرورت ہوگی اگر آپ معاہدے یا چیری چن کو ضم کرنا چاہتے ہیں۔ یہاں ہر ایک کے پیشہ اور موافق ہیں اور جب آپ ان کو کرنا چاہتے ہو۔

نوٹ: اگر آپ کا دانا وسیلہ ٹربال کی شکل میں ہے تو ، آپ کو زیادہ تر ممکنہ طور پر چیری لینے کی ضرورت ہوگی ، ورنہ آپ کو ہزاروں فائل تنازعات کا سامنا کرنا پڑے گا کیونکہ گٹ تاریخ کو مکمل طور پر اپ اسٹریم پر مبنی ہے ، نہ کہ او ایم یا سی اے ایف نے جو کچھ بدلا ہے۔ بس مرحلہ 4 پر جائیں۔

چیری لینے:

پیشہ:

  • تنازعات کو حل کرنا آسان ہے کیونکہ آپ جانتے ہو کہ تنازعہ کسی مسئلے کا سبب بن رہا ہے۔
  • ریبیس کرنا آسان ہے کیونکہ ہر کمٹمنٹ خود ہی ہے۔
  • مسائل میں چل رہا ہے تو بائیسکٹ کرنا آسان ہے

Cons کے:

  • اس میں زیادہ وقت لگتا ہے کیوں کہ ہر ایک عہد کو انفرادی طور پر منتخب کرنا ہوتا ہے۔
  • یہ بتانا زیادہ مشکل ہے کہ کیا پہلی مرتبہ نظر کا ارتکاب upstream سے ہے

جاؤ

پیشہ :

  • یہ تیز ہے کیوں کہ آپ کو صاف ستھری پیچ کے ضم ہونے کی ضرورت نہیں ہے۔
  • یہ دیکھنا آسان ہے کہ جب کوئی ارتکاب upstream سے ہوتا ہے کیوں کہ آپ مرتکب نہیں ہوجاتے ، upstream برقرار رکھنے والا ہوگا۔

Cons کے:

  • تنازعات کو حل کرنا کچھ زیادہ مشکل ہوسکتا ہے کیونکہ آپ کو یہ دیکھنے کی ضرورت ہوگی کہ کون سا ارتکاب گٹ لاگ / گٹ الزام کے استعمال سے تنازعہ پیدا کررہا ہے ، یہ آپ کو براہ راست نہیں بتائے گا۔
  • ربیس کرنا مشکل ہے کیونکہ آپ انضمام کو باز نہیں کرسکتے ہیں ، یہ ان تمام عہد کو فردا commit فردا طور پر منتخب کرنے کی پیش کش کرے گا۔ تاہم ، آپ کو گٹ ریورٹ اور جہاں ممکن ہو وہاں گٹ انضمام کے بجائے ، اکثر چھٹکارا نہیں لینا چاہئے۔

میں ابتدائی طور پر کسی پریشانی کے تنازعات کا پتہ لگانے کے لئے چیری پک کرنے کی سفارش کروں گا ، انضمام کریں ، اور پھر اس مسئلے کو واپس کردیں جس کے بعد اپ ڈیٹ کرنا آسان ہے (کیوں کہ اپ ڈیٹ ہونے کے بعد انضمام جلد ہوجاتا ہے)۔

ایک بار میں ایک ورژن ، اپنے ماخذ میں معاہدے شامل کریں

اس عمل کا سب سے اہم حصہ ایک وقت میں ایک ورژن ہے۔ آپ کی اوپری اسٹریم سیریز میں ایک پریشانی پیچ ہوسکتا ہے ، جس کی وجہ سے بوٹ لگانے یا آواز یا چارجنگ جیسے کچھ کو توڑ سکتا ہے (اشارے اور ترکیب سیکشن میں وضاحت کی گئی ہے)۔ اس وجہ سے اضافی ورژن کی تبدیلیاں کرنا ضروری ہے ، کچھ ورژن کے لئے 2000 کے اوپر کیے گئے معاہدوں کی نسبت 50 کمٹ میں کوئی مسئلہ تلاش کرنا آسان ہے۔ میں صرف اس وقت ایک مکمل انضمام کی سفارش کروں گا جب آپ کو یہ معلوم ہوجائے کہ مسئلہ کے ارتکاب اور تنازعات کے حل کے بارے میں سب جانتے ہیں۔

چیری اٹھانا

شکل:

گٹ چیری پک ..

مثال:

گٹ چیری پک v3.10.73..v3.10.74

جاؤ

شکل:

ضم ہوجائیں

مثال:

گٹ ضم v3.10.74

میں # مارکر کو ختم کرکے انضمام کے ارتکاب میں تنازعات پر نظر رکھنے کی سفارش کرتا ہوں۔

تنازعات کو کیسے حل کریں؟

ہم ہر ایک تنازعہ کو حل کرنے کے لئے ایک قدم بہ قدم رہنمائی نہیں دے سکتے ، کیوں کہ اس میں سی زبان کا اچھا علم ہے ، لیکن یہاں کچھ اشارے ہیں۔

اگر آپ ضم ہورہے ہیں تو معلوم کریں کہ تنازعہ کی وجہ سے کیا عہد آرہا ہے۔ آپ یہ دو طریقوں میں سے ایک کر سکتے ہیں:

  1. git log -p v $ (kernelversion بنائیں) .. اپنے موجودہ ورژن اور تازہ ترین ورژن سے تازہ ترین کے مابین تبدیلیاں لانے کے ل.۔ -p پرچم آپ کو ہر عہد کے ذریعہ کی گئی تبدیلیاں دے گا تاکہ آپ دیکھ سکیں۔
  2. علاقے میں ہر کمٹ کے ہیش حاصل کرنے کے لئے فائل پر گٹ الزام لگائیں۔ اس کے بعد آپ یہ جاننے کے لئے گٹ شو –فارمٹ = فلر چلا سکتے ہیں کہ آیا کمٹینڈر مین لائن / مستحکم ، گوگل ، یا کوڈ اورا سے تھا۔
  • اگر آپ کے پاس کمٹمنٹ پہلے ہی موجود ہے تو معلوم کریں۔ کچھ دکاندار جیسے گوگل یا سی اے ایف ڈرٹی COW فکس کی طرح نازک کیڑے تلاش کرنے کی کوشش کریں گے ، اور ان کے پچھلے حصے upstream کے سے متصادم ہوسکتے ہیں۔ آپ گٹ لاگ rungrep = '' چلا سکتے ہیں اور دیکھ سکتے ہیں کہ آیا اس سے کچھ بھی واپس آجاتا ہے۔ اگر ایسا ہوتا ہے تو ، آپ کمٹٹ کو چھوڑ سکتے ہیں (اگر گٹ ری سیٹ کا استعمال کرتے ہوئے چیری لینے – ہارڈ اینڈ اینڈ گٹ چیری پک –کونٹیو) کو نظرانداز کرسکتے ہیں یا تنازعات کو نظرانداز کرسکتے ہیں (ہٹائیں<<<<<>>>>>)۔
  • معلوم کریں کہ اگر کوئی بیک پورٹ رہا ہے جو ریزولیوشن میں مبتلا ہے۔ گوگل اور سی اے ایف کچھ پیچ کو بیک پورٹ کرنا چاہتے ہیں جو مستحکم نہیں ہوں گے۔ مستحکم کو اکثر مرکزی پیچ عہد کی قرارداد کو بعض پیچوں کے پائے جانے کے موافقت کو اپنانے کی ضرورت ہوگی جن کا گوگل بیک پورٹ پر انتخاب کرتا ہے۔ آپ گٹ شو (مین لائن ہیش مستحکم عہد کے ارتکاب کے پیغام میں دستیاب ہوں گے) چلا کر مین لائن کمٹٹ پر نظر ڈال سکتے ہیں۔ اگر کوئی بیک پورٹ اس میں خلل ڈالتا ہے تو ، آپ یا تو تبدیلیاں ختم کرسکتے ہیں یا آپ مرکزی لائن ورژن (جو آپ کو عام طور پر کرنے کی ضرورت ہو گی) استعمال کرسکتے ہیں۔
  • پڑھیں کہ کمٹمنٹ کیا کرنے کی کوشش کر رہی ہے اور دیکھیں کہ آیا مسئلہ پہلے سے طے ہوچکا ہے۔ کبھی کبھی سی اے ایف upstream سے آزاد کسی مسئلے کو ٹھیک کرسکتا ہے ، مطلب ہے کہ آپ یا تو ان اسٹریم کو اوپری اسٹریم کے لئے لکھ سکتے ہیں یا اسے اوپر کی طرح خارج کردیتے ہیں۔

بصورت دیگر ، یہ صرف کسی کیف / Google / OEM اضافے کا نتیجہ ہوسکتا ہے ، ایسی صورت میں آپ کو بس کچھ چیزیں بدلنے کی ضرورت ہوگی۔

یہاں ہے لینکس مستحکم kernel.org ذخیرہ کا آئینہ گٹ ہب پر ، جو تنازعات کے حل کے ل commit کمٹٹ لسٹوں اور مختلف فرقوں کو تلاش کرنا آسان ہوسکتا ہے۔ میری سفارش ہے کہ پہلے آپ کمٹٹ لسٹ ویو پر جائیں اور اس مسئلے کا پتہ لگائیں کہ آپ کی موازنہ کرنے کے ل original اصل فرق کو دیکھیں۔

مثال یو آر ایل: https://github.com/nathanchance/linux-stable/commits/linux-3.10.y/arch/arm64/mm/mmu.c

آپ یہ کمانڈ لائن کے ذریعہ بھی کرسکتے ہیں:

گٹ لاگ .. گٹ شو

قراردادوں کو حل کرنا سیاق و سباق کے بارے میں ہے۔ آپ کو ہمیشہ کیا کرنا چاہئے اس بات کو یقینی بنائیں کہ آپ کا آخری مختلف فرق دو مختلف ونڈوز میں مندرجہ ذیل کمانڈوں کو چلاتے ہوئے اپ اسٹریم سے ملتا ہے۔

git diff head git diff v $ (kernelversion بنائیں) .. $ (گٹ ٹیگ --sort = -taggerdate -l v $ (کینیورورژن بنائیں | کٹ -d. -ف 1،2) * | ہیڈ -n1)

دوبارہ فعال کریں

گٹ میں ایک خصوصیات ہے جس کا نام ریئری ہے (اس کا مطلب دوبارہ استعمال شدہ ریکارڈ شدہ حل) ہے ، مطلب یہ ہے کہ جب یہ تنازعہ کا پتہ لگاتا ہے تو ، یہ ریکارڈ کرے گا کہ آپ نے اسے کس طرح حل کیا ہے تاکہ آپ اسے بعد میں دوبارہ استعمال کرسکیں۔ یہ خاص طور پر دونوں ضم شدہ اور چیری چننے والے دائمی ریباسیسروں کے لئے مفید ہے کیونکہ آپ کو گٹ ایڈ کو چلانے کی ضرورت ہوگی۔ اپ اسٹریم لین اپ کو دوبارہ کرنا جب اور تنازعہ جاری رکھنا ہے کیونکہ تنازعہ حل ہوجائے گا کہ آپ نے پہلے اسے کیسے حل کیا تھا۔

یہ آپ کے دانا ریپو میں درج ذیل کمانڈ کو چلانے کے ذریعے فعال کیا جاسکتا ہے:

گٹ تشکیل rerere.en सक्षम سچ

جب کسی مرتب کرنے والے یا رن ٹائم غلطی سے دوچار ہو تو بائیسکٹ کیسے کریں

یہ دیکھتے ہوئے کہ آپ بڑی تعداد میں وعدوں کا اضافہ کریں گے ، آپ کے لئے یہ بہت ممکن ہے کہ آپ مرتب کریں یا رن ٹائم غلطی متعارف کروائیں۔ محض دستبرداری کے بجائے ، آپ مسئلے کی اصل وجہ معلوم کرنے کے لئے گٹ کے بلٹ ان بائیک ٹول کا استعمال کرسکتے ہیں! مثالی طور پر ، آپ ہر دانے کے ورژن کی تشکیل اور چمکانے لگیں گے کیونکہ جب آپ اسے شامل کرتے ہیں تو ضرورت پڑنے پر بائیسکٹ لگانے میں کم وقت لگے گا لیکن آپ 5000 مسئلے کو بغیر کسی مسئلے کے بائیکاٹ کرسکتے ہیں۔

گٹ بائیسکٹ جو کچھ کرے گا ، اس سے بہت سارے معاہدے کیے جائیں گے ، جہاں سے یہ مسئلہ موجود ہے جہاں موجود نہیں تھا ، اور پھر عہد کی حد کو آدھا کرنا شروع کردیں ، جس سے آپ کو تعمیر اور جانچ کی سہولت مل جائے گی اور یہ بتائیں کہ یہ اچھا ہے یا نہیں۔ . یہ تب تک جاری رہے گا جب تک یہ آپ کے مسئلے کی وجہ سے ہونے والی وابستگی کو ختم نہیں کرتا ہے۔ اس وقت ، آپ یا تو اسے ٹھیک کر سکتے ہیں یا اسے واپس پلٹ سکتے ہیں۔

  1. بائیسکٹ کرنا شروع کریں: گٹ بائیسکٹ اسٹارٹ
  2. موجودہ نظر ثانی کو خراب کے طور پر لیبل کریں: git bisect خراب ہے
  3. ایک ترمیم کو اچھی کے طور پر لیبل کریں: git bisect اچھا ہے
  4. نئی ترمیم کے ساتھ بنائیں
  5. نتائج کی بنیاد پر (اگر مسئلہ موجود ہے یا نہیں) ، گیت کو بتائیں: گٹ بائیسکٹ اچھا ہے یا گٹ بائیسکٹ خراب ہے
  6. کلین کریں اور 4-5 مرحلے دہرائیں جب تک کہ مسئلہ کا ارتکاب نہ ہو۔
  7. پلٹیں یا دشواری کا ارتکاب ٹھیک کریں۔

نوٹ: انضمام کو عارضی طور پر گٹ ری بیس کو چلانے کی ضرورت ہوگی - تاکہ آپ اپنی شاخ میں تمام پیچوں کو مناسب بائیسکٹنگ کے ل apply لاگو کریں ، کیوں کہ جگہ جگہ انضمام کے ساتھ بیسکٹ لگانے سے اکثر اوقات کی روانی میں کمی کا معائنہ ہوتا ہے ، اس کا مطلب ہے کہ آپ کے پاس Android کے مخصوص کاموں میں سے کوئی کمی نہیں ہے۔ میں درخواست کرنے پر اس کی مزید گہرائی میں جاسکتا ہوں لیکن مجھ پر اعتماد کریں ، اس کی ضرورت ہے۔ ایک بار جب آپ نے مسئلہ کی وابستگی کی نشاندہی کرلی تو ، آپ اسے انضمام میں پلٹ سکتے ہیں یا اس کو دوبارہ گھٹا سکتے ہیں۔

اپ اسٹریم اپ ڈیٹس کو اسکواش نہ کریں

بہت سارے نئے ڈویلپرز کو ایسا کرنے کا لالچ ہے کیونکہ انتظام کرنا 'صاف' اور 'آسان' ہے۔ یہ کچھ وجوہات کی بناء پر خوفناک ہے۔

  • تصنیف کھو گیا ہے۔ دوسرے ڈویلپروں کے ساتھ ان کے کام کا کریڈٹ رکھنا غیر منصفانہ ہے۔
  • بسٹکنگ ناممکن ہے۔ اگر آپ سلسلہ وار ارتقا کا سلسلہ اسکواش کرتے ہیں اور اس سیریز میں کوئی مسئلہ ہے تو ، اسکواش میں کسی مسئلے کی وجہ سے یہ بتانا ناممکن ہے۔
  • مستقبل میں چیری چن مشکل ہیں۔ اگر آپ کو اسکواشڈ سیریز کے ساتھ بازیافت کرنے کی ضرورت ہے تو ، یہ بتانا مشکل / ناممکن ہے کہ تنازعہ کہاں سے نکلا ہے۔

بروقت تازہ کاری کیلئے لینکس کرنل میلنگ لسٹ کو سبسکرائب کریں

جب بھی اپ اسٹریم اپ ڈیٹ ہو وہاں مطلع ہونے کے ل to ، سبسکرائب کریں linux-kernel-जाहीर کی فہرست . اس سے آپ کو ہر بار جب کوئی نیا دانا جاری ہوتا ہے تو آپ کو ای میل مل سکے گا تاکہ آپ جتنی جلدی ممکن ہو تازہ کاری کریں اور دبائیں۔

9 منٹ پڑھے