הכל על פקודת לינוקס/יוניקס: modprobe
ה ליבת לינוקס גדל לתוכנה גדולה. במובנים מסוימים, זה דבר טוב. באחרים, זה הופך אותו לבלתי גמיש במקצת. הפתרון הוא לפרק חלקים מהקרנל למודולים. ניתן לטעון מודולים אלו או לא, בהתחשב בתצורת המחשב ובצרכים שלך. הפקודה modprobe טוענת מודולי ליבה חדשים במערכת לינוקס, ומאפשרת לך להפעיל תכונות חדשות ותמיכה ללא אתחול מחדש.

באמצעות Modprobe
Modprobe הוא בדרך כלל פשוט לשימוש. ברגע שאתה מכיר את מודול הליבה שאתה רוצה לטעון, העבר אותו לפקודה modprobe.
sudo modprobe rtl8723de
זה כל מה שיש בזה. המודול נטען עד שאתה מאתחל את המערכת שלך.
אם ברצונך להסיר מודול מבלי לאתחל מחדש, הפעל מחדש את הפקודה עם ה- -ר דֶגֶל.
sudo modprobe -r rtl8723de
לרוב, כך תעבוד עם modprobe. למידע נוסף, עיין בתיעוד הטכני למטה.
תיעוד טכני של Modprobe
הפקודה modprobe מבצעת טיפול ברמה גבוהה במודולים הניתנים לטעינה.
תַקצִיר
modprobe [-adnqv] [-C תצורה] מודול [סמל=ערך ...] modprobe [-adnqv] [-C תצורה] [-ת סוּג] תבנית modprobe -ל [-ג תצורה] [-ת סוּג] תבנית modprobe -ג [-C תצורה] modprobe -r [-dnv] [-C תצורה] [מודול ...] modprobe -וה.
אפשרויות
-א, --את כל
טען את כל המודולים התואמים במקום להפסיק לאחר הטעינה המוצלחת הראשונה.
-ג, --showconfig
הצג את התצורה שבה נעשה שימוש כעת.
-C, --configתצורה
השתמש בקובץ תצורה במקום (האופציונלי) /etc/modules.conf כדי לציין את התצורה. משתנה הסביבה MODULECONF ניתן להשתמש גם כדי לבחור (ולעקוף) קובץ תצורה שונה מברירת המחדל /etc/modules.conf (אוֹ /etc/conf.modules אשר הוצא משימוש).
כאשר משתנה סביבה UNAME_MACHINE מוגדר, modutils משתמש בערך שלו במקום בשדה המכונה מה-syscall uname(). זה שימושי בעיקר בעת קומפילציה של מודולים של 64 סיביות במרחב משתמש של 32 סיביות או להיפך, סט UNAME_MACHINE לסוג המודולים. מודולים נוכחיים אינם תומכים במצב צלב בנייה מלא עבור מודולים, הוא מוגבל לבחירה בין 32 סיביות ו-64 סיביות גרסאות של ארכיטקטורת המארח.
-ד, --לנפות
הצג מידע על הייצוג הפנימי של ערימת המודולים.
-ח, --עֶזרָה
הצג סיכום של אפשרויות וצא מיד.
-ק, --ניקוי אוטומטי
הגדר ניקוי אוטומטי במודולים טעונים. משמש את הקרנל כאשר הוא קורא ל-modprobe כדי לספק תכונה חסרה (מסופק כמודול). ה -ש אפשרות משתמעת מ -ק. אפשרויות אלו נשלחות אוטומטית אל insmod.
-נ, --הופעה
אל תבצע את הפעולה, רק הראה מה ייעשה.
-ש, --שֶׁקֶט
אל תתלונן על כך ש-insmod לא מצליח להתקין מודול. המשך כרגיל, אך בשקט, עם אפשרויות אחרות לבדיקת modprobe. אפשרות זו נשלחת אוטומטית אל insmod.
-ר, --לְהַסִיר
הסר מודול (ערימות) או בצע ניקוי אוטומטי, תלוי אם יש מודולים שהוזכרו בשורת הפקודה.
-ס, --syslog
דווח באמצעות syslog במקום stderr. אפשרות זו נשלחת אוטומטית אל insmod.
-טסוג מודול; --סוּגסוג מודול
שקול רק מודולים מסוג זה. modprobe מסתכל רק על מודולים שנתיב הספרייה שלהם כולל בדיוק /moduletype/. סוג מודול יכול לכלול יותר משם ספרייה אחד, למשל, -טדרייברים/רשת מפרט מודולים ב xxx/drivers/net/ וספריות המשנה שלה.
-v, --מִלוּלִי
הדפס את כל הפקודות תוך כדי ביצוען.
-V, --גרסה
הצג את הגרסה של modprobe.
שמות המודולים אינם יכולים להכיל נתיבים (לא /), וגם השם אינו יכול להכיל את הנגרר .o. לדוגמה, פליטת פה הוא שם מודול חוקי עבור modprobe, /lib/modules/2.2.19/net/slip ו slip.o אינם חוקיים. זה חל על שורת הפקודה ועל ערכים בתצורה.
תיאור הפקודה
כלי השירות modprobe ו-depmod נועדו להפוך ליבה מודולרית של לינוקס לניתנת לניהול יותר עבור משתמשים, מנהלי מערכת ומנהלי הפצה.
Modprobe משתמש בקובץ תלות דמוי Makefile, שנוצר על ידי depmod, כדי לטעון אוטומטית את המודולים הרלוונטיים מקבוצת המודולים הזמינים בעצי ספריות מוגדרים מראש.
Modprobe משמש לטעינת מודול בודד, ערימה של מודולים תלויים, או כל המודולים המסומנים בתג מוגדר.
Modprobe טוען אוטומטית את כל מודולי הבסיס הדרושים בערימת מודול, כפי שמתואר בקובץ התלות modules.dep. אם הטעינה של אחד מהמודולים הללו נכשלת, כל ערימת המודולים הנוכחית שנטענת בהפעלה הנוכחית תיפרק אוטומטית.
ל- Modprobe יש שתי דרכים לטעון מודולים. דרך אחת (מצב הבדיקה) תנסה לטעון מודול מתוך רשימה (מוגדר על ידי תבנית). Modprobe מפסיק את הטעינה ברגע שמודול אחד נטען בהצלחה. זה יכול לשמש לטעינה אוטומטית של מנהל התקן Ethernet אחד מתוך רשימה. הדרך השנייה שבה ניתן להשתמש ב-modprobe היא לטעון את כל המודולים מרשימה.
עם האופציה -ר, modprobe פורק אוטומטית ערימה של מודולים, בדומה לדרך rmmod -r עושה. שימוש בלבד modprobe -r מנקה מודולים שלא נעשה בהם שימוש אוטומטית וגם מבצע את הפקודות לפני ואחרי ההסרה בקובץ התצורה /etc/modules.conf.
שילוב האפשרויות -ל ו -ט מפרט את כל המודולים הזמינים מסוג מסוים.
אוֹפְּצִיָה -ג מדפיס את התצורה הנוכחית בשימוש (ברירת מחדל + קובץ תצורה).
תְצוּרָה
ניתן לשנות את ההתנהגות של modprobe (ו-depmod) על ידי קובץ התצורה (אופציונלי). /etc/modules.conf. לתיאור מפורט של מה קובץ זה יכול להכיל, כמו גם את תצורת ברירת המחדל המשמשת את depmod ו-modprobe, ראה modules.conf(5).
הפקודות לפני ואחרי ההסרה אינן מבוצעות אם מודול מנוקה אוטומטית על ידי kerneld. חפש במקום זאת את התמיכה הקרובה לאחסון מודול מתמשך. אם אתה רוצה להשתמש בתכונות שלפני ואחרי ההתקנה, כבה את הניקוי האוטומטי עבור הקרנלד ובמקום זאת הכנס משהו כמו השורה הבאה ב-crontab (זה משמש גם למערכות kmod) כדי לבצע ניקוי אוטומטי כל 2 דקות:
*/2 * * * * test -f /proc/modules && /sbin/modprobe -r
אִסטרָטֶגִיָה
הרעיון הוא ש-modprobe יחפש תחילה בספרייה המכילה מודולים שהידור עבור המהדורה הנוכחית של הליבה. אם המודול לא נמצא שם, modprobe מחפש בספרייה המשותפת לגרסת הקרנל (לדוגמה, 2.0, 2.2). אם המודול עדיין לא נמצא, modprobe מחפש בספרייה המכילה מודולים עבור מהדורת ברירת מחדל, וכן הלאה.
כאשר אתה מתקין לינוקס חדש, יש להעביר את המודולים לספרייה הקשורה לגרסה (והגרסה) של הליבה שאתה מתקין. לאחר מכן, בצע קישור סימלי מהספרייה הזו לספריית ברירת המחדל.
בכל פעם שאתה קומפילציה של ליבה חדשה, הפקודה בצע מודולים_התקנה יוצר ספרייה חדשה, אך לא ישנה את קישור ברירת המחדל.
כאשר אתה מקבל מודול שאינו קשור להפצת הליבה, מקם אותו באחת מהספריות הבלתי תלויות בגרסה מתחת /lib/modules.
זוהי אסטרטגיית ברירת המחדל, שניתן לעקוף אותה /etc/modules.conf.
דוגמאות
modprobe -t net
טען אחד מהמודולים המאוחסנים בספרייה המתויגת נֶטוֹ. כל מודול מנוסה עד שאחד מצליח.
modprobe -a -t boot
כל המודולים המאוחסנים בספריות מתויגות מַגָף נטענים.
להחליק modprobe
זה מנסה לטעון את המודול slhc.o אם הוא לא נטען קודם לכן מכיוון שמודול ההחלפה זקוק לפונקציונליות במודול slhc. תלות זו מתוארת בקובץ modules.dep שנוצרה באופן אוטומטי על ידי depmod.
modprobe -r slip
זה פורק את מודול ההחלקה. זה גם פורק את מודול slhc באופן אוטומטי, אלא אם כן הוא משמש גם מודול אחר (לדוגמה, ppp).
ראה גם: depmod(8), lsmod (8), kerneld (8), ksyms (8), rmmod(8).
מצב בטוח
אם ה-uid היעיל אינו שווה ל-uid האמיתי, אז modprobe מתייחס לקלט שלו בחשדנות קיצונית. הפרמטר האחרון תמיד מטופל כשם מודול, גם אם הוא מתחיל עם -. יכולים להיות רק שם מודול אחד ואפשרויות של הטופס משתנה=ערך אסורים. שם המודול מתייחס תמיד כמחרוזת, לא מתבצעת הרחבת מטא במצב בטוח. עם זאת, הרחבת מטא מוחלת על נתונים שנקראו מקובץ התצורה.
euid עשוי שלא להיות שווה ל-uid כאשר modprobe מופעל מהקרנל, זה נכון ל-kernels 2.4.0-test11 ואילך. בעולם אידיאלי, modprobe יכול לסמוך על הליבה שתעביר רק פרמטרים חוקיים ל-modprobe. עם זאת, לפחות ניצול שורש מקומי אחד התרחש מכיוון שקוד ליבה ברמה גבוהה העביר פרמטרים לא מאומתים ישירות מהמשתמש ל-modprobe. אז modprobe כבר לא סומך על קלט ליבה.
modprobe מגדיר אוטומטית מצב בטוח כאשר הסביבה מורכבת רק ממחרוזות אלו.
HOME=/
TERM=לינוקס
PATH=/sbin:/usr/sbin:/bin:/usr/bin
זה מזהה ביצוע modprobe מהקרנל על ליבות 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).
להשתמש ב איש פקודה (% איש) כדי לראות כיצד נעשה שימוש בפקודה במחשב שלך.