কেন লিনাক্স কার্নেল 15+ মিলিয়ন লাইন কোড? [বন্ধ]


109

এই একতরফা কোড বেসের বিষয়বস্তু কি?

আমি প্রসেসরের আর্কিটেকচার সমর্থন, সুরক্ষা এবং ভার্চুয়ালাইজেশন বুঝতে পারি, তবে আমি ভাবতে পারি না যে .০০,০০০ এর বেশি লাইন বা তার বেশি।

ড্রাইভারগুলি কার্নেল কোড বেসে অন্তর্ভুক্ত করা ?তিহাসিক এবং বর্তমান কারণগুলি কী?

এই 15+ মিলিয়ন লাইনগুলিতে কি প্রতিটি টুকরো হার্ডওয়ারের জন্য প্রতিটি একক ড্রাইভার অন্তর্ভুক্ত রয়েছে? যদি তা হয় তবে তা প্রশ্ন করে, ড্রাইভারগুলি কার্নেলে এমবেড করা এবং হার্ডওয়্যার আইডি থেকে স্বয়ংক্রিয়ভাবে সনাক্ত হওয়া এবং ইনস্টল হওয়া পৃথক প্যাকেজগুলি কেন নয়?

স্টোর-সীমাবদ্ধ বা মেমরি-সীমাবদ্ধ ডিভাইসগুলির জন্য কোডের আকারটি কী কোনও সমস্যার ভিত্তি করে?

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

আপাতদৃষ্টিতে ক্রমবর্ধমান প্রকৃতির কারণে আকারটি 50+ বছরে কোনও সমস্যা হয়ে দাঁড়াবে কি এমন প্রমাণ রয়েছে?

ড্রাইভারগুলি অন্তর্ভুক্ত করার অর্থ এটি হার্ডওয়ার তৈরি হওয়ার সাথে সাথে বৃদ্ধি পাবে।

সম্পাদনা : যারা ভাবেন তাদের কাছে এটি শস্যের প্রকৃতি, কিছু গবেষণার পরে আমি বুঝতে পারি যে এটি সর্বদা হয় না। কার্নেগি মেলনের মাইক্রো কার্নেল মাচকে উদাহরণ হিসাবে 'সাধারণত 10,000 লাইন কোডের অধীনে' তালিকাভুক্ত করা হত বলে কার্নেলটি এত বড় হওয়ার দরকার নেই


9
2012 সালে এটি কেবল চালকদের জন্য 5 মিলিয়নের বেশি লাইন ছিল। বিভিন্ন প্রসেসরের আর্কিটেকচার সমর্থন করার জন্য 1.9 মিলিয়ন লাইন। আরও তথ্য h-online.com/open/features/…
স্টিভ

11
হ্যাঁ আমি একটি ভাষার জন্য একটি সংকলক, লেজিকাল অ্যানালাইজার এবং বাইট কোড জেনারেটর কোড করে রেখেছি এবং এটি সম্পূর্ণ প্লাস পুনরাবৃত্তিকে টানছিল এবং এটি 10,000 টি লাইন নেয় নি।
জোনাথন

5
(এখন এটি দেখুন, এটি প্রায় 2,700 লাইন ছিল)
জোনাথন

4
আপনার make menuconfigবিল্ডিংয়ের আগে কোডটি কতটা সক্ষম / অক্ষম করা যায় তা দেখতে আপনার ডাউনলোড এবং কনফিগার করা উচিত ।
কেসি

6
@ জোনাথনলিডার্স: আমি এলআইএসপি-র জন্য 100 টিরও কম লাইনে ভাষার মতো সম্পূর্ণ সংকলক টুরিং করেছি, টেস্ট প্রোগ্রামগুলি ম্যান্ডেলব্রোট রেন্ডার করে। সর্বদা নির্ভর করে।
ফ্রেসনেল

উত্তর:


43

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

বিকল্প (যা গাছের বাইরে থাকা রক্ষণাবেক্ষণকারীদের ক্ষেত্রে ঘটে থাকে) তা হ'ল প্যাচটিকে কোনও রদবদল করার জন্য তার রক্ষণাবেক্ষণকারীদের দ্বারা পুনরায় সিঙ্ক করতে হবে।

একটি তাত্ক্ষণিক অনুসন্ধানের ফলে গাছের মধ্যে বনাম গাছের বাইরে চালকদের বিকাশের বিষয়ে বিতর্ক তৈরি হয়েছিল

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

এম্বেড থাকা সিস্টেমে লিনাক্সের বিস্তৃত ব্যবহারের ফলে কার্নেল উত্স গাছটি ছোট থাকাকালীন বহু বছর আগে লিনাক্সের তুলনায় স্টাফ ছেড়ে দেওয়ার পক্ষে আরও ভাল সমর্থন তৈরি হয়েছিল। একটি সুপার-ন্যূনতম 4.0 কার্নেল সম্ভবত সুপার-ন্যূনতম 2.4.0 কার্নেলের চেয়ে ছোট।


4
এখন এই কোডটি সমস্ত কোডকে একসাথে যুক্ত করা কেন যুক্তিসঙ্গত তা আমার কাছে বোধগম্য হয়েছে, এটি কম্পিউটার সংস্থান এবং অতিরিক্ত নির্ভরতার ব্যয়ে মানুষের-ঘন্টা সাশ্রয় করে।
জোনাথন

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

1
@ জোনাথনলিডাররা এক্সডিতে আসে, যেন পিসিতে এটি ইনস্টল করার আধুনিক পরিমাপে অতিরিক্ত লাইনগুলি অনেক অতিরিক্ত জায়গা নেয় space
জুনাগা

3
@ জুনাগা: আপনি বুঝতে পেরেছেন যে লিনাক্স খুব পোর্টেবল এবং স্কেলযোগ্য, তাই না? 32MB এম্বেড থাকা সিস্টেমে স্থায়ীভাবে ব্যবহৃত কার্নেল মেমরি 1MB নষ্ট করা একটি বড় বিষয়। উত্স কোড আকার গুরুত্বপূর্ণ নয়, তবে সংকলিত বাইনারি আকার এখনও গুরুত্বপূর্ণ। কার্নেল মেমরিটি পৃষ্ঠাযুক্ত নয়, তাই অদলবদলের জায়গার সাথেও আপনি এটিকে ফিরে পেতে পারবেন না।
পিটার কর্ডেস

1
@ রোল্ফ: এটি বড়, তবে এটি স্প্যাগেটি নয় । এটি বর্তমানে মূল কোড এবং ড্রাইভারগুলির মধ্যে পিছনে পিছনে 2-মুখী নির্ভরতা ছাড়াই বেশ ভাল আর্কিটেক্টেড। কোর কার্নেলটি না ভেঙে চালকদের ছেড়ে দেওয়া যেতে পারে। যখন কোনও অভ্যন্তরীণ ফাংশন বা এপিআই রিফ্যাক্টর হয় তাই ড্রাইভারদের এটিকে অন্যরকমভাবে ব্যবহার করা দরকার, ড্রাইভারদের পরিবর্তনের প্রয়োজন হতে পারে তবে রিফ্যাক্টরিংয়ের জন্য এটি স্বাভাবিক।
পিটার কর্ডেস

79

৩.১৩ বিপরীতে চালিত ক্লক অনুসারে , লিনাক্সের প্রায় 12 মিলিয়ন লাইন কোড।

  • চালকদের মধ্যে 7 মিলিয়ন এলওসি /
  • খিলানে 2 মিলিয়ন এলওসি /
  • কার্নেলের মধ্যে কেবল ১৩৯ হাজার এলওসি /

lsmod | wc আমার ডেবিয়ান ল্যাপটপটিতে রানটাইমের সময় লোড হওয়া 158 মডিউল দেখায়, তাই গতিশীলভাবে মডিউলগুলি লোড করা হার্ডওয়্যারকে সমর্থন করার একটি ব্যবহৃত উপায়।

শক্তিশালী কনফিগারেশন সিস্টেমটি (উদাহরণস্বরূপ make menuconfig) কোন কোডটি সংকলন করতে হবে তা নির্বাচন করতে ব্যবহৃত হয় (এবং আপনার বিন্দুতে আরও বেশি, কোন কোডটি সংকলন করতে হবে না )। এম্বেড থাকা সিস্টেমগুলি তাদের নিজেরাই .configকেবলমাত্র হার্ডওয়ার সমর্থন বিবেচনা করে (কার্নেলের অন্তর্নির্মিত হার্ডওয়্যার সমর্থন করে বা লোডযোগ্য মডিউল হিসাবে অন্তর্ভুক্ত) তাদের নিজস্ব ফাইলটি সংজ্ঞায়িত করে ।


2
find /lib/modules/$(uname -r)/ -name '*.ko' | wcএকটু 3,000 এর উপরে বলে আর FWIW, এই ডেবিয়ান , "সার্বজনীন অপারেটিং সিস্টেম," যা একটি পূর্ণ অপারেটিং সিস্টেম যে কোনো আধুনিক কম্পিউটারের তে কাজ করা উচিত, Linux কার্নেল চারপাশে নির্মিত প্রদান করে।
ড্র্রুবেন

3
মডিউল গণনা যথেষ্ট নয়, অনেকগুলি সম্ভবত কনফিগার দ্বারা নির্মিত
অ্যালেক্স

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

2
@ জোনাথনলিডারস: হ্যাঁ - পাশাপাশি অদ্ভুত ডিভাইসগুলির মডিউলগুলির মধ্যেও অস্পষ্ট ফাইল
সিস্টেমগুলির

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

67

কৌতূহলী যে কারও জন্য, এখানে গিটহাব আয়নাটির লাইনকন্ট বিচ্ছেদ:

=============================================
    Item           Lines             %
=============================================
  ./usr                 845        0.0042
  ./init              5,739        0.0283
  ./samples           8,758        0.0432
  ./ipc               8,926        0.0440
  ./virt             10,701        0.0527
  ./block            37,845        0.1865
  ./security         74,844        0.3688
  ./crypto           90,327        0.4451
  ./scripts          91,474        0.4507
  ./lib             109,466        0.5394
  ./mm              110,035        0.5422
  ./firmware        129,084        0.6361
  ./tools           232,123        1.1438
  ./kernel          246,369        1.2140
  ./Documentation   569,944        2.8085
  ./include         715,349        3.5250
  ./sound           886,892        4.3703
  ./net             899,167        4.4307
  ./fs            1,179,220        5.8107
  ./arch          3,398,176       16.7449
  ./drivers      11,488,536       56.6110
=============================================

driversশূন্যস্থান অনেক অবদান ।


19
ইহা আকর্ষণীয়. আরও আকর্ষণীয় কোডের সম্ভাব্য দুর্বল পয়েন্টগুলি যেখানে প্রোগ্রামাররা বিরক্ত হয়েছিল:grep -Pir "\x66\x75\x63\x6b" /usr/src/linux/ | wc -l
জিম্মিজ

4
@ জিম্মিজ '\ x73 \ x68 \ x69 \ x74' এই যুগোপযোগী (সামান্য তারিখের) গবেষণা অনুসারে বেশি সাধারণ হতে পারে ।
নিক টি

3
এলোমেলো ঘটনা: ওপি দ্বারা অনুমান করা 600 000 এলওসি-র নিকটবর্তী ফোল্ডারটি হ'ল ডকুমেন্টেশন।
ডেভিডমাহ

1
./documentationকোডের 500,000 এর বেশি লাইন আছে? ....কি?
সি_বি

2
@ সি_বি @ ডেভিডম আমি মনে করি এটি একটি সরল wcগণনা, যা "কোডের রেখাগুলির চেয়ে" সংজ্ঞায়িত করা সহজ হওয়ার সুবিধা পেয়েছে :)
ড্রেভবেন

43

উত্তরগুলি এখনও পর্যন্ত "হ্যাঁ প্রচুর কোড রয়েছে" বলে মনে হচ্ছে এবং কেউই সবচেয়ে যুক্তিযুক্ত উত্তর দিয়ে প্রশ্নটি মোকাবেলা করছে না: 15 এম +? তাতে কি? 15M লাইন উত্স কোডটি মাছের দামের সাথে কী করবে? এটিকে এত অকল্পনীয় করে তোলে কী?

লিনাক্স স্পষ্টভাবে প্রচুর করে। অন্য যে কোনও কিছুর চেয়ে অনেক বেশি ... তবে আপনার কিছু পয়েন্ট দেখায় যে এটি তৈরি এবং ব্যবহারের পরে কী হচ্ছে তা আপনাকে সম্মান করে না।

  • সবই সংকলিত হয় না। কার্নেল বিল্ড সিস্টেম আপনাকে কনফিগারেশনগুলি দ্রুত সংজ্ঞা দিতে দেয় যা উত্স কোডের সেট নির্বাচন করে। কিছু পরীক্ষামূলক, কিছু পুরানো, কিছু কেবল প্রতিটি সিস্টেমের জন্য প্রয়োজন হয় না। /boot/config-$(uname -r)(উবুন্টুতে) এর দিকে তাকান make menuconfigএবং আপনি কতটা বাদ পড়েছেন তা দেখতে পাবেন।

    এবং এটি একটি পরিবর্তনশীল-লক্ষ্য ডেস্কটপ বিতরণ এম্বেড থাকা সিস্টেমের জন্য কনফিগারেশন কেবল প্রয়োজনীয় জিনিসগুলিতে টানত।

  • সবকিছু অন্তর্নির্মিত হয় না। আমার কনফিগারেশনে, বেশিরভাগ কার্নেল বৈশিষ্ট্যগুলি মডিউল হিসাবে নির্মিত হয়:

    grep -c '=m' /boot/config-`uname -r`  # 4078
    grep -c '=y' /boot/config-`uname -r`  # 1944
    

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

  • মডিউলগুলি গতিশীলভাবে লোড হয়। এমনকি যখন কোনও সিস্টেমে কয়েক হাজার মডিউল উপলব্ধ থাকে, তখনও সিস্টেম আপনাকে প্রয়োজনীয় জিনিসগুলি লোড করতে দেয়। এর ফলাফলগুলি তুলনা করুন:

    find /lib/modules/$(uname -r)/ -iname '*.ko' | wc -l  # 4291
    lsmod | wc -l                                         # 99
    

    প্রায় কিছুই বোঝা হয় না।

  • মাইক্রোকারেলগুলি একই জিনিস নয়। আপনার লিঙ্ক করা উইকিপিডিয়া পৃষ্ঠার শীর্ষস্থানীয় চিত্রটির দিকে তাকানোর মাত্র 10 সেকেন্ডের মধ্যে তারা হুবহু হ'ল এগুলি সম্পূর্ণ ভিন্ন উপায়ে ডিজাইন করা হয়েছে।

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


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

উবুন্টুর মতো বিতরণের জন্য, একটি একক 40MB কার্নেল প্যাকেজ গ্রহণযোগ্য। না, মাজা, এটি আসলে বাঞ্ছনীয় বৃহদায়তন সংরক্ষণ এবং ডাউনলোড দৃশ্যকল্প যে 4000+ ভাসমান মডিউল পালন যেমন প্যাকেজ হবে হবে। এটি তাদের জন্য ডিস্কের কম স্থান ব্যবহার করে, সংকলন-সময়ে প্যাকেজ করা সহজ, সংরক্ষণ করা সহজ এবং তাদের ব্যবহারকারীর জন্য (যাদের সবেমাত্র কাজ করে এমন একটি সিস্টেম রয়েছে)।

ভবিষ্যতও কোনও বিষয় বলে মনে হয় না। সিপিইউ গতি, ডিস্ক ঘনত্ব / মূল্য এবং ব্যান্ডউইথ উন্নতির হার কার্নেলের বৃদ্ধির চেয়ে অনেক দ্রুত বলে মনে হচ্ছে। 10 বছরে 200MB কার্নেল প্যাকেজটি যদি বিশ্ব হয় তবে শেষ হবে না।

এটিও একমুখী রাস্তা নয়। কোডটি বজায় না রাখলে লাথি মেরে ফেলা হবে।


2
উদ্বেগ মূলত এমবেডড সিস্টেমগুলির জন্য। আপনি যেমন দেখান, আপনার 4,000 মডিউল আপনার নিজস্ব সিস্টেমে ব্যবহৃত হচ্ছে না। কিছু ছোট রোবোটিকস বা এরোস্পেস অ্যাপ্লিকেশনগুলিতে (READ: সাধারণ উদ্দেশ্য কম্পিউটিং নয়) এটি অগ্রহণযোগ্য বর্জ্য হবে।
জোনাথন

2
@ জোনাথনলিডার্স আমি মনে করি আপনি এগুলি নিরাপদে মুছতে পারেন। ডেস্কটপ ইনস্টলে, আপনি হঠাৎ করে ইউএসবি পোর্টে কিছু প্লাগ করে, বা কিছু হার্ডওয়্যার কনফিগারেশন ইত্যাদি পরিবর্তন করার ক্ষেত্রে সেগুলি সেখানে রয়েছে
ডিডিয়ার এ।

1
হ্যাঁ অবশ্যই. আমি এখনও মত এ লেখা হয় "আপনি যে কোনো সময় তাই আমরা প্রয়োজন কোডের 15 টি লাইন একটি USB ডিভাইস প্লাগ ইন পারে" অনুমানের বিস্মিত থাকা কার্নেল লিনাক্স যেমন এইজন্য স্তর এবং ডিস্ট্রো পর্যায়ে না, ফোন জেডি বিভিন্ন ব্যবহার করা হয় এম্বেড করা ডিভাইস ঠিক আছে, আমি অনুমান করি যে ডিস্ট্রো তার নিজস্ব তালিকাটি মুছে ফেলবে। আমি কেবল প্লাগিবিলিটির পক্ষে সমর্থনটি অ্যাডিটিভ এবং সাবটেক্টিভের মতো না হওয়া উচিত বলে মনে করি, যেমন একটি ডিস্ট্রো প্যাকেজ উত্স যুক্ত করে এটির মধ্যে 'অপ্ট-ইন' করবে, যেমন কার্নেলকে বর্তমান আকারের এক শতাংশ বলে উল্লেখ করে এম্বেড করা এআরএম কনফিগারেশনগুলির বিপরীতে
জোনাথন

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

3
এটি অন্যথায় ভাল / মূল্যবান উত্তর পৃথকভাবে রাগান্বিত এবং ঝাঁকুনির স্বরে ভোগে। -1।
টাইপিয়া

19

লিনাক্স tinyconfig সংকলিত উত্স লাইন গণনা tinyconfig বুদ্বুদ গ্রাফ SVG (বেহালার)

কার্নেল বিল্ড থেকে জসন তৈরি করতে শেল স্ক্রিপ্ট , http://bl.ocks.org/mbostock/4063269 দিয়ে ব্যবহার করুন


সম্পাদনা : দেখা গেছে unifdefকিছু সীমাবদ্ধতা রয়েছে ( -Iউপেক্ষা করা এবং -includeঅসমর্থিত, পরবর্তীটি উত্পন্ন কনফিগারেশন শিরোনাম অন্তর্ভুক্ত করতে ব্যবহৃত হয়) ব্যবহার catকরে খুব বেশি পরিবর্তন হয় না:

274692 total # (was 274686)

স্ক্রিপ্ট এবং পদ্ধতি আপডেট হয়েছে।


ড্রাইভার, খিলান ইত্যাদির পাশাপাশি প্রচুর শর্তযুক্ত কোড সংকলিত বা নির্বাচিত কনফিগারেশনের উপর নির্ভর করে না, কোডটি গতিশীল লোডযুক্ত মডিউলগুলিতে প্রয়োজনীয় নয় তবে মূলটিতে নির্মিত।

সুতরাং, ডাউনলোড করা লিনাক্স -৪.১. sources উত্সগুলি , টিনকনফিগটি বেছে নিয়েছে , এটি মডিউলগুলি সক্ষম করে না এবং আমি সততার সাথে জানি না এটি কী সক্ষম করে বা কোনও ব্যবহারকারী রানটাইমে এটি দিয়ে কী করতে পারে, যাইহোক, কার্নেলটি কনফিগার করে:

# tinyconfig      - Configure the tiniest possible kernel
make tinyconfig

কার্নেল নির্মিত

time make V=1 # (should be fast)
#1049168 ./vmlinux (I'm using x86-32 on other arch the size may be different)

কার্নেল বিল্ড প্রক্রিয়া ফাইলগুলি *.cmdতৈরি .oকরতে, সেই ফাইলগুলি প্রক্রিয়া করতে এবং script.shনীচে লক্ষ্য এবং নির্ভরতা অনুলিপিটি বের করতে এবং নীচের সাথে এটি ব্যবহার করার জন্য ব্যবহৃত কমান্ড লাইনের সাথে লুকানো ফাইলগুলি রেখে দেয় :

find -name "*.cmd" -exec sh script.sh "{}" \;

এই লক্ষ্য প্রতিটি নির্ভরতা জন্য একটি অনুলিপি তৈরি .oনামে.o.c

.c কোড

find -name "*.o.c" | grep -v "/scripts/" | xargs wc -l | sort -n
...
   8285 ./kernel/sched/fair.o.c
   8381 ./kernel/sched/core.o.c
   9083 ./kernel/events/core.o.c
 274692 total

.H শিরোনাম (স্যানিটাইজড)

make headers_install INSTALL_HDR_PATH=/tmp/test-hdr
find /tmp/test-hdr/ -name "*.h" | xargs wc -l
...
  1401 /tmp/test-hdr/include/linux/ethtool.h
  2195 /tmp/test-hdr/include/linux/videodev2.h
  4588 /tmp/test-hdr/include/linux/nl80211.h
112445 total

@ জোনাথনলিডাররা এতে কাজ করতে মজা
অ্যালেক্স

9

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

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

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


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

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

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

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