ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
hq4everלא בפורום כעת ת.הצטרפות: 21/07/2004 · הודעות: 667 · מיקום: ראשון לציונה, Israel
 

הודעה פורסם: 14/08/2004 - 14:17
נושא ההודעה: מה זה kernel module ?

- אני יודע שזה כמו דרייבר בMS אני גם יודע שניתן להוסיף מודול מותאם אישית (מכתבה שהיתה פה על כך שמולי בן יהודה הוסיף קרנל מודול בתחרות ההאקינג באוגוסט פינגווין 3, וגם מבלוג שקראתי של אחד המתחרים[לצערי אני לא מצליח למצוא את הלינק], בכל מקרה נהנתי לקרוא וללמוד תודה)

אבל עדיין אני לא מצליח להבין בדיוק איך זה עובד ?
מה הם השימושים בקרנל מודול, כלומר האם רק על מנת להוסיף "דרייבר" למערכת או שיש לו שימושים נוספים בלינוקס ?
באיזה שפה כותבים קרנל מודול ? (C, אסמבלי או האם יש שפה מיוחדת לכתיבה של קרנל?)
איך אני יכול לדעת איזה קרנל מודול מותקנים אצלי? האם יכולה להיות מערכת ללא קרנל מודול בכלל ?
למה הכוונה ב "להוסיף את X כמודול במקום לקמפל אותו ישירות לקרנל" ?

ו2 שאלות קצת יותר מתקדמות (לפחות מבחינתי) :
האם קרנל מודול והקרנל עצמו חולקים אותו תחום כתובות בזכרון, ואם לא אז האם קרנל מודול יכול לכתוב לתחום הזכרון שבו הקרנל עצמו משתמש ?
אם קרנל מודול גורם לשגיאה האם הקרנל יכול לשחזר את עצמו כמו במקרה של שגיאה בתוכנית או ששגיאת הרצה בקרנל מודול משמעה קריסה כללית של כל המערכת ?

תודה רבה, מקסים.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
melatoninלא בפורום כעת ת.הצטרפות: 03/08/2003 · הודעות: 112 ·
 

הודעה פורסם: 14/08/2004 - 14:57
נושא ההודעה:

אני לא מבין את הנושא ברמות הטכניות הגבוהות שלו, אבל אני אנסה לעשות לך קצת סדר מתוך נסיוני המועט

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

בעת קימפול קרנל אתה יכול לבחור איזה תכונות אתה רוצה להכניס לקרנל שלך, ואיזה לא. לדוגמה, אם אתה משתמש במערכת קבצים מסוג reiserfs תרצה להוסיף לה תמיכה בקרנל, משום שאחרת לא תוכל להשתמש בה. לעומת זאת, אם אתה לא משתמש ב ext3 ואין לך שום כוונה להשתמש בה בעתיד, תוכל לבחור לא להוסיף תמיכה למערכת הקבצים הזו, פשוט מכיוון שאין לך צורך בתמיכה כזאת. לאחר שתעבור על כל האפשרויות ותקמפל את הקרנל תקבל קובץ בודד שהוא-הוא הקרנל הנטען בעת עליית המערכת.

עכשיו, נניח ויש תכונה של הקרנל שאתה רוצה להשתמש בה, אבל לא תמיד (לדוגמה, תמיכה במערכת קבצים שאתה מבצע בה שימוש נדיר, שימוש של פעם בחודש ב FireWire, וכד'). מצד אחד, אתה צריך תמיכה באפשרות הזו, שכן אחרת לא תוכל לעבוד איתה. מצד שני, אין סיבה לטעון כל פעם עם עליית המערכת דברים שהסבירות שתשתמש בהם נמוכה - הדבר מגדיל את זמן עליית המערכת ואת גודל הקרנל עצמו. כדי לפתור את הבעיה הזו קיימים kernel modules. אם תבחר לקמפל תכונה כלשהי כקרנל מודול (ולא את כולן אפשר), היא לא תתווסף לתוך הקרנל עצמו, אלא תישמר מחוצה לו כקובץ נפרד. תוכל לבחור מתי ברצונך לטעון את המודול ומתי להסירו (ע"י פקודות כמו modprobe), וברגע שהמודול נטען לתוך הקרנל הוא משמש כחלק אינטגרלי ממנו, כאילו קומפל ישירות לתוכו (מה שעונה בחיוב לשאלתך "האם קרנל מודול והקרנל עצמו חולקים אותו תחום כתובות בזכרון"). בקיצור, קרנל מודול מאפשר טעינה by demand של מודולים לתוך הקרנל, במקום ההכרח לטעון אותם תמיד.

ולמעבר קצרצר על שאר השאלות שלך:
קרנל מודול לא חייב להיות דרייבר, אלא (כמעט) כל תכונה של הקרנל. הוא נכתב ב C, כמו הקרנל עצמו (אולי אפשר גם בשפות אחרות, את זה אני לא יודע).
כדי לדעת איזה מודולים טעונים כרגע במערכת שלך, השתמש בפקודה lsmod. וכן, יכולה להיות מערכת ללא מודולים כלל.
בקשר לשאלתך האחרונה, אענה מתוך אינטואיציה ולא מתוך ניסיון, כי אין לי. קרנל מודול רץ כחלק מהקרנל עצמו, ולכן שגיאה בו זהה לשגיאה בקרנל. היתרון הוא שאם יש לך מודול שגורם לשגיאה אתה יכול לבחור לא להעלות אותו, ולנסות לאבחן ביתר קלות את הבעיה. תקנו אותי אם אני טועה.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
IPלא בפורום כעת ת.הצטרפות: 27/06/2003 · הודעות: 1023 · מיקום: תל אביב
 

הודעה פורסם: 14/08/2004 - 16:36
נושא ההודעה: Re: מה זה kernel module ?

hq4ever :

אבל עדיין אני לא מצליח להבין בדיוק איך זה עובד ?
מה הם השימושים בקרנל מודול, כלומר האם רק על מנת להוסיף "דרייבר" למערכת או שיש לו שימושים נוספים בלינוקס ?
באיזה שפה כותבים קרנל מודול ? (C, אסמבלי או האם יש שפה מיוחדת לכתיבה של קרנל?)
איך אני יכול לדעת איזה קרנל מודול מותקנים אצלי? האם יכולה להיות מערכת ללא קרנל מודול בכלל ?
למה הכוונה ב "להוסיף את X כמודול במקום לקמפל אותו ישירות לקרנל" ?

ו2 שאלות קצת יותר מתקדמות (לפחות מבחינתי) :
האם קרנל מודול והקרנל עצמו חולקים אותו תחום כתובות בזכרון, ואם לא אז האם קרנל מודול יכול לכתוב לתחום הזכרון שבו הקרנל עצמו משתמש ?
אם קרנל מודול גורם לשגיאה האם הקרנל יכול לשחזר את עצמו כמו במקרה של שגיאה בתוכנית או ששגיאת הרצה בקרנל מודול משמעה קריסה כללית של כל המערכת ?

תודה רבה, מקסים.


קרא פה בשביל לדעת בכלליות איך זה עובד:
http://www.xml.com/ldd/chapter/book/ch02.html#t3

זה מאפשר לך להדר קרנל שמתאים לחומרה שלך, ורק אם קנית חומרה חדשה, אתה מהדר את המולול המתאים, ומעלה אותו, בלי צורך לאחתחל את המחשב. זה חשוב במיוחד לכותבי הדרייורים, שהעבודה הזאת לא הייתה נוחה במיוחד אם צריך להדר את הקרנל מחדש בשביל כל שטות.
לינוקס כתוב בC ואסמבלי, כך גם המודלים. מישהו הצליח לכתוב מודול ל2.4 בC++, אבל זה ממש לא מומלץ.
המערכת יכולה להיות ללא מודולים בכלל בעיקר לצורכי אבטחה. כאשר אתה מהדר את לינוקס, פשוט תבטל את האפשרות של מודולים.
אם אתה מעלה מודול, הוא חלק מהקרנל, והוא יכול לעשות הכל.
זה תלוי איזה שגיאה הוא עושה. ברוב הפעמים אפשר להחלץ מהטעות, אבל לפעמים הולכת כל המערכת ויש kernel panic במקרה הטוב. זה לא משנה אם העלת אותו בזמן ריצה או שהוא חלק מהקרנל המקורי.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
xyzאורח · ·
 

הודעה פורסם: 13/10/2005 - 15:26
נושא ההודעה:

האם בשביל להתקין דרייבר (ולא משנה אם כ-kernel module או לא) חייבים לקמפל את הקרנל?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 13/10/2005 - 16:09
נושא ההודעה:

לא
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 13/10/2005 - 16:21
נושא ההודעה:

קצת סדר במונחים.
דרייבר הוא תוכנה שמאפשרת שימוש בחומרה כלשהיא במחשב.
דרייבר יכול לעבוד ב-kernel space או user space. בד"כ דרייברים עובדים ב-kernel space. דרייברים שרצים ב-kernel space נקראים kernel modules.
ל-kernel modules יש 2 אפשרויות הידור, כחלק מליבה (kernel) או כטעינה דינאמית (dynamic loading).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
xyzאורח · ·
 

הודעה פורסם: 13/10/2005 - 16:39
נושא ההודעה:

תודה על התשובה. אשמח לעוד קצת סדר:
1. אם התקנתי דרייבר ע"י RPM זה אומר שהוא נמצא ב-user space?
2. איך מתקינים (באופן כללי) דרייברים ב-
א. user space
ב. כחלק מהקרנל
ג. כ-dynamic loading
3. האם רק סעיף ב' לעיל מחייב קימפול הקרנל?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 13/10/2005 - 17:10
נושא ההודעה:

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

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

הודעה פורסם: 13/10/2005 - 19:14
נושא ההודעה:

במערכות הפעלה מקובל ליצור שכבה נפרדת של ליבת מערכת ההפעלה (באנגלית: kernel). בד"כ הליבה מופרדת מתהליכי משתמש רגילים ומורצת במצב מוגן גם מצד החומרה (לדוגמה: במחשבי x86: קוד הקרנל רץ ב־ring0 ותהליכי משתמש: ב־ring3).

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

אולם עדיין במקרים רבים דרייברים של התקני חומרה צריכים קוד שרץ בתוך ליבת המערכת כדי לקבל גישה ישירה לחומרה. בד"כ אותם דרייברים עובדים מול ממשקים סטנדרטיים יחסית בליבת המערכת ומחברים אותם למימוש המסויים בהתקן.

מודול קרנל בלינוקס הוא קובץ שכולל קוד של ליבת המערכת (הקרנל) בפורמט שמאפשר טעינה שלו למערכת רצה. בלינוקס הטעינה תצליח רק אם יש התאמה בגרסאות בין הקרנל שמולו נבנה המודול לבין הקרנל שרץ במערכת. במערכות דביין, לדוגמה, יוצרים חבילת קרנל חדשה כל פעם שמשתנה הממשק הבינארי שלה: בהתחלה עבדו עם 2.6.8-1 , אולם בעקבות תיקונים ששינו את הממשק למודולים היו חייבים לשנות את השם ל־2.6.8-2 . כמוכן יש סיומת עם "שם התצורה": לדוגמה: 386 או ‎686-smp. ברגע שידועה התצורה, אפשר לבנות מולה חבילות בינאריות.

דוגמה לחבילות deb עם מודולי קרנל:
http://rapid.dotsrc.org/experimental
(החבילות zaptel-modules).

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

הודעה פורסם: 26/10/2005 - 09:06
נושא ההודעה:

איזה דיון מעניין!
שאלה: התקנת דרייבר התקינה daemon. איך אפשר לדעת אם הוא הותקן כמודול?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. hq4ever
  2. melatonin
  3. IP
  4. אורח [xyz]
  5. אורח
  6. אורח
  7. אורח [xyz]
  8. אורח
  9. אורח [צפריר]
  10. אורח [אורחת]