MODPROBE(8) modprobe MODPROBE(8)

modprobe - افزودن و حذف ماژول‌ها از هسته لینوکس

modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [modulename]
[module parameters...]

modprobe [-r] [-v] [-n] [-i] [modulename...]

modprobe [-c]

modprobe [--dump-modversions] [filename]

دستور modprobe به شکلی هوشمندانه ماژولی را به هسته لینوکس اضافه یا از آن حذف می‌کند: توجه داشته باشید که جهت راحتی، هیچ تفاوتی میان _ و - در نام ماژول‌ها وجود ندارد (تبدیل خودکار خط تیره به زیرخط انجام می‌شود). دستور modprobe در دایرکتوری ماژول‌ها یعنی /usr/lib/`uname -r` به دنبال تمام ماژول‌ها و فایل‌های دیگر می‌گردد، به جز فایل‌های پیکربندی اختیاری (به modprobe.d(5) مراجعه کنید). همچنین modprobe از گزینه‌های ماژول که در خط فرمان هسته به صورت <module>.<option> مشخص شده‌اند و فهرست‌های سیاه (blacklists) به صورت modprobe.blacklist=<module> استفاده خواهد کرد.

توجه داشته باشید که برخلاف سری هسته‌های لینوکس 2.4 (که توسط این ابزار پشتیبانی نمی‌شوند)، این نسخه از modprobe هیچ کاری روی خود ماژول انجام نمی‌دهد: وظیفه تفکیک نمادها (resolving symbols) و درک پارامترها در داخل هسته انجام می‌گیرد. بنابراین خرابی یا شکست ماژول گاهی با پیامی از سمت هسته همراه است: به dmesg(8) مراجعه کنید.

دستور modprobe انتظار دارد یک فایل به‌روز modules.dep.bin وجود داشته باشد که توسط ابزار متناظر depmod همراه با modprobe تولید شده است (به depmod(8) مراجعه کنید). این فایل ماژول‌های دیگری را که هر ماژول به آن‌ها نیاز دارد (در صورت وجود) فهرست می‌کند و modprobe از آن برای اضافه یا حذف خودکار این وابستگی‌ها استفاده می‌نماید.

اگر هرگونه آرگومانی پس از modulename داده شود، به هسته ارسال خواهد شد (علاوه بر هر گزینه‌ای که در فایل پیکربندی ذکر شده است).

هنگام بارگذاری ماژول‌ها، modulename می‌تواند یک مسیر به ماژول نیز باشد. اگر مسیر نسبی باشد، باید صریحاً با "./" آغاز شود. توجه داشته باشید که این کار در صورت استفاده از مسیر ماژولی با وابستگی‌هایی که با پایگاه داده نصب‌شده depmod مطابقت ندارند، ممکن است با شکست مواجه شود.

-a, --all

درج تمام نام‌های ماژول مشخص‌شده در خط فرمان.

-b, --use-blacklist

این گزینه موجب می‌شود که modprobe دستورات blacklist موجود در فایل‌های پیکربندی (در صورت وجود) را برای نام‌های ماژول نیز اعمال کند. این گزینه معمولاً توسط udev(7) استفاده می‌شود.

-C directory, --config=directory

این گزینه دایرکتوری پیکربندی پیش‌فرض را بازنویسی (override) می‌کند. به modprobe.d(5) مراجعه کنید.

این گزینه از طریق دستورات install یا remove به سایر دستورات modprobe در متغیر محیطی MODPROBE_OPTIONS منتقل می‌شود.

-c, --showconfig

تخلیه و نمایش پیکربندی مؤثر از دایرکتوری پیکربندی و خروج.

--dump-modversions

چاپ فهرستی از اطلاعات نسخه‌بندی ماژول که توسط یک ماژول مورد نیاز است. این گزینه معمولاً توسط توزیع‌ها برای بسته‌بندی ماژول‌های هسته لینوکس با استفاده از وابستگی‌های نسخه‌بندی ماژول به کار می‌رود.

-d, --dirname

دایرکتوری ریشه برای ماژول‌ها، به‌طور پیش‌فرض /.

--first-time

به‌طور معمول، modprobe در صورتی که دستور درج ماژولی که از قبل وجود دارد یا حذف ماژولی که وجود ندارد به آن داده شود، موفقیت‌آمیز عمل می‌کند (و هیچ کاری انجام نمی‌دهد). این رفتار برای اسکریپت‌های ساده ایده‌آل است؛ با این حال، اسکریپت‌های پیچیده‌تر اغلب می‌خواهند بدانند که آیا modprobe واقعاً کاری انجام داده است یا خیر: این گزینه باعث می‌شود که اگر modprobe عملاً کاری انجام نداد، با شکست مواجه شود (خطا بازگرداند).

--force-vermagic

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

این گزینه برای تمامی ماژول‌های درج‌شده اعمال می‌شود: هم ماژول (یا نام مستعار) مشخص‌شده در خط فرمان و هم هر ماژولی که به آن وابسته است.

--force-modversion

هنگامی که ماژول‌ها با تنظیم CONFIG_MODVERSIONS کامپایل می‌شوند، بخشی ایجاد می‌شود که نسخه‌های تمام رابط‌های استفاده‌شده توسط (یا ارائه‌شده توسط) ماژول را با جزئیات شرح می‌دهد. اگر بارگذاری ماژولی ناموفق باشد و هسته گزارش دهد که ماژول درباره نسخه برخی رابط‌ها ناسازگار است، می‌توانید از --force-modversion برای حذف کامل اطلاعات نسخه استفاده کنید. طبیعتاً این بررسی جهت محافظت از سیستم شما قرار داده شده است، بنابراین استفاده از این گزینه خطرناک است مگر اینکه بدانید دقیقاً چه کاری انجام می‌دهید.

این گزینه برای تمامی ماژول‌های درج‌شده اعمال می‌شود: هم ماژول (یا نام مستعار) مشخص‌شده در خط فرمان و هم هر ماژولی که به آن وابسته است.

-f, --force

تلاش برای حذف هرگونه اطلاعات نسخه‌بندی از ماژول که ممکن است در غیر این صورت مانع از بارگذاری آن شود: این عمل معادل استفاده هم‌زمان از هر دو گزینه --force-vermagic و --force-modversion است. طبیعتاً این بررسی‌ها جهت محافظت از سیستم شما قرار داده شده‌اند، بنابراین استفاده از این گزینه خطرناک است مگر اینکه بدانید دقیقاً چه کاری انجام می‌دهید.

این گزینه برای تمامی ماژول‌های درج‌شده اعمال می‌شود: هم ماژول (یا نام مستعار) مشخص‌شده در خط فرمان و هم هر ماژولی که به آن وابسته است.

-i, --ignore-install, --ignore-remove

این گزینه باعث می‌شود modprobe دستورات install و remove موجود در فایل پیکربندی (در صورت وجود) را برای ماژول مشخص‌شده در خط فرمان نادیده بگیرد (هر ماژول وابسته همچنان مشمول دستوراتی است که در فایل پیکربندی برای آن‌ها تنظیم شده است). در صورت استفاده از این گزینه، در حال حاضر هر دو دستور install و remove نادیده گرفته می‌شوند، صرف‌نظر از اینکه درخواست مشخصاً فقط با یکی از گزینه‌های --ignore-install یا --ignore-remove (و نه هر دو) داده شده باشد. به modprobe.d(5) مراجعه کنید.

-n, --dry-run, --show

این گزینه همه کارها را انجام می‌دهد به جز درج یا حذف واقعی ماژول‌ها (یا اجرای دستورات install یا remove). ترکیب این گزینه با -v برای اشکال‌زدایی مشکلات بسیار مفید است. به دلایل تاریخی، هر دو گزینه --dry-run و --show عملاً معنای یکسانی دارند و قابل جایگزینی با یکدیگرند.

-q, --quiet

با این پرچم، modprobe در صورتی که بخواهید ماژولی را درج یا حذف کنید که نتواند پیدا کند (و نام مستعار یا دستور install/remove نباشد)، پیام خطایی چاپ نخواهد کرد. با این حال، همچنان با وضعیت خروج غیرصفر بازمی‌گردد. هسته از این سازوکار برای کاوش فرصت‌طلبانه ماژول‌هایی که ممکن است با استفاده از request_module وجود داشته باشند استفاده می‌کند.

-R, --resolve-alias

چاپ تمام نام‌های ماژولی که با یک نام مستعار (alias) مطابقت دارند. این گزینه می‌تواند برای اشکال‌زدایی مشکلات نام مستعار ماژول مفید باشد.

-r, --remove

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

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

-w TIMEOUT_MSEC, --wait=TIMEOUT_MSEC

این گزینه موجب می‌شود در صورتی که حذف ماژول به دلیل مشغول بودن آن ناموفق باشد (یعنی مقدار refcount آن در زمان فراخوانی صفر نباشد)، modprobe -r به تلاش برای حذف ادامه دهد. دستور Modprobe با یک زمان خواب افزایشی میان هر تلاش، تا رسیدن به حداکثر زمان انتظار بر حسب میلی‌ثانیه که در این گزینه تعیین شده است، سعی در حذف ماژول می‌کند.

-S version, --set-version=version

تعیین نسخه هسته، به جای استفاده از uname(2) برای تصمیم‌گیری درباره نسخه هسته (که محل یافتن ماژول‌ها را مشخص می‌کند).

--show-depends

فهرست کردن وابستگی‌های یک ماژول (یا نام مستعار)، از جمله خود ماژول. این کار مجموعه‌ای (احتمالاً خالی) از نام فایل‌های ماژول را سطر به سطر تولید می‌کند که هر کدام با "insmod" آغاز می‌شوند و معمولاً توسط توزیع‌ها برای تعیین ماژول‌هایی که باید هنگام تولید تصویرهای initrd/initramfs گنجانده شوند، به کار می‌رود. دستورات Install قابل اعمال، با پیشوند "install" نمایش داده می‌شوند. این گزینه هیچ‌یک از دستورات نصب را اجرا نمی‌کند. توجه داشته باشید که می‌توان از modinfo(8) برای استخراج وابستگی‌های یک ماژول از خود آن ماژول استفاده کرد، اما این ابزار چیزی درباره نام‌های مستعار یا دستورات install نمی‌داند.

-s, --syslog

این گزینه موجب می‌شود که تمام پیام‌های خطا به جای ارسال به خروجی استاندارد خطا، از طریق سازوکار syslog (به عنوان LOG_DAEMON با سطح LOG_NOTICE) فرستاده شوند. این قابلیت در صورت در دسترس نبودن stderr نیز به صورت خودکار فعال می‌شود.

این گزینه از طریق دستورات install یا remove به سایر دستورات modprobe در متغیر محیطی MODPROBE_OPTIONS منتقل می‌شود.

-V, --version

نمایش نسخه برنامه و خروج.

-v, --verbose

چاپ پیام‌ها درباره فعالیت‌های در حال انجام برنامه. معمولاً modprobe فقط زمانی پیام چاپ می‌کند که مشکلی رخ داده باشد.

این گزینه از طریق دستورات install یا remove به سایر دستورات modprobe در متغیر محیطی MODPROBE_OPTIONS منتقل می‌شود.

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

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

حق نشر اصلی این صفحه راهنما متعلق به 2002، Rusty Russell، شرکت IBM Corporation است.

modprobe.d(5), insmod(8), rmmod(8), lsmod(8), modinfo(8), depmod(8)

لطفاً هرگونه گزارش باگ را به سامانه پیگیری مشکلات kmod در:
https://github.com/kmod-project/kmod/issues همراه با نسخه استفاده‌شده، مراحل بازتولید مشکل و نتیجه مورد انتظار ارسال کنید.

مشارکت‌های فراوانی از سوی فهرست پستی linux-modules به نشانی <linux-modules@vger.kernel.org> و گیت‌هاب صورت گرفته است. چنانچه یک نسخه از مخزن خود kmod.git در اختیار دارید، خروجی دستورات git-shortlog(1) و git-blame(1) می‌تواند نویسندگان بخش‌های خاص پروژه را به شما نشان دهد.

Lucas De Marchi <lucas.de.marchi@gmail.com> نگه‌دارنده فعلی این پروژه است.

2025-03-28 kmod