লিনাক্স কার্নেল-বিল্ডিং প্রক্রিয়াটির প্রতিটি ধাপে কী ঘটে?


27

আমি কীভাবে কাস্টম কার্নেলগুলি তৈরি করতে এবং সেই কার্নেলগুলি ব্যবহার করে উবুন্টু বুট করতে পারি সে সম্পর্কে অনেক টিউটোরিয়াল পড়েছি এবং সফলভাবে গাইডগুলি এবং বুট করা কাস্টম কার্নেলগুলি সফলভাবে অনুসরণ করেছি, তবে গাইডগুলির প্রতিটি কমান্ড কী করে এবং আসলে কী ঘটছে সে সম্পর্কে আমার কোনও ধারণা নেই have প্রতিটি আদেশ।

কার্যপ্রণালী বর্ণিত উবুন্টু এর সাইটের সঙ্গে কাজ অনেক আছে fakeroot, dpkg, make-kpkg, কিছু initramfs -র, এবং অন্যান্য ভয়ঙ্কর কাপড় যে কাজ কিন্তু কেবল সাহায্য না আমাকে বুঝতে কি ঘটছে।

  • makeএকটি লিনাক্স কার্নেল ডিরেক্টরিতে আউটপুট কি ?
  • এটি কি "সঙ্কুচিত কার্নেল চিত্র" তৈরি করে?
  • "সঙ্কুচিত কার্নেল চিত্র" ফাইলটির নাম কী এবং এটি কোথায় স্থাপন করা হয়েছে?
  • কি করে make modules?
  • করা উচিত make modulesআগে বা পরে কাজ করা যেতে make?
  • makeআমার মডিউলগুলি স্বয়ংক্রিয়ভাবে তৈরি করে না ?
  • বুটেবল কার্নেলের তালিকায় নতুন নির্মিত কার্নেলগুলি যুক্ত করার পদ্ধতি (ইংরেজিতে, কেবল কমান্ডের তালিকা নয়) কী?
  • কি করে make install?
  • হবে make installএটা বুটেবল কার্নেলের আমার তালিকা যুক্ত করুন যাতে আমি কিছুই আরও অনেক কিছু করার নেই?
  • সমতুল্য কি আছে make modules_install?

এটি একাধিক প্রশ্নের মধ্যে বিভক্ত করা উচিত।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

উত্তর:


34

উপর থেকে...

  • makeকার্নেল চিত্র সংকলন এবং লিঙ্ক। এটি নামের একটি একক ফাইল vmlinuz
  • make modulesMকার্নেল কনফিগারেশনের সময় আপনি যে প্রতিটি প্রশ্নের উত্তর দিয়েছেন তার জন্য পৃথক ফাইলগুলি সংকলন করে । অবজেক্ট কোডটি আপনার সদ্য নির্মিত কার্নেলের বিপরীতে লিঙ্কযুক্ত। (উত্তর দেওয়া প্রশ্নের জন্য Y, এগুলি ইতিমধ্যে একটি অংশ vmlinuz, এবং প্রশ্নের Nউত্তরগুলির জন্য সেগুলি এড়িয়ে গেছে)।
  • make installআপনার নির্মিত কর্নেলটি ইনস্টল করে /vmlinuz
  • make modules_installআপনার কার্নেল মডিউলগুলি ইনস্টল করে /lib/modulesবা /lib/modules/<version>

এটি উপলব্ধ কার্নেলগুলির তালিকায় যুক্ত করার ক্ষেত্রে এটি বুট লোডার দ্বারা যত্ন নেওয়া হয়েছে। এটি প্রতিটি বুট লোডারের জন্য পৃথক, তবে grubx86 এবং amd64 এ সর্বাধিক সাধারণ তাই আমি এটি বর্ণনা করব। এটি আসলে বেশ সহজ। মধ্যে কীড়া সৌন্দর্য /, /bootএবং /lib/modulesকোন জিনিস এটা দেখে মনে হচ্ছে ওয়ার্কিং কার্নেল হতে হবে এবং সেটিকে যোগ হতে পারে জন্য। এবং হ্যাঁ, এটি একটি অতি বিবৃত বর্ণনা।

উবুন্টু ডকুমেন্টেশনের সেই অতিরিক্ত "ভয়ঙ্কর জিনিস" debপ্যাকেজ তৈরি করার জন্য অতিরিক্ত স্টাফ । আপনি যখন নিজের চেয়ে বেশি কিছু করছেন তখন এটি প্যাকেজ করা আরও ভাল। আপনি সময় পরিবর্তন করতে হবে।

কার্নেল এবং মডিউলগুলি পৃথক করে রাখা হয়েছে কারণ যে সমস্ত লোকের প্রয়োজন (যেমন, কার্নেল বিকাশকারী) তারা কেবলমাত্র একটি মডিউলে পরিবর্তন করে চলেছেন। তারা তাদের পরিবর্তনগুলি প্রয়োগ করতে পারে, কেবল মডিউলগুলি পুনর্নির্মাণ এবং ইনস্টল করতে পারে। এটি যখন দিনে 20 বার করতে হয় তখন অনেক সময় সাশ্রয় করে। একক make everythingকমান্ড পাওয়ার জন্য এটি কখনই আপডেট হবে না । আপনি পরিবর্তে, make && make modules && make install && make modules_install ডকুমেন্টেশন যেমন করতে চান ঠিক তেমন চালান । বিল্ড প্রক্রিয়া কার্নেল বিকাশকারীদের পক্ষে, আপনি নয়। এবং এটাই হওয়া উচিত।

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

এমন নয় যে আমি আপনাকে নিজের কার্নেল তৈরি করা থেকে নিরুৎসাহিত করছি, আমি আসলে আপনাকে এটি করতে উত্সাহিত করি। আমি মনে করি আপনার স্ক্র্যাচ থেকে আপনার কার্নেল তৈরি করা এখানে কীভাবে সমস্ত কাজ করে তা শিখার জন্য একটি অমূল্য অনুশীলন। অংশ হিসাবে, সম্ভবত একদিন আপনি প্রয়োজন ব্যতিক্রম হতে হবে । তবে এটি আপনাকে সাধারণভাবে কার্নেল ও বুট প্রক্রিয়া সম্পর্কে অনেক কিছু শেখায়। এটি করার জন্য আপনি আরও ভাল ব্যক্তি হবেন।


1
প্রক্রিয়াটির মানব-পঠনযোগ্য বিবরণের জন্য থ্যাঙ্কয়্যু অনেক। আমার কিছু সন্দেহ আছে। আমার কার্নেল সংকলনটি ভিএমলিনাক্স তৈরি করেছে, ভিএমলিনজ নয়। আমি মনে করি পার্থক্যটি সংক্ষেপণ। আমি কি ম্যানুয়ালি চিত্রটি সংকুচিত করব? কি /vmlinuzরুট ফোল্ডার মধ্যে একটি ডিরেক্টরি? যখন আমি একটি মেক ইনস্টল করব তখন এই ডিরেক্টরিটি তৈরি হবে এবং সেখানে নতুন কার্নেল স্থাপন করা হবে? make modules_installআমার বর্তমানে ইনস্টল করা মডিউলগুলি প্রতিস্থাপন করবে ? ধরুন আমি আমার ভিএমলিনাক্সকে / বুট ডিরেক্টরিতে রেখেছি, আমার কি অন্য কিছু করা দরকার (যেমন গ্রাব কনফিগারেশন ফাইলগুলি সম্পাদনা করা এবং গ্রাব-আপডেট বা তার পরে কিছু করা উচিত?)
অঙ্কুরভিজ

3
আপনি ঠিক বলেছেন, পার্থক্যটি সংক্ষেপণ ression কমান্ড make bzimageএটি কি করে। /vmlinuzএকটি বাইনারি ফাইল, ডিরেক্টরি নয়। আমি প্রায় 5 বছর ধরে কেবল প্যাকেজড কার্নেলগুলি তৈরি করে চলেছি, তাই modules_installসরাসরি ইনস্টল করা কার্নেলের জন্য ঠিক কী আচরণ করা হয়েছে তা আমার মনে নেই । গ্রাব /bootসাহায্য ছাড়াই আপনার কার্নেলটি খুঁজে পাবেন । হ্যাঁ আপনার সর্বদা grub-updateএকটি নতুন কার্নেল ইনস্টল করার পরে চালানো উচিত ।
বাহামাত

আমার make bzimageপরিবর্তে কি করা উচিত ছিল make? আমি একটি যা করতে হবে make cleanএবং make bzimageআবার? দ্বারা /vmlinuzফাইল মানে কী রুট ডিরেক্টরিটি অথবা Linux kernel উৎস ডিরেক্টরির মধ্যে তৈরি হবে?
অঙ্কুরভিজ

1
আপনার কার্নেলটি সংকুচিত হয়েছে কিনা তা সত্যিই গুরুত্বপূর্ণ নয়। সঙ্কুচিত এটি কেবল আরও কিছুটা ডিস্কের জায়গা নেয়। যা কিছু উপসর্গ করা হয় /তা একটি নিখুঁত পাথ, সুতরাং হ্যাঁ এটি মূলের একটি ফাইল।
বাহামত

1
@ গুয়াআভ্রাহাম মডিউলগুলি Yসংকলিত (যেমন, তারা ভিএমলিনুজের অংশ)। উত্তর দেওয়া Mমডিউলগুলি লোডযোগ্য মডিউল হিসাবে সংকলিত হয়। উত্তর দেওয়া মডিউলগুলি Nসংকলিত হয় না। make modules_installকেবলমাত্র যারা উত্তর দিয়েছেন তাদের ক্ষেত্রেই প্রযোজ্য M
বাহামাত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.