লিনাক্স কার্নেল কীভাবে নিজেই সংকলন করতে পারে?


89

আমি যখন আমার মেশিনে লিনাক্স সিস্টেম ইনস্টল করি তখন আমি লিনাক্স কার্নেলের সংকলন প্রক্রিয়াটি বেশ বুঝতে পারি না।

এখানে কিছু জিনিস আমাকে বিভ্রান্ত করেছে:

  1. কার্নেলটি সিটিতে লেখা হয়, তবে কোনও সংকলক ইনস্টল না করে কার্নেলটি কীভাবে সংকলিত হয়?
  2. কার্নেল সংকলনের আগে আমার মেশিনে সি সংকলক ইনস্টল করা থাকলে, সংকলক ইনস্টল না করে কীভাবে সংকলক নিজেই সংকলন করতে পারে?

আমি বেশ কয়েকদিন এত বিভ্রান্ত হয়ে পড়েছিলাম, প্রতিক্রিয়াটির জন্য ধন্যবাদ।


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

উত্তর:


208

আপনার লিনাক্স বাক্সের জন্য বাইনারিগুলির প্রথম রাউন্ডটি অন্য কয়েকটি লিনাক্স বাক্সে নির্মিত হয়েছিল (সম্ভবত)।

প্রথম লিনাক্স সিস্টেমের বাইনারিগুলি অন্য কোনও প্ল্যাটফর্মে নির্মিত হয়েছিল ।

সেই কম্পিউটারের বাইনারিগুলি তাদের মূলটিকে অন্য একটি প্ল্যাটফর্মের উপর নির্মিত একটি মূল সিস্টেমে ফিরে যেতে পারে ।

...

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

...

চাপ দিতে থাকুন এবং আপনি কম্পিউটারগুলি তৈরির সন্ধান করেছেন যাতে মেশিনের সামনের প্যানেলে সুইচ সেট করে তাদের নির্দেশাবলী প্রবেশ করা যায়

খুব দুর্দান্ত জিনিস।

নিয়মটি হ'ল "সরঞ্জামগুলি তৈরির জন্য সরঞ্জামগুলি তৈরি করার সরঞ্জামগুলি তৈরি করুন ..."। সরঞ্জামগুলির মতো যা আমাদের শারীরিক পরিবেশকে চালিত করে। "বুটস্ট্র্যাপ দ্বারা নিজেকে টানতে" নামেও পরিচিত।


4
অগত্যা অশুচি নয়। সবেমাত্র বিনা প্রতিরোধী। প্রথম সংকলক 386-এ কাজ করার জন্য অপ্টিমাইজ হবে, তবে আপনার যা কিছু আর্কিটেকচার রয়েছে তার জন্য পুনরায় সংযুক্ত সংস্করণটি অপ্টিমাইজ করা হবে।
ব্রেটন

4
আপনি একটি তৃতীয় স্তর যোগ করতে পারেন, সবকিছু ঠিক থাকলে দ্বিতীয় পর্যায়ে আউটপুট তৃতীয় পর্যায়ের আউটপুট সমান হওয়া উচিত।
ইসমাইল

27
এটি কেবল সফ্টওয়্যারই নয়, এটি হার্ডওয়ারও। কম্পিউটার ছাড়া পি 4 (বা একটি 486) এর মতো কোনও কিছু তৈরি করা যায় না।
বিসিএস 5

4
@ বিবিএস: ওহ, হ্যাঁ আমরা এই মুহূর্তে পৌঁছেছি যেগুলি হ'ল সফ্টওয়্যার এবং হার্ডওয়্যার সরঞ্জামগুলি গভীরভাবে আন্তঃসংযোগযুক্ত এবং পরস্পর নির্ভরশীল।
ডিএমকেকে --- প্রাক্তন মডারেটর বিড়ালছানা

4
"একটি জটিল সিস্টেম যা কাজ করে তা হ'ল এটি একটি সাধারণ সিস্টেম থেকে বিবর্তিত হয়েছে যা কাজ করে।" en.wikipedia.org/wiki/Gall's_law
ajuc

33

আমি মনে করি আপনার মধ্যে পার্থক্য করা উচিত:

সংকলন , ভি: উত্স কোড প্রসেস করতে এবং এক্সিকিউটেবল কোড তৈরি করতে একটি সংকলক ব্যবহার করতে [1]

এবং

ইনস্টল করুন , ভি: ব্যবহারের জন্য কিছু সংযুক্ত করতে, সেট আপ করতে বা প্রস্তুত করতে কিছু [2]

সংকলন উত্স কোড থেকে বাইনারি এক্সিকিউটেবল উত্পাদন করে। ইনস্টলেশন কেবল সেই বাইনারি এক্সিকিউটেবলগুলিকে পরে চালানোর জন্য সঠিক জায়গায় রাখে। সুতরাং, বাইনারিগুলি উপলব্ধ থাকলে ইনস্টলেশন ও ব্যবহারের জন্য সংকলনের প্রয়োজন হয় না। অনুরূপভাবে "রান্না" এবং "পরিবেশন করুন" সম্পর্কে "সংকলন" এবং "ইনস্টল" সম্পর্কে ভাবেন।

এখন, আপনার প্রশ্নগুলি:

  1. কার্নেলটি সিটিতে লেখা হয়, তবে কোনও সংকলক ইনস্টল না করে কার্নেলটি কীভাবে সংকলিত হয়?

কার্নেলটি সংকলক ব্যতীত সংকলন করা যায় না, তবে এটি একটি সংকলিত বাইনারি থেকে ইনস্টল করা যেতে পারে ।

সাধারণত, আপনি যখন কোনও অপারেটিং সিস্টেম ইনস্টল করেন, আপনি একটি প্রাক-সংকলিত কার্নেল (বাইনারি এক্সিকিউটেবল) ইনস্টল করেন। এটি অন্য কেউ संकलित করেছিলেন। এবং কেবলমাত্র আপনি যদি কার্নেলটি নিজেই সংকলন করতে চান তবে আপনার উত্স এবং সংকলক এবং অন্যান্য সমস্ত সরঞ্জামের প্রয়োজন।

এমনকি "উত্স-ভিত্তিক" বিতরণগুলিতেও আপনি কোনও সংকলিত বাইনারি চালানো থেকে শুরু করুন gent

সুতরাং, আপনি কার্নেলগুলি সংকলন না করে আপনার পুরো জীবন বাঁচতে পারেন, কারণ আপনি সেগুলি অন্য কারও দ্বারা সংকলিত করেছেন।

  1. কার্নেল সংকলনের আগে আমার মেশিনে সি সংকলক ইনস্টল করা থাকলে, সংকলক ইনস্টল না করে কীভাবে সংকলক নিজেই সংকলন করতে পারে?

কোনও কার্নেল (ওএস) না থাকলে সংকলকটি চালানো যাবে না। তাই সংকলকটি চালানোর জন্য একটিকে একটি সংকলিত কার্নেল ইনস্টল করতে হবে , তবে কার্নেলটি নিজেই সংকলন করার প্রয়োজন নেই ।

আবার, সর্বাধিক প্রচলিত অভ্যাসটি হ'ল সংকলকটির সংকলিত বাইনারিগুলি ইনস্টল করা এবং সেগুলি অন্য কোনও সংকলন করতে ব্যবহার করুন (সংকলক নিজে এবং কার্নেল সহ)।

এখন মুরগি ও ডিমের সমস্যা প্রথম বাইনারিটি অন্য কারও দ্বারা সংকলিত হয়েছে ... ডেমকির একটি দুর্দান্ত উত্তর দেখুন।


14

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

তাদের সফ্টওয়্যার একটি ডেস্কটপ মেশিনে বিকাশিত হয় এবং এটি একবার সংকলিত হয়ে গেলে অনুলিপি করে।

যদি এই ধরণের জিনিসটি আপনার আগ্রহী, তবে আমার মাথার উপরের অংশটি মনে পড়ার একটি নিবন্ধটি হ'ল: বিশ্বাসের উপর প্রতিচ্ছবি ( পিডিএফ ), এটি একটি দুর্দান্ত এবং মজাদার।


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

12

কার্নেল নিজেই সংকলন করে না - এটি ইউজারস্পেসে সি সংকলক দ্বারা সংকলিত। বেশিরভাগ সিপিইউ আর্কিটেকচারে, সিপিইউতে বিশেষ রেজিস্টারগুলিতে প্রচুর পরিমাণে বিট থাকে যা বর্তমানে চলমান কোডটির কী সুবিধা রয়েছে তা উপস্থাপন করে। X86-এ, কোড সেগমেন্টে (সিএস) রেজিস্টারটিতে এগুলি হ'ল বর্তমান সুবিধা স্তরের বিট (সিপিএল) । সিপিএল বিটগুলি যদি 00 হয় তবে বলা হয় যে কোডটি সুরক্ষা রিং 0 তে চলছে , এটি কার্নেল মোড নামেও পরিচিত । যদি সিপিএল বিটগুলি 11 হয় তবে বলা হয় যে কোডটি সুরক্ষা রিং 3-এ চলছে , এটি ব্যবহারকারী মোড হিসাবেও পরিচিত । অন্য দুটি সংমিশ্রণ, 01 এবং 10 (সুরক্ষা রিং যথাক্রমে 1 এবং 2) খুব কম ব্যবহৃত হয়।

কার্নেল মোড বনাম ব্যবহারকারী মোডে কোড কী করতে পারে এবং কী করতে পারে সে সম্পর্কে নিয়মগুলি জটিল তবে এটিকে বলার অপেক্ষা রাখে না যে ব্যবহারকারী মোড বিশেষত সুবিধাগুলি হ্রাস করেছে।

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

সি সংকলক এই জাতীয় প্রোগ্রামের একটি উদাহরণ - এটি কার্নেল মোড দ্বারা প্রদত্ত অতিরিক্ত সুবিধাগুলির প্রয়োজন হয় না, তাই এটি অন্যান্য প্রোগ্রামগুলির মতো ব্যবহারকারী মোডে চলে runs

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

আপনি যখন কোনও নতুন সিস্টেমে লিনাক্স ইনস্টল করেন, আপনি সাধারণত কোনও শারীরিক মিডিয়া (যেমন একটি সিডি ডিভিডি) বা নেটওয়ার্ক থেকে প্রাক্পম্পাইল্ড বাইনারি চিত্র ইনস্টল করেন। বিআইওএস মিডিয়া বা নেটওয়ার্ক থেকে কার্নেলের বুটলোডার (বাইনারি চিত্রের) লোড করবে এবং তারপরে বুটলোডার আপনার হার্ড ডিস্কে (এর বাইনারি চিত্রের) কার্নেল ইনস্টল করবে। তারপরে, আপনি পুনরায় বুট করার সময়, BIOS আপনার হার্ড ডিস্ক থেকে কার্নেলের বুটলোডারটি লোড করে এবং বুটলোডার কার্নেলটিকে মেমরিতে লোড করে এবং আপনি বন্ধ হয়ে চলেছেন।

আপনি যদি নিজের কার্নেলটি পুনরায় সংকলন করতে চান তবে এটি সামান্য কৌশলযুক্ত তবে এটি করা যেতে পারে।


5

প্রথমে কোনটি ছিল? মুরগি নাকি ডিম?

ডাইনোসরগুলির সময় থেকেই ডিমগুলি প্রায় ছিল ..

..সুখে মুরগি আসলে বড় প্রাণীদের বংশধর বলে সবকিছু বিভ্রান্ত করে তোলে ... দীর্ঘ গল্পের সংক্ষিপ্ত: প্রযুক্তি (ডিম) বর্তমান পণ্যটির আগে (চিকেন) বিদ্যমান ছিল

কার্নেল তৈরি করতে আপনার কার্নেল প্রয়োজন, অর্থাত আপনি অন্যটির সাথে একটি তৈরি করেন।

প্রথম কার্নেলটি আপনি চান এমন কিছু হতে পারে (পছন্দসই কিছু বুদ্ধিমান যা আপনার পছন্দসই শেষ পণ্যটি তৈরি করতে পারে ^ __ ^)

ব্রানের কার্নেল ডেভেলপমেন্টের এই টিউটোরিয়ালটি আপনাকে একটি ছোট্ট কার্নেল বিকাশ করতে এবং তৈরি করতে শেখায় যা আপনি নিজের পছন্দসই একটি ভার্চুয়াল মেশিনের মাধ্যমে পরীক্ষা করতে পারবেন।

অর্থ: আপনি কার্নেল লিখে কোথাও কম্পাইল করে কোনও খালি (কোনও OS নেই) ভার্চুয়াল মেশিনে পড়েন।

এই লিনাক্স ইনস্টলগুলির সাথে যা ঘটেছিল তা যুক্ত জটিলতার সাথে একই ধারণা অনুসরণ করে।


5

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

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

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


1

আমি যদি আপনার প্রশ্নটি সঠিকভাবে বুঝতে পারি কার্নেল আজকাল "নিজেকে সংকলন" করছে না। বর্তমানে বেশিরভাগ লিনাক্স বিতরণ একটি লিনাক্স লাইভ সিডির মাধ্যমে সিস্টেম ইনস্টলেশন সরবরাহ করে installation কার্নেলটি সিডি থেকে মেমোরিতে লোড করা হয় এবং এটি যেমন ডিস্কে ইনস্টল করা থাকে তেমনভাবে পরিচালনা করে। আপনার সিস্টেমে একটি লিনাক্স পরিবেশ এবং চলমান আপনার ডিস্কে প্রয়োজনীয় ফাইলগুলি প্রতিশ্রুতিবদ্ধ করা সহজ।

আপনি যদি বুটস্ট্র্যাপিংয়ের বিষয়ে কথা বলছিলেন; এটি খুব সুন্দর করে প্রকাশ করেছেন ডিএমেকে।

কেবল আরেকটি সম্ভাবনা দেওয়া হচ্ছে ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.