কোন ডিভাইস ড্রাইভার কার্নেলের মধ্যে নির্মিত?


14

আমি সম্প্রতি একটি হার্ডওয়্যার ডিভাইসে কোনও বিক্রেতা সরবরাহিত এমবেডড লিনাক্স ইনস্টল করেছি। আমি যখন lsmodডিভাইস কমান্ড লাইনে দৌড়লাম তখন প্রতিক্রিয়াটি খালি ছিল। আমি বিশ্বাস করতে শুরু করি যে এর অর্থ হ'ল ডিভাইসে চলমান হার্ডওয়্যারগুলির জন্য ড্রাইভারগুলি .ko ফাইলগুলির পরিবর্তে কার্নেলের মধ্যে নির্মিত হয়েছিল। আমার প্রশ্নটি হ'ল: এই প্রক্রিয়াটি কীভাবে ঘটে?

জনপ্রিয় হার্ডওয়্যারগুলির জন্য সমর্থনটি পরবর্তী সংস্করণগুলিতে ধীরে ধীরে কার্নেলের সাথে একীভূত করা হয়েছে? .Ko ফাইলগুলি প্রতিস্থাপন করে? মুক্তির সময় কার্নেল ইন্টিগ্রেটেড ড্রাইভার সমর্থন নেই এমন নতুন হার্ডওয়্যার সমর্থন করার জন্য .ko ফাইলটি কি সহজেই ব্যবহৃত হয়? আমার সীমিত জ্ঞানে আমি ভেবেছিলাম যে সমস্ত হার্ডওয়্যার ড্রাইভারগুলি .ko ফাইলের আকারে ছিল তবে স্পষ্টতই এটি ভুল।

আমি পুরো প্রক্রিয়াটি দিয়ে কিছুটা বিভ্রান্ত হয়েছি এবং স্পষ্টতার জন্য কৃতজ্ঞ হব কারণ আমার অনুভূতি রয়েছে যে আমি পরিস্থিতিটিকে ভুল উপায়ে দেখছি।


উত্তর:


10

কর্ণেল লোড করার জন্য গুরুতর বিবেচিত কোর ড্রাইভারগুলি সাধারণত কার্নেলের মধ্যে অন্তর্নির্মিত হয়, অন্য হার্ডওয়্যার ড্রাইভার ইত্যাদি মডিউল বা .ko ফাইল হিসাবে নির্মিত হয় ।

.Ko মডিউল সাধারণত অধীনে সংরক্ষণ করা হয় /libআপনার root পার্টিশনের মধ্যে ডিরেক্টরি। এগুলির যে কোনও ব্যবহারের জন্য, কার্নেলটিকে প্রথমে অন্তর্নিহিত স্টোরেজ ডিভাইসটি সনাক্ত করতে এবং অ্যাক্সেস করতে সক্ষম হতে হবে এবং তারপরে তার ফাইল সিস্টেমটি অ্যাক্সেস করতে হবে। সুতরাং এটি ধরে নেওয়া নিরাপদ যে SATA / SCSI ব্যতীত কার্নেল এবং এটি অন্তর্নির্মিত ext2 / 3/4 সমর্থন করে না কেন এটি সত্যই বুট করবে না;)

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

যদি আপনি নিজের কার্নেল তৈরি করেন তবে আপনি এটি করতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

  • উপরের স্ক্রিনশটে, *একটি বিল্ট-ইন ড্রাইভার Mনির্দেশ করে , যখন একটি মডিউল নির্দেশ করে।
  • লুপব্যাক ডিভাইস সমর্থন, যা প্রায়শই সিস্টেম বুট করার জন্য প্রয়োজনীয়, ডিফল্টরূপে অন্তর্নির্মিত।
  • আপনাকে ইউএসবি স্টিকটি বুট করার অনুমতি দেওয়ার জন্য স্বল্প গতির ইউএসবি ড্রাইভার (ইউএসবি ১.০) পূর্বনির্ধারিতভাবে অন্তর্নির্মিত রয়েছে, তবে এখানে আমি এটি একটি মডিউলে পরিবর্তন করেছি।

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

3

কোনও কার্নেল সংকলন করার সময় , কোন উপাদানগুলি ইনস্টল করা হয়েছে তা আপনাকে কনফিগার করতে হবে । কেবল তা-ই নয়, তবে তারা যে কার্নেলটিতে নির্মিত হয়েছে বা না তারা মডিউল কিনা তা আপনি বেছে নিতে পারেন ।

উদাহরণস্বরূপ, অনেক লোকেরা তাদের / বুট পার্টিশনে ext2 ফাইল সিস্টেম ব্যবহার করে । এ কারণে, বুট করার সময় কার্নেলটি অবশ্যই ext2 ফাইল-সিস্টেম পড়তে সক্ষম হবে। এটি সম্পাদন করার জন্য, ext2 মডিউলটি কার্নেলের মধ্যেই নির্মিত হয়।

এখন, উপলব্ধ মডিউল পরিমাণে কল্পনা করুন। এগুলি সবগুলি আপনার কার্নেলের মধ্যে তৈরি করা কোনও অর্থবোধ করে না, তাই না? এজন্য আপনি এগুলিকে পৃথক .ko মডিউল হিসাবে তৈরি করতে পারেন এবং ইচ্ছামত এগুলি লোড করতে পারেন।


1
হ্যাঁ আপনার শেষ অনুচ্ছেদটি আমার প্রশ্নকে সৎ হতে অনুপ্রাণিত করেছিল। উত্তরের জন্য ধন্যবাদ
গণিতবিদ

1

এগুলি নির্ভর করে আপনি কীভাবে আপনার লিনাক্স কার্নেলটি তৈরি করতে কনফিগার করেছেন।

সংকলনের প্রক্রিয়াটির মধ্যে আপনি সাধারণত:

  • মডিউল সমর্থন বা ছাড়াই কার্নেলটি সঙ্কলন করুন (প্রায়শই এটি মডিউল সমর্থন সহ আসে)
  • ড্রাইভারটিকে মডিউল হিসাবে বা বিল্ট-ইন সফ্টওয়্যারটির টুকরো হিসাবে ঠিক কার্নেলের মধ্যে সংকলন করুন

কোন ফাইল ফাইল কী তা বুঝতে /programming/10476990/differences-between-o-and-ko-file

আপনার খালি আউটপুট চালু lsmodথাকার কারণটি হ'ল আপনার একক একক কার্নেল রয়েছে।

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

find /lib/modules/*/ -type f -iname '*.ko' | less

এর ব্যবহারটি লক্ষ্য করুন less, আপনি যে প্রতিটি পেজার চান তা ব্যবহার করতে পারেন বা আপনি যে যেখানে আউটপুট চান তা পুনর্নির্দেশ করতে পারেন।


সুতরাং মডিউল সমর্থন ব্যতীত কনফিগার করা কোনও কার্নেলের উপর (যেমনটি আমার কাছে মনে হয়) অতিরিক্ত হার্ডওয়্যার ব্যবহার করার জন্য আমি কোনও .co ফাইল আকারে কোনও ড্রাইভার ইনস্টল করতে পারব না?
গণিতবিদ

হ্যাঁ, মূলত আপনাকে উত্স থেকে এটি পুনরায় সংকলন করতে হবে, আপনি যদি এটি সম্পাদনা করতে চান এবং / অথবা আপনাকে এটি পুনর্নির্মাণ করতে হবে তবে সম্ভবত একই .configফাইলটি ব্যবহার করুন এবং এটি আপনার প্রয়োজন অনুসারে সংশোধন করুন।
ব্যবহারকারী 827992

সুতরাং এটি করার জন্য আমার কাছে বিক্রেতার কাছ থেকে কার্নেল উত্সটি পাওয়া দরকার।। কনফিগ ফাইলে সঠিক পরিবর্তন করে নিজেই এটি সংকলন করা উচিত তবে আমি অন্যান্য ড্রাইভার ইনস্টল করা ভাল?
গণিতবিদ

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

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

0

ফাইল / লিবিব / মডিউল / $ (আনম-আরআর) / মডুলিউস.বিল্টিনের সামগ্রীগুলি দেখুন

যেমন একটি নির্দিষ্ট মডিউল জন্য অনুসন্ধান

grep <module> /lib/modules/$(uname -r)/modules.builtin

নথিপত্র / kbuild / kbuild.txt

modules.builtin
--------------------------------------------------
This file lists all modules that are built into the kernel. This is used
by modprobe to not fail when trying to load something builtin.

??? ওপি কী করার কথা তা নিশ্চিত নয় Not তার কি টার্মিনালে প্রথম লাইন চালানোর কথা? এটি উত্তর হতে পারে, তবে আপনি কি দয়া করে কিছুটা বিস্তারিত বলবেন?
বেনামে 2

0
ls /sys/module

মনে হয় সমস্ত অন্তর্নির্মিত এবং বাহ্যিক মডিউল রয়েছে।

এটাও কিছু এন্ট্রির যা আসলে মডিউল নয় রয়েছে বলে মনে হচ্ছে: /unix/225706/are-modules-listed-under-sys-module-all-the-loaded-modules

টোডো: উত্সটি পড়ুন এবং সেখানে কী দেওয়া হয়েছে তা আরও সুনির্দিষ্টভাবে বুঝতে পারেন।

এই পদ্ধতির সুবিধা হ'ল আপনি /bootবা এর অধীনে কার্নেল কনফিগারেশন সন্ধান করতে সক্ষম হওয়ার উপর নির্ভর করেন না /proc/config.gz

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