কীভাবে কাস্টম ওএস তৈরি করতে লিনাক্স উত্স কোড পরিবর্তন করা যায়? [বন্ধ]


15

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

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


তোমার লক্ষ্য কি? আপনি কীভাবে অবদান রাখতে চান?
স্পাইডি

এর (লিনাক্স) উত্স কোডটি পরিবর্তন করে আমার নিজস্ব কাস্টম ওএস তৈরি করতে ... এবং ওএস কীভাবে কাজ করে তা শিখতে এবং মজাদার জন্য
dubex

লিনাক্স নামের কার্নেলটি গ্রু / লিনাক্স নয় (উবুন্টু, দেবিয়ান , রেডহ্যাট, সুস , ইত্যাদি ) তবে লিনাক্স কেবল কার্নেলের মধ্যে একটি, এটি জিএনইউ এবং অন্যান্য অপারেটিং সিস্টেমের সাথে ব্যবহার করা যেতে পারে। আপনি যদি উবুন্টু বা অনুরূপ পরিবর্তন করতে চান তবে এটি লিনাক্স নামের কার্নেলটি পরিবর্তন করার মতো নয়।
ctrl-alt-delor 21

উত্তর:


29

Unix.stackexchange.com এ আপনাকে স্বাগতম!

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

প্রকল্পের ক্ষেত্র সম্পর্কে: একটি অপারেটিং সিস্টেম লেখা সহজ কাজ নয়! এমনকি মিনিক্সের মতো উদ্দেশ্যমূলকভাবে ন্যূনতম ওএসও বেশ জটিল জিনিস! আপনাকে লিনাক্স সম্পর্কে ধারণা দেওয়ার জন্য, আপনি এখন পর্যন্ত যে সি প্রোগ্রাম লিখেছেন সেগুলি সম্পর্কে ভাবুন। গড় বিশ্ববিদ্যালয় কোর্সভার সর্বাধিক কয়েক হাজার লাইনের সি থাকে। আমি মনে করি আমার চূড়ান্ত বছরের প্রকল্পটি সি ++ এর প্রায় 30-35,000 লাইনের ছিল। লিনাক্স কার্নেলটি প্রায় 13,000,000 সি কোডের লাইন।

কেন এটি সব পৃথক ফাইল আছে? যৌক্তিক এবং ব্যবহারিক কারণে মাপযোগ্য প্রকল্পগুলি পৃথক ফাইলে সংরক্ষণ করা হয়। একটি সম্পাদক হিসাবে 13,000,000 লাইন ফাইল লোড করার কথা বিবেচনা করুন! লিনাক্সের মতো বিশাল প্রকল্পটি মোকাবেলার আগে আপনার সি দক্ষতা অবশ্যই সেই বিন্দুতে তৈরি করতে হবে যেখানে 'একাধিক ফাইল' প্রশ্ন নিজেই উত্তর দেয়। আপনার কেবল সি কোডটি পড়তে সক্ষম হওয়া উচিত , এটি কেবল লিখে নাও। (এটি প্রথমে মনে হয় তার চেয়ে শক্ত)

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

আপনি আপনার সি ফু পাওয়ার পরে, অপারেটিং সিস্টেমগুলি বুঝতে পেরেছেন তা নিশ্চিত করুন। এটি আপনাকে কোডটি বুঝতে সহায়তা করবে। সমস্ত লিনাক্স অপরিহার্য নয়। কর্নেলটি বেশ ছোট! এটি কি ফুলে যায়:

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

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

লোকেরা আপনাকে মিনিক্সের প্রস্তাব দেওয়ার কারণটি সহজ: এটি একটি সম্পূর্ণ অপারেটিং সিস্টেম, তবে এটি লিনাক্সের মতো জটিল সিস্টেমের প্রয়োজনের দ্বারা বোঝা হয় না। কোডটি ছোট, তবে এখনও সম্পূর্ণ কার্যকারিতা সরবরাহ করে। সর্বোপরি লিনাক্সের প্রথম সংস্করণগুলি মিনিক্স দ্বারা অনুপ্রাণিত হয়েছিল।

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

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

আপনার লক্ষ্য নির্ধারণ করা উচিত এবং আপনার শর্তাদি যথাযথভাবে সংজ্ঞায়িত করা উচিত । যদি কোনও ওএসের নিজস্ব সংজ্ঞাটি মাইক্রোসফ্টের (একটি জিইউআই এবং একটি সম্পূর্ণ সফ্টওয়্যার স্যুটযুক্ত একটি ওএস) হয় তবে আপনি খুব দীর্ঘ প্রকল্পে যেতে পারেন! সর্বোপরি আমরা এখন কোথায় রয়েছি আমাদের আনতে 1960 এর দশক থেকে কয়েক হাজার মানুষ কাজ করেছে।

অবশেষে, কম্পিউটার সায়েন্টিস্টের যুদ্ধের কান্নার কথা স্মরণ করুন: ' চাকাটি কখনই পুনরুদ্ধার করবেন না! '(শেখার সময় অবশ্যই আমরা ব্যতিক্রম করতে চাই And এবং মজাদার জন্য :))


1
[লিঙ্ক] (www.linuxfromscratch.org) আমার স্বপ্ন পূরণ করবে ... আমার প্রশ্ন আগ্রহ দেখানোর জন্য ধন্যবাদ
dubex

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

ভুল বোঝাবুঝির জন্য দুঃখিত ... তবে এর অর্থ এই নয় যে আমি আমার নিজস্ব কার্নেল তৈরি করব (কারণ আমি খুব মেধাবী নই :))। আমি উত্স কোডে এমন পরিবর্তন আনতে চাই যা এটি অন্যের থেকে আলাদা দেখায় এবং দেখতে এটি আমার নিজস্ব সৃজনশীলতা। উদাহরণস্বরূপ: আমি শব্দ সহ এক ধরণের অ্যানিমেশন চাই (যা আমি তৈরি করেছি), যখন পর্দায় লিনাক্স (উবুন্টু বলে) এতে কিছু ভয়েস সনাক্তকরণ সফ্টওয়্যার ইনস্টল থাকে boot আবারও ধন্যবাদ।
dubex

1
সেক্ষেত্রে, আপনি লিনাক্সের নিজস্ব বিতরণ করছেন, এবং কোনও অপারেটিং সিস্টেম নয়। এলএফএস এর জন্য সঠিক সরঞ্জাম। শুভকামনা!
অ্যালেক্সিয়াস

1
@ অ্যালেক্সিয়াস, খুব ভাল এবং বর্ণনামূলক উত্তর, ধন্যবাদ।
0xAF


4

আমি মনে করি আপনার প্রথম যে জিনিসটি সংজ্ঞায়িত করতে হবে তা হ'ল "আপনি ওএস এ পরিবর্তন করতে চান সেগুলি কি"। আপনি এটি স্থির না করা পর্যন্ত আপনি সত্যই কোথাও পাবেন না। শেখার কোনও "এক পথ" নেই।

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

  • সংস্থান পরিচালনার।
  • হার্ডওয়্যার সাথে যোগাযোগ।

অন্য যে কোন পরিবর্তন একটি ভিন্ন স্তরের উপর ঘটতে পারে কিনা এটা কোর userland ইউটিলিটি (প্রায়ই হিসাবে উল্লেখ করা হচ্ছে utils ), গুই, একটি ডিস্ট্রো মৌলিক অ্যাপস ইত্যাদি

তবে, আপনি এখনও কার্নেলটিতে কিভাবে হ্যাক করবেন তা শিখতে স্থির হয়ে থাকেন, আপনার সম্ভবত এই প্রশ্নটি শুরু করা উচিত , এই সাইটের সর্বোচ্চ ভোট প্রাপ্ত প্রশ্ন;)


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

দিয়ে শুরু @dubex Plymouth শব্দ খেলার জন্য লিনাক্স লাইব্রেরি এবং চেহারা। SDL_mixer একটি সহজ হতে পারে।
সোর্সজেডি

2

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

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