Modprobe - قيادة لينكس - قيادة يونيكس

اسم

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

موجز

modprobe [-adnqv] [-c config ] module [symbol = value ...]
modprobe [-adnqv] [-C config ] [-t type ] pattern
modprobe -l [-C config ] نمط [-t]
modprobe -c [-C config ]
modprobe -r [-dnv] [-c config ] [module ...]
modprobe -Vh

خيارات

-أو-

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

-c ، -showconfig

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

-C ، - config config

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

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

-d ، --debug

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

-h ، - مساعدة

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

-k ، - autoclean

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

-l ، --list

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

- ، -

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

-q ، -

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

-r ، --إزالة

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

-s ، --syslog

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

نوع الوحدة نوع الوحدة

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

-v ، --verbose

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

-V ، - الإصدار

عرض إصدار modprobe .

ملحوظة:

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

وصف

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

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

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

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

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

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

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

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

ترتيب

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

لاحظ أنه لن يتم تنفيذ أوامر pre-and post-remove إذا كانت الوحدة النمطية "autocleaned" بواسطة kerneld! ابحث عن الدعم المتقدم لوحدة التخزين الدائمة بدلاً من ذلك.
إذا كنت ترغب في استخدام ميزات ما قبل التثبيت وما بعد التثبيت ، فيجب عليك إيقاف تشغيل autoclean لـ kerneld ووضع بدلاً من ذلك شيئًا مثل السطر التالي في crontab الخاص بك (يستخدم هذا لأنظمة kmod أيضًا) لإجراء autoclean كل دقيقتين :

* / 2 * * * * test -f / proc / modules && / sbin / modprobe -r

إستراتيجية

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

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

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

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

هذه هي الاستراتيجية الافتراضية ، والتي يمكن تجاوزها في /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).

الوضع الآمن

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

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

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

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

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

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

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

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

depmod (8) ، insmod (8).

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