در این مطلب از آریانت به سراغ نحوه استفاده از فرمان modprobe در لینوکس رفته‌ایم. هسته لینوکس دارای یک ساختار ماژولار و انعطاف‌پذیر است. همین ویژگی باعث می‌شود که کارآیی‌های آن با کمک ماژول‌ها یا درایورها افزایش یابد. فرمان modprobe ابزاری است که می‌توان با آن ماژول‌های لینوکس را اضافه و یا کم کرد. این فرمان عملکرد هوشمندانه‌ای دارد و می‌تواند هر ماژول مستقلی را به صورت اتوماتیک و هوشمند اضافه کند.

هسته لینوکس از modprobe برای درخواست ماژول‌ها استفاده می‌کند. فرمان modprobe در میان دایرکتوری‌های نصب ماژول‌های استاندارد جستجو کرده و درایورهای موردنیاز در این خصوص را پیدا می‌کند.

در ادامه، نحوه استفاده از modprobe برای اضافه یا حذف ماژول‌های هسته لینوکس را بررسی می‌کنیم. با ما همراه باشید.

پیش‌نیازها

  • یک سیستم در حال اجرای لینوکس
  • دسترسی به خط فرمان یا ترمینال
  • حساب کاربری با مجوز‌ sudo یا روت

تعریف قالب فرمان modprobe

تمام فرمان‌های modprobe نیازمند دسترسی sudo هستند. قالب کلی برای استفاده از modprobe از قرار زیر است:


sudo modprobe <options> <module name>

فرمان modprobe به صورت پیش‌فرض تنها یک ماژول اضافه می‌کند. در صورتی که قصد اضافه‌کردن ماژول‌های چندگانه را دارید می‌توانید از گزینه -a یا -all استفاده کنید.


sudo modprobe <options> -a <first module name> <second module name>

گزینه‌های فرمان modprobe

گزینه‌های این فرمان بر اساس نوع استفاده از آنها به چند دسته تقسیم می‌شوند.

گزینه‌های مدیریتی

گزینه‌های مدیریتی در هنگام وارد کردن یا برداشتن ماژول‌ها با فرمان modprobe امکان کنترل شرایط مختلف را فراهم می‌کنند.

گزینه‌های مدیریتی
–all  -a امکان فعال‌سازی ماژول‌های چندگانه برای ورود یا حذف همزمان
–remove -r حذف یک ماژول. کاربردی برای حذف ماژول‌های معیوب
–resolve-alias -R جستجو و چاب تمام ماژول‌هایی که مطابق با یک عنوان خاص هستند.
–first-time چاپ خطا برای ماژول‌هایی که به تازگی وارد یا برداشته شده‌اند.
–ignore-install –ignore-remove -i نادیده گرفتن فرمان‌های نصب یا حذف نوشته‌شده در ماژول در هنگام وارد کردن یا برداشتن یک ماژول
–use-blacklist -b وارد کردن به لیست سیاه. ماژول‌هایی که در این لیست وارد می‌شوند، به صورت خودکار بارگذاری نخواهند شد.
–force -f اجبار به ورود یا حذف یک ماژول در هنگام بروز خطای نسخه ماژول. همین موضوع برای گزینه‌های –force-modversion و –force-vermagic نیز صدق می‌کند. با احتیاط از آن استفاده کنید.
–force-modversion نادیده‌گرفتن نسخه ماژول در هنگام ورود یا حذف.
–force-vermagic نادیده‌گرفتن ورژن مجیک در هنگام ورود یا حذف.

گزینه‌های کوئری

گزینه‌های کوئری برای فرمان modprobe اطلاعاتی در مورد تنظیمات و متعلقات ارائه می‌دهند.

گزینه‌های کوئری
–show-depends -D تهیه لیست لیست به همراه فایل‌های متعلق به آنها (در صورت وجود). متعلقات نصب‌شده با یک ماژول معمولاً با پسوند “install” همراه هستند.
–showconfig  –show-config -c چاپ تنظیمات کنونی و خروج.
–show-modversions –dump-modversions نمایش اطلاعات مربوط به نسخه ماژول

گزینه‌های کلی

گزینه‌های کلی باعث تنظیمات در خروجی فرمان modprobe، موقعیت ماژول و نسخه‌های آن می‌شوند.

گزینه‌های کلی‍
–dry-run   –show    -n عدم ورود یا حذف و در عین حال چاپ خروجی
–config=<file name>     -C هم‌پوشانی تنظیمات پیش‌فرض (/etc/modprobe.d) با <file name>
–dirname=<directory>   -d استفاده از <directory> به عنوان ریشه فایل‌سیستم برای ماژول‌های /lib/
–set-version=<version>  -S استفاده از نسخه خاص هسته به جای uname
–syslog -s چاپ پیغام‌های خطا در قالب syslog به جای خطای استاندارد stderr. وقتی stderr در دسترس نباشد، خطاها به صورت خودکار در syslog چاپ می‌شوند.
–quiet -q عدم‌نمایش پیغام‌های خطا
–verbose -v فعال‌کردن نمایش تعداد بیشتری از پیغام‌ها. modprobe تنها پیغام‌های حاکی از بروز یک مشکل را نشان می‌دهد.
–version -V نمایش نسخه modprobe
–help -h نمایش پیغام‌های راهنما با تمام فرمان‌های لیست‌شده.

 

مثال‌های از کاربرد فرمان modprobe

به صورت پیش‌فرض، تمام ماژول‌های هسته در دایرکتوری سیستم /lib/modules در فایل‌های .ko (kernel object) لیست می‌شوند. با کمک فرمان زیر می‌توانید تمام ماژول‌های در دسترسی برای نسخه کنونی هسته لینوکس را پیدا کنید.


find /lib/modules/$(uname -r) -type f -name ’*.ko*’ | more

خروجی فرمان find در پیدا کردن ماژول‌های در دسترس

خروجی فرمان find در پیدا کردن ماژول‌های در دسترس

نکته: حتماً نسخه‌های قدیمی‌تر هسته را از نصب خارج کنید.

اضافه‌کردن ماژول‌های هسته با کمک فرمان modprobe

۱) اضافه‌کردن یک ماژول با فرمان modprobe


sudo modprobe <module name>

به عنوان نمونه:


sudo modprobe torture

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

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

۲) تأیید ماژول بارگذاری‌شده.


sudo modprobe <module name> --first-time

در خروجی یک پیغام خطا مشاهده می‌کنید که نشان از نصب قبلی ماژول در هسته دارد.

خروجی ترمینال اضافه‌کردن ماژول با modprobe با خطای --first-time

خروجی ترمینال اضافه‌کردن ماژول با modprobe با خطای –first-time

به جای آن، می‌توانید ماژول را در لیست ماژول‌های فعال با کمک lsmod جستجو کنید.


lsmod | grep <module name>

به عنوان مثال:


lsmod | grep torture

خروجی ترمینال lsmod و grep ماژول

خروجی ترمینال lsmod و grep ماژول

حذف ماژول‌های هسته با فرمان modprobe

۱) حذف یک ماژول با استفاده از فرمان modprobe -r


sudo modprobe -r <module name>

به عنوان مثال:


sudo modprobe -r torture

۲) تأیید حذف ماژول با تایپ فرمان زیر:


sudo modprobe -r <module name> --first-time

در اینجا، با پیغام خطایی مبنی بر عدم وجود ماژول در هسته روبرو می‌شوید.

خروجی حذف ماژول با  فرمان modprobe -r --first-time

خروجی حذف ماژول با  فرمان modprobe -r –first-time

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


lsmod | grep <module name>

در نتیجه، ماژول حذف‌شده در لیست بارگذاری‌شده نخواهد بود.

جمع‌بندی

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