Skip to main content

הכל על לינוקס / פיקוד יוניקס:

ניהול חברתי בקוד פתוח- הקץ לפוליטיקה? (bettermeans" intro") (יוני 2026)

ניהול חברתי בקוד פתוח- הקץ לפוליטיקה? (bettermeans" intro") (יוני 2026)
Anonim

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

אם שם קובץ המודול ניתן ללא ספריות או סיומות,insmod יחפש את המודול במספר ספריות ברירת מחדל נפוצים. משתנה הסביבהMODPATH יכול לשמש כדי לעקוף את ברירת המחדל. אם קובץ תצורת מודול כגון/etc/modules.conf קיימת, היא תעקוף את הנתיבים שהוגדרו בMODPATH.

משתנה הסביבהמודולקונף יכול לשמש גם לבחירת קובץ תצורה שונה מברירת המחדל/etc/modules.conf (או/etc/conf.modules (הוצא משימוש)). משתנה סביבה זה יחליף את כל ההגדרות לעיל.

כאשר משתנה הסביבהUNAME_MACHINE מוגדר, modutils ישתמש הערך שלה במקום שדה המכונה מן syscall () uname. זה בעיקר בשימוש כאשר אתה קומפילציה 64 סיביות מודולים שטח המשתמש 32 סיביות או להיפך, בחרUNAME_MACHINE לסוג המודולים. Modutils הנוכחי אינם תומכים במצב מלא לחצות לבנות עבור מודולים, זה מוגבל לבחירת בין 32 ו 64 סיביות גירסאות של הארכיטקטורה המארחת.

אפשרויות

persist_name , --להתמיד= persist_name

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

בתור טופס קצרנות,-E " (מחרוזת ריקה) מתפרשת על ידיinsmod כמו הערך שלpersistdir כמוגדר בmodules.conf, ואחריו שם הקובץ של המודול ביחס לנתיב החיפוש של המודול שנמצא בו, פחות כל סיומת "gz", "o" או ".mod". אםmodules.conf מציין "persistdir ="(כלומרpersistdir הוא שדה ריק) אז זה טופס קצרנות מתעלמת בשקט. (ראהmodules.conf (5).)

-f, - כוח

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

-h, - עזרה

הצגת סיכום של אפשרויות ולצאת מייד.

-k, --ניקוי אוטומטי

הגדר את הדגל נקי אוטומטית במודול. דגל זה ישמשkerneld(8) כדי להסיר מודולים שלא נעשה שימוש בתקופה מסוימת - בדרך כלל דקה אחת.

-L, --לנעול

להשתמשצאן(2) כדי למנוע עומסים בו-זמנית של אותו מודול.

-M, --map

פלט מפה לטעון על stdout, ובכך קל יותר באגים את המודול במקרה של פאניקה הליבה.

-n, -

לרוץ דמה, לעשות הכל מלבד לטעון את המודול לתוך הקרנל. אם תתבקש על ידי-M או-או, הריצה תייצר מפה או קובץ כתום. מכיוון שהמודול אינו נטען, כתובת הטעינה האמיתית של הקרנל אינה ידועה, כך שהמפה ותמונת הבלוב מבוססים על כתובת עומס שרירותית של 0x12340000.

module_name , - שם= module_name

ציין במפורש את המודול, במקום להפיק את השם משמו הבסיסי של קובץ אובייקט המקור.

-או blob_name , -= blob_name

שמור את האובייקט הבינארי ב blob_name . התוצאה היא כתם בינארי (ללא כותרות ELF) מראה בדיוק מה נטען לתוך הקרנל לאחר מניפולציה בסעיף והעברת. אפשרות-M מומלץ לקבל מפה של האובייקט.

-p, - פרוב

בדוק את המודול כדי לראות אם הוא יכול להיות טעון בהצלחה. זה כולל איתור קובץ אובייקט בנתיב המודול, בדיקת מספרי גרסה ופתרון סמלים. זה לא בודק את relocations ולא זה לייצר מפה או קובץ blob.

-P קידומת , --prefix= קידומת

אפשרות זו ניתן להשתמש עם מודולים גרסאות עבור SMP או bigmem הקרנל, שכן מודולים כאלה יש קידומת נוספת שנוספו שמות הסמלים שלהם. אם הקרנל נבנה עם גרסאות סמל אזinsmod באופן אוטומטי לחלץ את הקידומת מההגדרה של "get_module_symbol" או "inter_module_get", שאחד מהם חייב להתקיים כל הקרנל התומך מודולים. אם הקרנל אינו מכיל גרסאות סמלים, אך המודול נבנה בגרסאות סמל, ולאחר מכן המשתמש חייב לספק אותו-P.

-q, שקט -

אל תדפיס רשימה של כל הסמלים שלא נפתרו. אל תתלוננו על חוסר התאמה של גרסה. הבעיה תתבטא רק במצב היציאה שלinsmod.

-r, --שורש

חלק מהמשתמשים לקמפל מודולים תחת Userid שאינו root ואז להתקין את המודולים כמו שורש. תהליך זה יכול להשאיר את המודולים הנמצאים בבעלות המשתמש שאינו root, למרות שמדריך המודולים נמצא בבעלות השורש. אם המשתמש שאינו נמצא בשורש נמצא בסכנה, פולש יכול להחליף מודולים קיימים בבעלותו של אותו משתמש ולהשתמש בחשיפה זו ל bootstrap עד לגישת שורש.

כברירת מחדל, modutils ידחה ניסיונות להשתמש במודול שאינו בבעלות השורש. ציון -r יהיה לעבור את ההמחאה ולאפשר שורש לטעון מודולים שאינם בבעלות השורש.

הערה: ערך ברירת המחדל עבור בדיקת שורש יכול להשתנות כאשר modutils מוגדר.שימוש ב - r כדי להשבית בדיקת שורש או הגדרת ברירת המחדל ל "ללא בדיקת שורש" בזמן התצורה מהווה חשיפת אבטחה גדולה ואינה מומלצת.

- s, --syslog

פלט הכל אלsyslog(3) במקום הטרמינל.

-S, - kallsyms

כפה על המודול שנטעןkallsyms נתונים, גם אם הקרנל אינו תומך בו. אפשרות זו היא עבור מערכות קטנות שבהן הקרנל נטען ללאkallsyms נתונים אבל מודולים נבחרים צריךkallsyms I debugging. אפשרות זו היא ברירת המחדל ב- Red Hat Linux.

-v, -

ללא שם: להיות verbose.

-V, - Version

הצג את הגירסה שלinsmod.

-איקס, - יצוא; -איקס, - לא קיים

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

-Y, -; - אני, - noksymoops

לעשות ואל תוסיףקסימופים סמלים. סמלים אלה משמשיםקסימופים כדי לספק באגים טוב יותר אם יש אופס במודול זה. ברירת המחדל היאקסימופיםסמלים שיוגדרו. אפשרות זו אינה תלויה-איקס/-איקס אפשרויות.

קסימופים סמלים להוסיף כ 260 בתים לכל מודול טעון. אלא אם כן אתה באמת קצר על שטח הקרנל ומנסים להפחית ksyms לגודל המינימלי שלה, לקחת את ברירת המחדל ולקבל יותר מדויק Oops באגים.קסימופים נדרשים סמלים לשמירת נתוני מודול מתמשך.

-N, - מספרי בלבד

בדוק רק את החלק המספרי של גרסת המודול מול גרסת הליבה, כלומר התעלם מ- EXTRAVERSION כאשר מחליט אם מודול שייך לקרנל. דגל זה מוגדר אוטומטית עבור הקרנל 2.5 ואילך, זה אופציונלי עבור גרעינים קודמים.

פרמטרים של מודול

חלק מהמודולים מקבלים פרמטרים של זמן לטעון כדי להתאים אישית את פעולתם. פרמטרים אלה הם בדרך כלל יציאות I / O ומספרי IRQ המשתנים ממחשב למכונה ואינם ניתנים לקביעה מתוך החומרה.

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

במקרה של מספרים שלמים, כל הערכים עשויים להיות עשרוניים, אוקטליים או הקסדצימליים a la c: 17, 021 או 0x11. אלמנטים מערך הם רצף שצוין מופרדים על ידי פסיקים. ניתן לדלג על אלמנטים על ידי השמטת הערך.

ב 2.0 מודולים סדרה, ערכים שאינם מתחילים עם מספר נחשבים מחרוזות. החל מ -2.1, נתוני הסוג של הפרמטר מציינים אם לפרש את הערך כמחרוזת. אם הערך מתחיל במרכאות כפולות ('), מחרוזת מחרוזת כמו C, רצפים לברוח וכל. האם לציין כי מן הקליפה הפקודה, את הציטוטים עצמם ייתכן שיהיה צורך להגן מפני פרשנות פגז.

GPL מורשה מודולים וסמלים

החל מגרעין 2.4.10, מודולים צריכים להיות מחרוזת רישיון, מוגדרת באמצעותMODULE_LICENSE (). מספר מחרוזות מוכרות כמתאימות ל- GPL; כל מחרוזת רשיון אחרת או ללא רישיון כלל פירושו שהמודול מטופל כקניין.

אם הקרנל תומך/ proc / sys / kernel / tainted ואזinsmod יהיה או דגל נגוע עם '1' בעת טעינת מודול ללא רישיון GPL. אזהרה מוצגת אם הליבה תומכת בגוון ומודול נטען ללא רישיון. אזהרה מוצעת תמיד עבור מודולים שיש להםMODULE_LICENSE () כי הוא לא תואם GPL, אפילו על גרעינים ישנים יותר שאינם תומכים tainting. זה ממזער את האזהרות כאשר modutils חדש משמש על גרעינים ישנים.

INMODOD -F (כוח) יהיה או דגל נגוע עם "2" על גרעינים התומכים טיהור. זה תמיד מתריע.

חלק מפתחי הקרנל דורשים שסמלים המיוצאים על-ידי הקוד שלהם חייבים להיות בשימוש רק על-ידי מודולים עם רישיון תואם ל- GPL. סמלים אלה מיוצאים על ידיEXPORT_SYMBOL_GPL במקום הנורמליEXPORT_SYMBOL. GPL בלבד הסמלים המיוצגים על ידי הקרנל ועל ידי מודולים אחרים גלויים רק מודולים עם רישיון תואם GPL, סמלים אלה מופיעים/ proc / ksyms עם קידומת של 'GPLONLY_'. insmod מתעלםGPLONLY_ קידומת בסמלים בעת טעינת מודול מורשה של GPL כך שהמודול מתייחס רק לשם הסימול הרגיל, ללא הקידומת. סמלים של GPL בלבד אינם זמינים למודולים ללא רישיון תואם ל- GPL, כולל מודולים ללא רישיון כלל.

סיוע של קסימפס

כדי לסייע באיתור באגים של Kernel Oops בעת שימוש במודולים,insmod ברירות מחדל כדי להוסיף כמה סמלים ksyms, ראה-Y אפשרות. סמלים אלה מתחילים__insmod_ Modulename_ . ה modulename נדרש כדי להפוך את הסמלים ייחודיים. זה חוקי לטעון את אותו אובייקט יותר מפעם אחת תחת שמות מודולים שונים. נכון לעכשיו, הסמלים המוגדרים הם:

__insmod_ modulename _ Oobjectfile _ Mmtime _ Vversion

objectfile הוא שם הקובץ שאובייקט נטען ממנו. זה מבטיח כי ksymoops יכול להתאים את הקוד לאובייקט הנכון. mtime הוא חותמת השינוי האחרון על קובץ זה hex, אפס אם נכשל Stat. גרסה היא גרסת הקרנל שהמודול נערך עבור, -1 אם אין גרסה זמינה. ה_O לסמל יש כתובת התחלה זהה לזו של כותרת המודול.

__insmod_ modulename _ Ssectionname _ אורך

סמל זה מופיע בתחילת קטעים נבחרים של ELF, כרגע .text, .drata, .data, .bs ו- .sbs. הוא מופיע רק אם הקטע מכיל גודל שאינו אפס. סעיף שם הוא שמו של סעיף ELF, אורך הוא אורך הקטע בעשרוני. סמלים אלה מסייעים לכתובות מפת סימופס למקטעים כאשר אין סמלים זמינים.

__insmod_ modulename _Ppersistent_ שם קובץ

נוצר רק על ידיinsmod אם המודול כולל פרמטר אחד או יותר המסומנים כנתונים מתמשכים ושם קובץ לשמירת נתונים מתמשכים (ראה, לעיל) זמין.

הבעיה השנייה עם debugging kernel אופס במודולים הוא התוכן של / proc / ksyms ו / proc / modules יכול להשתנות בין אופס וכאשר אתה מעבד את קובץ היומן. כדי להתגבר על בעיה זו, אם הספרייה / var / log / ksymoops קיים אזinsmod וrmod באופן אוטומטי להעתיק / proc / ksyms ו / proc / מודולים ל / var / log / ksymoops עם הקידומת של 'תאריך +% Y%%% d% H% M% S`. מנהל המערכת יכול לספר ksymoops אילו קבצי תמונה להשתמש בעת איתור באגים. אין מתג להשבית את העותק האוטומטי. אם אתה לא רוצה שזה יקרה, לא ליצור / var / log / ksymoops. אם ספריה זו קיימת, היא צריכה להיות בבעלות השורש ולהיות במצב 644 או 600 ואתה צריך להפעיל את התסריט כל יום או משהו כזה. הסקריפט שלהלן מותקן כ- insmod_ksymoops_clean.

#! / bin / sh # מחק ksyms שנשמרו ומודולים לא לגשת ב 2 ימים אם -d / var / log / ksymoops לאחר מכן בחר # ודא שיש תמיד גרסה אחת לפחות d = `תאריך +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules חיפוש / var / log / ksymoops-type f-atime +2-rec rm {}; Fi

מידע בסיסי לדעת

NAME

insmod - להתקין מודול הקרנל loadable

סינופסיס

insmod -fhkLmnpqrsSvVxXyYN -e persist_name module_name -O blob_name -P קידומת מודול סמל= ערך …