Skip to main content

كل شيء عن لينكس / قيادة يونكس: modprobe

insmod vs modprobe in LINUX (يوليو 2026)

insmod vs modprobe in LINUX (يوليو 2026)
Anonim

اسم

modprobe - معالجة عالية المستوى للوحدات القابلة للتحميل

ملخص

مودبروب -nnqv -C التكوين الوحدة الرمز = القيمة …مودبروب -nnqv -C التكوين ر نوع نمطمودبروب -ل التكوين ر نوع نمطمودبروب -c التكوين مودبروب -r -dnv -C التكوين وحدة …مودبروب -Vh

خيارات

, --الكل

حملالكل مطابقة الوحدات النمطية بدلاً من التوقف بعد التحميل الناجح الأول.

-c, --showconfig

إظهار التكوين المستخدم حاليًا.

-C, --config التكوين

استخدم الملف التكوين بدلا من (اختياري) /etc/modules.conf لتحديد التكوين. متغير البيئةMODULECONF يمكن أيضًا استخدامه لتحديد (وتجاوز) ملف تكوين مختلف عن الملف الافتراضي /etc/modules.conf (أو /etc/conf.modules (إهمال)).

عندما متغير البيئةUNAME_MACHINE يتم تعيين modutils سيستخدم قيمته بدلاً من حقل الجهاز من unys () syscall. هذا الاستخدام بشكل أساسي عند تجميع وحدات 64 بت في مساحة المستخدم 32 بت أو العكس ، تعيينUNAME_MACHINE لنوع الوحدات. لا يدعم modutils الحالي وضع إنشاء عبر الكامل للوحدات النمطية ، فإنه يقتصر على اختيار بين 32 و 64 بت إصدارات بنية المضيف.

, --debug

إظهار معلومات حول التمثيل الداخلي لتكدس الوحدات.

-h, --مساعدة

عرض ملخص للخيارات والخروج على الفور.

, --تنظيف سيارة

اضبط "autoclean" على الوحدات المحملة. تستخدم من قبل النواة عندما تدعومودبروب لإرضاء ميزة مفقودة (يتم توفيرها كوحدة نمطية). ال-q الخيار ضمني. سيتم إرسال هذه الخيارات تلقائيًا إلىinsmod.

-l, --قائمة

قائمة وحدات مطابقة.

-n, --تبين

لا تفعّل الإجراء فعليًا ، فقط أظهر ما الذي يمكن عمله.

-q, --هادئ

لا تشكوinsmod فشل في تثبيت وحدة نمطية. استمر كالمعتاد ، ولكن بصمت ، مع إمكانيات أخرى لاختبار modprobe. سيتم إرسال هذا الخيار تلقائيًا إلىinsmod.

-r, --إزالة

إزالة الوحدة (المداخن) أو autoclean ، اعتمادًا على ما إذا كانت هناك أي وحدات مذكورة في سطر الأوامر.

-s, --syslog

تقرير عبر syslog بدلا من stderr. سيتم إرسال هذه الخيارات تلقائيًا إلىinsmod.

-t moduletype ; --نوع moduletype

فقط النظر في وحدات من هذا النوع. سوف ننظر فقط modprobe في وحدات تشمل مسار الدليل الخاص به بالضبط " / moduletype / '. moduletype يمكن أن تتضمن أكثر من اسم دليل واحد ، على سبيل المثال ، "-t السائقين / صافي "سوف قائمة وحدات في XXX / السائقين / صافي / والدلائل الفرعية لها.

-الخامس, --verbose

طباعة جميع الأوامر لأنها تنفذ.

-V ، - الإصدار

عرض نسخة منمودبروب.

ملحوظة:

يجب ألا تحتوي أسماء وحدات البرامج على مسارات (لا '/') ، كما أنها لا تحتوي على الزاحف '.o'. على سبيل المثال ، الانزلاق هو اسم وحدة نمطية صالح لـمودبروبو / lib/modules/2.2.19/net/slip و slip.o غير صالحين. هذا ينطبق على سطر الأوامر وإدخالات في التكوين.

وصف القيادة

المودبروب وdepmod تهدف المرافق إلى جعل نواة لينكس النموذجية أكثر قابلية للإدارة لجميع المستخدمين والمسؤولين ومشرفي التوزيع.

مودبروب يستخدم ملف التبعية "Makefile" - مثل التبعية ، التي تم إنشاؤها بواسطةdepmod، لتحميل الوحدة النمطية (وحدات) ذات الصلة تلقائيًا من مجموعة الوحدات المتوفرة في أشجار الدليل المحددة مسبقًا.

مودبروب يُستخدم في تحميل وحدة نمطية واحدة ، أو كومة من الوحدات التابعة ، أو جميع الوحدات التي تم وضع علامة عليها بعلامة محددة.

مودبروب سيقوم تلقائيًا بتحميل كافة الوحدات الأساسية المطلوبة في مكدس وحدة نمطية ، كما هو موضح في ملف التبعية modules.dep . في حالة فشل تحميل أحد هذه الوحدات النمطية ، سيتم إلغاء تحميل حزمة الوحدات الحالية التي تم تحميلها في الجلسة الحالية تلقائيًا.

مودبروب لديه طريقتان للتحميل وحدات. طريقة واحدة (وضع التحقيق) سيحاول تحميل وحدة من قائمة (التي حددتها نمط ). مودبروب يتوقف التحميل بمجرد تحميل وحدة واحدة بنجاح. يمكن استخدام هذا في autoload برنامج تشغيل Ethernet واحد من قائمة. الطريق الاخرمودبروب يمكن استخدامها لتحميلالكل وحدات من قائمة. نرىأمثلة، أدناه.

مع هذا الخيار-r، سيقوم modprobe تلقائيًا بتفريغ حزمة من الوحدات ، على غرار الطريقة "rmmod -r"هل لاحظ أن استخدام فقط"modprobe -r"سيقوم بتنظيف الوحدات النمطية غير المستخدمة تلقائيًا وكذلك تنفيذ أوامر ما قبل وبعد إزالة في ملف التكوين /etc/modules.conf .

الجمع بين الخيارات-l و-t يسرد جميع الوحدات المتاحة من نوع معين.

اختيار-c سيقوم بطباعة التكوين المستخدم حاليًا (ملف التكوين الافتراضي +).

ترتيب

سلوكمودبروبdepmod) يمكن تعديله من خلال ملف التكوين (اختياري) /etc/modules.conf . للحصول على وصف أكثر تفصيلاً لما يمكن أن يحتوي عليه هذا الملف ، بالإضافة إلى التكوين الافتراضي المستخدم من قبلdepmod ومودبروب، نرىmodules.conf(5).

لاحظ أن أوامر ما قبل وبعد إزالة سوفليس يتم تنفيذه إذا كانت الوحدة هي "autocleaned" بواسطة kerneld! ابحث عن الدعم المتقدم لوحدة التخزين الدائمة بدلاً من ذلك. إذا كنت ترغب في استخدام ميزات ما قبل التثبيت وما بعد التثبيت ، فيجب عليك إيقاف تشغيل autoclean لـ kerneld وبدلاً من ذلك ضع شيئًا كالخط التالي فيكرونتاب (يستخدم هذا لأنظمة الكيلوود كذلك) للقيام بعملية autoclean كل دقيقتين: * / 2 * * * * test -f / proc / modules && / sbin / modprobe -r

إستراتيجية

الفكرة هيمودبروب سوف ننظر أولاً في الدليل الذي يحتوي على وحدات مجمعة للإصدار الحالي من kernel. إذا لم يتم العثور على الوحدة هناك ،مودبروب سيظهر في الدليل المشترك لنسخة kernel (على سبيل المثال ، 2.0 ، 2.2). إذا تم العثور على الوحدة ،مودبروب سوف ننظر في الدليل الذي يحتوي على وحدات لإصدار افتراضي ، وهلم جرا.

عند تثبيت لينكس جديد ، يجب نقل الوحدات إلى دليل مرتبط بالإصدار (والإصدار) للنواة التي تقوم بتثبيتها. ثم يجب عليك القيام بعمل ارتباط رمزي من هذا الدليل إلى الدليل "الافتراضي".

في كل مرة تقوم فيها بتجميع نواة جديدة ، يكون الأمر "جعل modules_install"سيؤدي إلى إنشاء دليل جديد ، لكن لن يغير الرابط" الافتراضي ".

عندما تحصل على وحدة لا علاقة لها بتوزيع النواة ، يجب وضعها في أحد الأدلة المستقلة عن الإصدارات / ليب / وحدات .

هذه هي الاستراتيجية الافتراضية ، والتي يمكن تجاوزها /etc/modules.conf .

أمثلة

modprobe -t net

تحميل واحدة من الوحدات النمطية التي تم تخزينها في الدليل الموسوم "صافي". تتم تجربة كل وحدة حتى نجاح واحد.

modprobe -a -t التمهيد

سيتم تحميل جميع الوحدات التي يتم تخزينها في الدلائل الموسومة "التمهيد".

زلة modprobe

سيحاول هذا تحميل الوحدة النمطية slhc.o إذا لم يتم تحميلها مسبقًا ، نظرًا لأن وحدة الانزلاق تحتاج إلى الوظيفة في الوحدة النمطية slhc. سيتم وصف هذه التبعية في الملف modules.dep التي تم إنشاؤها تلقائيا من قبلdepmod.

modprobe -r زلة

هذا سوف تفريغ وحدة الانزلاق. كما سيتم أيضًا إلغاء تحميل الوحدة النمطية slhc تلقائيًا ، ما لم يتم استخدامها بواسطة وحدة أخرى أيضًا (مثل ppp).

أنظر أيضا:

depmod (8)،lsmod(8), kerneld(8), ksyms(8), rmmod(8).

الوضع الآمن

إذا كان uid الفعال لا يساوي uid الحقيقي في ذلك الحينمودبروب يعامل مدخلاته مع شكوك شديدة. دائمًا ما يتم التعامل مع المعلمة الأخيرة كاسم وحدة نمطية ، حتى إذا كانت تبدأ بـ "-". لا يمكن أن يكون هناك سوى اسم وحدة نمطية واحد وخيارات النموذج "variable = value" محظورة. دائمًا ما يتم التعامل مع اسم الوحدة النمطية كسلسلة ، ولا يتم إجراء أي توسع في الوضع الآمن. ومع ذلك ، لا يزال يتم استخدام توسيع meta على البيانات التي تمت قراءتها من ملف التهيئة.

قد لا يكون euid مساويًا لـ uid عندما يتم استدعاء modprobe من kernel ، وهذا صحيح للنواة> = 2.4.0-test11. في عالم مثالي،مودبروب يمكن أن يثق في النواة لتمرير المعلمات الصالحة فقط إلى modprobe. ومع ذلك ، حدث استغلال جذر محلي واحد على الأقل لأن شفرة kernel عالية المستوى اجتازت معلمات لم يتم التحقق منها مباشرة من المستخدم إلى modprobe. لذا لم يعد modprobe يثق في إدخال kernel.

مودبروب تلقائيا يحدد الوضع الآمن عندما تتكون البيئة فقط من هذه السلاسل

HOME = / TERM = linux PATH = / sbin: / usr / sbin: / bin: / usr / bin

هذا يكشف تنفيذ modprobe من kernel على kernels 2.2 على الرغم من 2.4.0-test11 ، حتى لو uid == euid ، وهو ما يفعله على النواة السابقة.

أوامر التسجيل

إذا كان الدليل / فار / سجل / ksymoops موجود ومودبروب يتم تشغيل مع خيار يمكن تحميل أو حذف وحدة ثم سيتم تسجيل modprobe أمره وحالة العودة في / var / log / ksymoops / `date +٪ Y٪ m٪ d.log` . لا يوجد مفتاح لتعطيل هذا التسجيل التلقائي ، إذا كنت لا تريد أن يحدث ، لا تقم بإنشاء / فار / سجل / ksymoops . إذا كان هذا الدليل موجودًا ، فيجب أن يكون مملوكًا للجذر وأن يكون الوضع 644 أو 600 ويجب تشغيل البرنامج النصيinsmod_ksymoops_clean كل يوم أو نحو ذلك.

المرافق المطلوبة

depmod(8), insmod(8).

مهم: استخدم ال رجل أمر ( رجل٪ ) لمعرفة كيفية استخدام الأمر على جهاز الكمبيوتر الخاص بك.