কীভাবে আপনার অ্যান্ড্রয়েড কার্নেলকে সর্বশেষ লিনাক্স স্থিতিতে আপডেট করবেন

কার্নেলের প্রতিটি একক অংশ তৈরি করে, এমনকি উবুন্টু বা মিন্টের মতো সাধারণ লিনাক্সের ডিস্ট্রোও নয়। এর অর্থ এই নয় যে আপনি এই সংশোধনগুলি গ্রহণ করবেন না কারণ সেখানে আপনি জন্য গাড়ী ফাইনান্স ট্যাক্সি ড্রাইভার কর চালান। উদাহরণস্বরূপ আর্ম / আর্ম 64 এবং এক্সট 4 নিন, যা যথাক্রমে সর্বাধিক সাধারণ অ্যান্ড্রয়েড আর্কিটেকচার এবং ফাইল সিস্টেম। ৪.৪-এ, ৪.৪.7878 (সর্বশেষ ওরিও সিএএফ ট্যাগের সংস্করণ) থেকে ৪.৪.১২১ (সর্বশেষ প্রবাহের ট্যাগ) এ, এই সিস্টেমগুলির কমিটগুলির জন্য নিম্নলিখিত সংখ্যাগুলি:

নাথান @ ফ্ল্যাশবক্স ~ / কার্নেলস / লিনাক্স-স্থিতিশীল (মাস্টার) it গিট লগ - ফর্ম্যাট =% এইচ v4.4.78..v4.4.121 | wc -l2285 নাথান @ ফ্ল্যাশবক্স ~ / কার্নেলস / লিনাক্স-স্ট্যাবিলিট (মাস্টার) it গিট লগ - ফর্ম্যাট =% এইচ v4.4.78..v4.4.121 খিলান / বাহু | wc -l58 নাথান @ ফ্ল্যাশবক্স ~ / কার্নেল / লিনাক্স-স্থিতিশীল (মাস্টার) it গিট লগ - ফর্ম্যাট =% এইচ v4.4.78..v4.4.121 খিলান / আর্ম 64 | wc -l22 নাথন @ ফ্ল্যাশবক্স ~ / কার্নেলস / লিনাক্স-স্থিতিশীল (মাস্টার) it গিট লগ - ফর্ম্যাট =% এইচ v4.4.78..v4.4.121 fs / ext4 | wc -l18

সর্বাধিক সময় ব্যয় করা অংশটি প্রাথমিক আনয়ন; আপনি একবারে আপ টু ডেট হয়ে গেলে নতুন রিলিজটিতে মার্জ করতে মোটেই সময় লাগে না, এতে সাধারণত 100 টিরও বেশি কমিট থাকে না। এটি যে সুবিধা নিয়ে আসে (আপনার ব্যবহারকারীর জন্য আরও স্থিতিশীলতা এবং উন্নত সুরক্ষা) তবে এই প্রক্রিয়াটি হওয়া উচিত।

কীভাবে একটি অ্যান্ড্রয়েড কার্নেলে লিনাক্স স্থিতিশীল কার্নেলটি মার্জ করবেন

প্রথমে আপনার অ্যান্ড্রয়েড ডিভাইসটি কী কার্নেল সংস্করণে চলছে তা নির্ধারণ করতে হবে।

এটিকে যতটা তুচ্ছ মনে হচ্ছে, আপনার কোথায় শুরু করা দরকার তা জানা দরকার। আপনার কার্নেল ট্রিতে নিম্নলিখিত কমান্ডটি চালান:

কার্নেলভারশন তৈরি করুন

এটি আপনি যে সংস্করণে ছিলেন তা ফিরে আসবে। প্রথম দুটি সংখ্যা আপনার প্রয়োজনীয় শাখাটি নির্ধারণ করতে ব্যবহৃত হবে (যেমন কোনও 4.4 কার্নেলের জন্য লিনাক্স-4.4.y) এবং শেষ নম্বরটি মার্জ করার সাথে আপনার কোন সংস্করণটি শুরু করতে হবে তা নির্ধারণ করতে ব্যবহার করা হবে (উদাহরণস্বরূপ আপনি যদি 4.4 এ থাকেন তবে .21, আপনি পরবর্তী 4.4.22 একীভূত করবেন)।

কার্নেল.অর্গ থেকে সর্বশেষতম কার্নেল উত্সটি ধরুন

কার্নেল.অর্গ সর্বশেষতম কার্নেল উত্সে থাকে লিনাক্স-স্থিতিশীল সংগ্রহস্থল । এই পৃষ্ঠার নীচে, তিনটি আনার লিঙ্ক থাকবে। আমার অভিজ্ঞতায় গুগলের আয়না সবচেয়ে দ্রুত হতে থাকে তবে আপনার ফলাফলগুলি পৃথক হতে পারে। নিম্নলিখিত আদেশগুলি চালান:

গিট রিমোট যুক্ত লিনাক্স-স্থিতিশীল https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.gitgit আনতে লিনাক্স-স্থিতিশীল

আপনি যদি পুরো কার্নেলটি মার্জ করতে চান বা কমিটগুলি চেরি-বাছাই করুন তা সিদ্ধান্ত নিন

এর পরে, আপনি যদি কমিটগুলি বা চেরি-পিকটি মার্জ করতে চান তবে আপনাকে চয়ন করতে হবে। এখানে প্রতিটিের পক্ষে মতামত রয়েছে এবং যখন আপনি সেগুলি করতে চান।

বিঃদ্রঃ: যদি আপনার কার্নেল উত্সটি টার্বল আকারে থাকে তবে আপনার সম্ভবত চেরি-বাছাই করা দরকার, অন্যথায় আপনি হাজার হাজার ফাইল সংঘাত পেতে পারেন কারণ গিট ইতিহাসকে বিশুদ্ধরূপে উজানের উপর ভিত্তি করে গড়ে তুলছে, যা ওএম বা সিএএফ পরিবর্তিত হয়নি not শুধু পদক্ষেপ 4 এ যান।

চেরি পিকিং:

পেশাদাররা:

  • দ্বন্দ্বগুলি সমাধান করা সহজ কারণ আপনি জানেন ঠিক কী দ্বন্দ্বে কোন সমস্যা সৃষ্টি করছে।
  • প্রতিটি প্রতিশ্রুতিবদ্ধতার নিজস্ব হিসাবে পুনঃস্থাপন করা সহজ।
  • সমস্যাগুলিতে চলতে থাকলে দ্বিখণ্ডিত করা সহজ

কনস:

  • প্রতিটি প্রতিশ্রুতি পৃথকভাবে বাছাই করতে এটি বেশি সময় নেয়।
  • প্রতিশ্রুতিবদ্ধ প্রথম নজরে উজানের থেকে কিনা তা বলা আরও একটু কঠিন

যাওয়া

পেশাদাররা :

  • এটি আরও দ্রুত কারণ আপনার সমস্ত পরিষ্কার প্যাচগুলি মার্জ করার জন্য অপেক্ষা করতে হবে না।
  • যখন আপনি প্রতিশ্রুতিবদ্ধ হবেন না কোনও প্রতিশ্রুতি আপ স্ট্রিম থেকে হয় তখন দেখা সহজ, প্রবাহ রক্ষণাবেক্ষণকারী হবেন।

কনস:

  • দ্বন্দ্ব নিরসন করা কিছুটা জটিল হতে পারে কারণ গিট লগ / গিট দোষ ব্যবহার করে কোন প্রতিশ্রুতি সংঘাত সৃষ্টি করছে তা খতিয়ে দেখা দরকার, এটি সরাসরি আপনাকে জানায় না।
  • রিবাজিং কঠিন কারণ আপনি একীভূতকরণটিকে রিবাজ করতে পারবেন না, এটি পৃথকভাবে সমস্ত প্রতিশ্রুতি চেরি-বাছাইয়ের প্রস্তাব দেবে। যাইহোক, আপনি গিট রিভার্ট এবং গিটার একত্রীকরণ যেখানে সম্ভব সেখানে ব্যবহারের পরিবর্তে প্রায়শই রিবেসিং করবেন না।

আমি প্রাথমিকভাবে যে কোনও সমস্যার দ্বন্দ্বগুলি সনাক্ত করার জন্য একটি চেরি-পিক করার পরামর্শ দিচ্ছি, একীভূতকরণ করুন, তারপরে সমস্যাটি পুনরুদ্ধার করুন তারপরে আপডেট করা সহজ (হালনাগাদ হওয়ার পরে মার্জ হওয়া আরও দ্রুত)।

আপনার উত্সে কমিটগুলি যুক্ত করুন, একবারে একটি সংস্করণ

এই প্রক্রিয়াটির সর্বাধিক গুরুত্বপূর্ণ অংশটি এক সময়ের অংশে একটি সংস্করণ। আপনার আপ স্ট্রিম সিরিজে একটি সমস্যা প্যাচ থাকতে পারে, যা বুট করার সাথে সমস্যা বা শব্দ বা চার্জিংয়ের মতো কিছু ভাঙ্গতে পারে (টিপস এবং ট্রিকস বিভাগে ব্যাখ্যা করা হয়েছে)। এই কারণে বর্ধিত সংস্করণ পরিবর্তন করা গুরুত্বপূর্ণ, কিছু সংস্করণের জন্য 2000 কমিটের চেয়ে উপরে 50 টি কমিটে কোনও সমস্যা পাওয়া সহজ। সমস্যার সমাধান এবং দ্বন্দ্বের সমাধানগুলি সমস্ত কিছু জানার পরে আমি কেবলমাত্র সম্পূর্ণ মার্জ করার পরামর্শ দিই।

চেরি পিকিং

ফর্ম্যাট:

গিট চেরি পিক ..

উদাহরণ:

গিট চেরি-পিক v3.10.73..v3.10.74

যাওয়া

ফর্ম্যাট:

একীভূত হন

উদাহরণ:

গিট মার্জ v3.10.74

আমি # চিহ্নিতকারীদের সরানোর মাধ্যমে মার্জ কমিটে দ্বন্দ্বগুলি ট্র্যাক করে রাখার পরামর্শ দিচ্ছি।

বিরোধগুলি কীভাবে সমাধান করবেন

আমরা প্রতিটি দ্বন্দ্ব সমাধানের জন্য একটি ধাপে ধাপে গাইড দিতে পারি না, কারণ এতে সি ভাষার একটি ভাল জ্ঞান জড়িত, তবে এখানে কয়েকটি ইঙ্গিত রয়েছে।

যদি আপনি একীভূত হচ্ছেন তবে কোন প্রতিশ্রুতি সংঘাত সৃষ্টি করছে তা নির্ধারণ করুন। আপনি দুটি উপায়ের মধ্যে এটি একটি করতে পারেন:

  1. গিট লগ-পি ভি $ (কর্নেলভারশন তৈরি করুন) .. আপনার বর্তমান সংস্করণ এবং সর্বশেষতম প্রবাহ থেকে সর্বশেষের মধ্যে পরিবর্তন পেতে। -P পতাকা আপনাকে প্রতিটি প্রতিশ্রুতি দ্বারা সম্পাদিত পরিবর্তনগুলি দেবে যাতে আপনি দেখতে পান।
  2. এলাকায় প্রতিটি কমিটের হ্যাশ পেতে ফাইলটিতে গিট দোষ চাপুন। এরপরে আপনি গিট শো –format = ফুলারটি চালাতে পারেন তা জানার জন্য যে প্রতিশ্রুতিবদ্ধটি মূললাইন / স্থিতিশীল, গুগল, বা কোডঅরোরা থেকে এসেছে।
  • আপনার যদি ইতিমধ্যে প্রতিশ্রুতিবদ্ধ থাকে তবে চিত্রিত করুন। গুগল বা সিএএফ-এর মতো কিছু বিক্রেতারা ডার্টি সিডাব্লু ফিক্সের মতো সমালোচনামূলক বাগের জন্য প্রবাহ দেখার চেষ্টা করবে এবং তাদের ব্যাকপোর্টগুলি প্রবাহের সাথে বিরোধ করতে পারে। আপনি গিট লগ rungrep = '' চালাতে পারেন এবং দেখুন যে এটি কিছু দেয় কিনা। যদি তা হয় তবে আপনি অঙ্গীকারটি এড়িয়ে যেতে পারেন (যদি গিট রিসেট ব্যবহার করে চেরি-বাছাই করা থাকে - & & git চেরি-পিক –কন্টিনিউ) বা বিরোধগুলি উপেক্ষা করতে পারেন (মুছে ফেলুন<<<<<>>>>>)।
  • বিশৃঙ্খলা বিশৃঙ্খলা বিশৃঙ্খলা করে এমন কোনও ব্যাকপোর্ট হয়েছে কিনা তা খুঁজে বের করুন। গুগল এবং সিএএফ এমন কিছু প্যাচগুলি ব্যাকপোর্ট করতে চায় যা স্থিতিশীল হয় না। স্থিতিশীলদের প্রায়শই গুগল ব্যাকপোর্টে বেছে নেওয়া কিছু নির্দিষ্ট প্যাচগুলির অ্যাবসনে মাইনলাইন কমিটের রেজোলিউশনটিকে অভিযোজিত করতে হবে। গিট শো চালিয়ে আপনি মূললাইন প্রতিশ্রুতিটি দেখতে পারেন (স্থির প্রতিশ্রুতি দেওয়ার প্রতিশ্রুতিতে মূল লাইন হ্যাশ উপলব্ধ হবে)। যদি কোনও ব্যাকপোর্ট এটির সাথে জগাখিচুড়ি হয়, আপনি হয় পরিবর্তনগুলি বাতিল করতে পারেন অথবা আপনি মূললাইন সংস্করণটি ব্যবহার করতে পারেন (যা আপনাকে সাধারণত যা করতে হবে)।
  • প্রতিশ্রুতিবদ্ধ কী করার চেষ্টা করছে তা পড়ুন এবং দেখুন যে সমস্যাটি ইতিমধ্যে ঠিক হয়ে গেছে। কখনও কখনও সিএএফ প্রবাহের থেকে পৃথক কোনও বাগ ঠিক করতে পারে, যার অর্থ আপনি হয় সেগুলি প্রবাহের জন্য তাদের ফিক্সটিকে ওভাররাইট করতে পারেন বা উপরের মতো এটি বাতিল করতে পারেন।

অন্যথায়, এটি কেবল সিএএফ / গুগল / ইএম সংযোজনের ফলাফল হতে পারে, সেক্ষেত্রে আপনার চারপাশে কিছু জিনিস বদলাতে হবে।

এখানে লিনাক্স-স্থিতিশীল কার্নেল.অর্গ সংগ্রহস্থলের একটি আয়না গিটহাব-এ, যা দ্বন্দ্বের সমাধানের জন্য কমিট লিস্ট এবং ডিফগুলি অনুসন্ধান করা সহজ হতে পারে। আমি প্রথমে কমিট লিস্ট ভিউতে গিয়ে সমস্যাটি নির্ধারণ করার জন্য এটির সাথে তুলনা করার জন্য মূল ভিন্নতাটি দেখার জন্য প্রতিশ্রুতিবদ্ধ।

উদাহরণ ইউআরএল: https://github.com/nathanchance/linux-stable/commits/linux-3.10.y/arch/arm64/mm/mmu.c

আপনি এটি কমান্ড লাইনের মাধ্যমেও করতে পারেন:

গিট লগ .. গিট শো

রেজোলিউশনগুলি সমাধান করা সমস্ত প্রসঙ্গে। আপনার সর্বদা যা করা উচিত তা হ'ল দুটি পৃথক উইন্ডোতে নিম্নলিখিত কমান্ডগুলি চালিয়ে আপনার চূড়ান্ত পার্থক্যটি প্রবাহের সাথে মেলে কিনা তা নিশ্চিত করুন:

গিট ডিফার হেড গিট ডিফ ডিফ $ (কর্নেলভারশন তৈরি করুন) .. $ (গিট ট্যাগ --sort = -taggerdate -l v $ (কর্নেলভারশন তৈরি করুন | কাটা-ডি।-1, 1,2) * | শিরোনাম -n1)

পুনরায় সক্ষম করুন

গিটের রিরে নামক একটি বৈশিষ্ট্য রয়েছে (এটি রিউজড রেকর্ডড রেজোলিউশনকে বোঝায়) এর অর্থ হ'ল এটি যখন কোনও বিরোধকে শনাক্ত করে এটি আপনাকে কীভাবে সমাধান করেছে তা রেকর্ড করবে যাতে আপনি পরে এটি পুনরায় ব্যবহার করতে পারেন। এটি মার্জ এবং চেরি-পিকিং উভয়ই ক্রনিক রিবাজারগুলির জন্য বিশেষত সহায়ক কারণ আপনাকে গিট অ্যাড চালানোর দরকার হবে। আপস্ট্রিম আনয়নটি পুনরায় করার সময় && গিট –কন্টুইন হিসাবে বিরোধটি সমাধান করা হবে আপনি কীভাবে এর আগে সমাধান করেছেন তা সমাধান হবে।

এটি আপনার কার্নেল রেপোতে নিম্নলিখিত কমান্ডটি চালিয়ে সক্ষম করা যেতে পারে:

গিট কনফিগারেশন rerere.enabled সত্য

সংকলক বা রানটাইম ত্রুটি চলাকালীন কীভাবে দ্বিখণ্ডিত করবেন

প্রদত্ত যে আপনি একটি বৃহত সংখ্যক কমিট যোগ করবেন, আপনার জন্য একটি সংকলক বা রানটাইম ত্রুটি প্রবর্তন করা খুব সম্ভব। কেবল হাল ছেড়ে দেওয়ার পরিবর্তে, আপনি সমস্যার মূল কারণ খুঁজে বের করার জন্য গিটের অন্তর্নির্মিত দ্বিখণ্ডিত সরঞ্জামটি ব্যবহার করতে পারেন! আদর্শভাবে, আপনি প্রতিটি কার্নেল সংস্করণটি তৈরি এবং ফ্ল্যাশ করতে যাবেন এটি যুক্ত করার সাথে সাথে দ্বিখণ্ডিতকরণের প্রয়োজন হলে কম সময় লাগবে তবে আপনি কোনও সমস্যা ছাড়াই 5000 টি কমিটকে দ্বিখণ্ডিত করতে পারেন।

গিট দ্বিখণ্ডিত যা করবে তা হ'ল একরকম কমিটস গ্রহণ করা, যেখান থেকে ইস্যুটি উপস্থিত ছিল না যেখানে উপস্থিত ছিল না, এবং তারপরে কমিট রেঞ্জ অর্ধেক করা শুরু করুন, এটি আপনাকে তৈরি এবং পরীক্ষা করার অনুমতি দেয় এবং এটি ভাল কিনা তা জানাতে দেয় let । এটি আপনার ইস্যু সৃষ্টিকারী প্রতিশ্রুতি ছাড়ার আগ পর্যন্ত এটি অব্যাহত থাকবে। এই মুহুর্তে, আপনি হয় এটি ঠিক করতে পারেন বা এটি আবার ফিরিয়ে দিতে পারেন।

  1. দ্বিখণ্ডিতকরণ শুরু করুন: গিট দ্বিখণ্ডা শুরু
  2. বর্তমান পুনর্বিবেচনাটিকে খারাপ হিসাবে লেবেল করুন: গিট বাইসেক্ট খারাপ
  3. একটি সংশোধন হিসাবে ভাল হিসাবে লেবেল: গিট দ্বিখণ্ডিত ভাল
  4. নতুন সংশোধন দিয়ে তৈরি করুন
  5. ফলাফলের ভিত্তিতে (যদি সমস্যাটি উপস্থিত থাকে বা না থাকে), গিটকে বলুন: গিট বিসেক্ট ভাল বা গিট বাইসেক্ট খারাপ
  6. সমস্যা প্রতিশ্রুতি না পাওয়া পর্যন্ত 4-5 পদক্ষেপ ধুয়ে ফেলুন এবং পুনরাবৃত্তি করুন!
  7. প্রত্যাবর্তন করুন বা সমস্যা প্রতিশ্রুতি সংশোধন করুন।

বিঃদ্রঃ: সংশ্লেষের জন্য সঠিকভাবে দ্বিখণ্ডিত করার জন্য আপনার ব্রাঞ্চে সমস্ত প্যাচগুলি প্রয়োগ করতে অস্থায়ীভাবে গিট রিবেস -i চালাতে হবে, কারণ স্থানটিতে সংযুক্তিগুলি দ্বিখণ্ডিত করা প্রায়শই বার প্রবাহের উপরের কমিটগুলিতে চেকআউট করে, যার অর্থ আপনার অ্যান্ড্রয়েড নির্দিষ্ট কমিটগুলির কোনওটিই নেই। অনুরোধের ভিত্তিতে আমি আরও গভীরতায় যেতে পারি তবে আমার উপর বিশ্বাস রাখুন, এটি প্রয়োজন। সমস্যাটি প্রতিশ্রুতিবদ্ধ শনাক্ত করার পরে, আপনি এটি মার্জতে ফেরত বা পুনরায় চালু করতে পারেন।

উজানের আপডেটগুলি স্কোয়াশ করবেন না

এটি পরিচালনা করতে 'ক্লিনার' এবং 'সহজ' হওয়ায় অনেকগুলি নতুন বিকাশকারী এটি করার জন্য প্রলুব্ধ হন। এটি কয়েকটি কারণে ভয়াবহ:

  • লেখকতা হারিয়ে গেছে। অন্য বিকাশকারীদের তাদের কাজের জন্য কৃতিত্ব জমা দেওয়া অন্যায়।
  • বাইস্যাক্ট করা অসম্ভব। যদি আপনি ধারাবাহিক কমিটের সিরিজটি স্কোয়াশ করেন এবং সেই সিরিজের কোনও বিষয় যদি সমস্যা হয় তবে স্কোয়াশের কোনও সমস্যা কী কারণে সমস্যা সৃষ্টি হয়েছিল তা বলা অসম্ভব।
  • ভবিষ্যতের চেরি-পিকগুলি আরও শক্ত। আপনার যদি স্কোয়াশেড সিরিজটির সাথে পুনর্বার প্রয়োজন হয়, তবে কোথা থেকে কোনও বিরোধের ফলাফল এসেছে তা বলা মুশকিল / অসম্ভব।

সময়োপযোগী আপডেটের জন্য লিনাক্স কার্নেল মেইলিং লিস্টে সাবস্ক্রাইব করুন

যখনই কোনও প্রবাহ আপডেট আপডেট করা হয় তার জন্য সাবস্ক্রাইব করুন লিনাক্স-কার্নেল-ঘোষণা তালিকা । এটি প্রতিবার নতুন কার্নেল প্রকাশের সময় আপনাকে একটি ইমেল পাওয়ার অনুমতি দেয় যাতে আপনি যত তাড়াতাড়ি সম্ভব আপডেট এবং চাপতে পারেন।

9 মিনিট পঠিত