منبع اصلی نوشتار زیر در این لینک قرار دارد

روگذری‌بر ماژول‌ها و کرنل‌ها

سلام

همه می‌دونیم که مهمترین بخش هر سیستم‌عاملی کرنل اون هست به طوریکه قبل از همه‌ی پروسه‌های مربوط به سیستم‌عامل اجرا شده و در حافظه قرار می‌گیره. کرنل شامل بخش‌های مختلفی هست که افزایش اونها باعث بالا رفتن حجم کرنل می‌شه. کرنل یک تکه با حجم بالا مشکلات زیادی برای سیستم بوجود می‌آره که ازجمله‌ی آنها می‌شه به موارد زیر اشاره کرد:

۱. حجم بالای کرنل هنگام بارگذاری اون در حافظه‌ی اندک باعث بروز مشکل‌های متعددی میشه.
۲. اگر قسمتی از کرنل به مشکل بر بخوره کل کرنل به مشکل بر‌می‌خوره.
۳. اگر لازم باشد قسمتی به/از کرنل اضافه/کم کنیم مجبوریم کرنل رو از سر کامپایل کنیم.
۴. …

به این نوع کرنل، کرنل یکپارچه یا monolithic گفته می‌شه. برای حل این مشکلات معماری ریز هسته یا microkernel شکل گرفت که فقط شامل درخواست‌های سیستمی اولیه و ابتدایی هست که برای همه‌ی سرویس‌های سیستم‌عامل مورد نیازه. بقیه‌ی کارهایی که باید توسط کرنل انجام بشه به شکل ماژول به آن پیوست می‌شن.

کرنل مورد استفاده‌ی لینوکس‌های فعلی رو می‌شه ترکیبی از معماری یکپارچه و ریز هسته دونست.

در این حالت اگر یک ویژگی مورد نیاز نباشه به راحتی می‌شه اون رو از کرنل جدا کرد یا ویژگی جدیدی را با ضمیمه کردن ماژول مربوطه به آن اضافه کرد، بدون نیاز به کامپایل و … .

برای لود کردن یک ماژول بر روی کرنل از دستور insmod استفاده می‌کنیم که نام و مسیر دقیق ماژول را به صورت آرگومان دریافت می‌کنه.

insmod /path/to/module

برخی ماژول‌ها برای کار به ماژول‌های دیگه‌ای وابستن به صورتی که باید قبل از لود ماژول در حافظه لود شده باشند. برای پیدا کردن پیشنیاز‌های یک ماژول می‌تونیم از دستور modinfo استفاده کنیم. این دستور اطلاعات مربوط به ماژول مورد نظر را اعم از پیشنیاز‌ها و مسیر ماژول را به نمایش می‌زاره. سر و کله زدن با یک ماژول یک طرف سر و کله زدن با پیشنیاز‌های یک ماژول یه ذره اون‌ورتر. برای همین دستور moprobe ایجاد شده. کار این دستور اضافه یا کم کردن ماژول از کرنله بدون اینکه نیازی به دونستن پیشنیاز‌ها یا مسیر یک ماژول باشه. modprobe این کار رو با استفاده از یک فایل که مسیر و پیشنیاز‌های مربوط به همه‌ی ماژول‌ها رو داخل خودش داره انجام می‌ده. اسم این فایل modules.dep هست و در مسیر زیر قرار داره:

/lib/modules/kernel-release

نکته: یه جای عبارت kernel-release خروجی دستور

uname -r

رو وارد کنید.

بعد از هر نصب یا پاک کردن ماژولی نیاز هست که این فایل آپدیت بشه و بهتره که با دستور depmod که مخصوص ایجاد این فایله این کار انجام بشه نه با ویرایش دستی.

 



برچسب ها : , , , , , , , , , , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد