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

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin

quick_linkHAL ו-D-BUS לשרותכם

published at 17/09/2004 - 08:40 · ‏פורסם mksoft · ‏tags לינוקס · שלח לחברידידותי למדפסת
לינוקס אחד הנושאים הבעייתיים עבור משתמשים חדשים (במיוחד משתמשי הפצות כגון דביאן או ג'נטו) הוא עיגון התקנים חיצוניים (זכרונות USB, מצלמות וכדו'). הפצות שונות, במיוחד אלו הנחשבות ידידותיות יותר פתרו זאת בדרכים שונות, כגון supermount במנדרייק או subfs בסוזה.

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

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


חומר רקע:

D-BUS

זו מערכת לתקשורת בין תהליכים, IPC (מומלץ לקרוא ב-tutorial שלהם על ההבדלים העיקריים בינה ליישומי IPC אחרים). היא מורכבת ממספר שכבות:

1. ספריה בשם libdbus המאפשרת לשני יישומים להתחבר אחד לשני ולהחליף מסרים
2. תהליך רקע המבוסס על libdbus שמספק ערוץ אליו יכולים להתחבר מספר רב של יישומים. ה-daemon יכול לנתב הודעות מיישום לאפס או יותר יישומים אחרים.
3. ספריות מעטפת המספקות ממשק לתשתיות קיימות כגון libdus-qt, libdbus-gtk או מתאמים לשפות שונות כגון פייתון.

משתמשי KDE בוודאי מכירים את הקונספט הזה בצורת dcop, משתמשי gnome בצורת corba/bonobo וישנם יישומים שונים של מנגנוני IPC אחרים כמו MBUS, XML-RPC וכדו'. D-BUS בא לענות על שני צרכים ספציפיים:

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

המענה לצורך הראשון הסתמך על הניסיון הרב שהצטבר בסביבות העבודה של gnome ו-kde, ויתרונו הוא בתלות יחידה בספריית xml - כרגע expat או libxml (להבדיל מ-dcop לדוגמא).

השני בא לענות על בעיה שכרגע חסרת מענה (לפחות כזה שמקובל על חלק גדול): התקשורת בין שני מתחמים שונים ורמות אבטחה שונות. דוגמא לכזו היא שליחת מידע של hotplug ממתחם הקרנל אל מתחם סביבת העבודה או מנהל מרוחק (וקבלת תשובות).


HAL - Hardware Abstraction Library

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

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

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

חשוב לציין ש-HAL אינו משמש לגישה לחומרה עצמה אלא רשימה של החומרה הקיימת (למי שמותקן אצלו, lshal יספק הצצה לרשימה הזו) והגדרת התקן לרשימה שכזו. נשאלת השאלה אודות התועלת שרשימה כזו יכולה לספק. ב-FAQ הם מזכירים שיישומים שולחניים גדולים מתבססים על מספר גדול של ספריות המספקות ABI יציב ושכבות הפשטה.

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





עד כאן התאוריה, נחזור לדוגמא. מה שיקרה כאשר נחבר התקני אחסון חיצוניים הוא ייצור הודעה על ידי hotplug והעברתה על ערוץ התקשורת של D-BUS ל-HAL. ההתקנה בג'נטו (שניהם ממוסכים, ולא לשכוח להפעיל את ה-services) מאפשרת בברירת המחדל את סקריפט ה-fstab-sync, מה שיעדכן אוטומטית את ה-fstab ויוסיף נקודות עיגון עבור הכניסות החדשות תחת /media (מוגדר ב-FHS). בדוגמא הבאה נחבר דיסק חיצוני 80GB שמחובר בעזרת מתאם usb ומצלמה דיגטלית שעובדת בתור usb-storage.


הנה החלקים הרלוונטיים מה-fstab (שתי השורות האחרונות, שנוספו אוטומטית ע"י hal):

/dev/floppy/0 /media/floppy auto noauto,user,exec,dev,suid 0 0
/dev/hdc /media/cdrw_dvdrom auto noauto,user,exec,dev,suid,ro 0 0


ותצלום מסך של המחשב כפי שגנום רואה אותו:
<img src="whatsup/images/articles/HAL_pre.png" alt="HAL pre">


כעת נחבר את שני ההתקנים, כך ייראה החלק הרלוונטי ב-fstab לאחר מכן:
/dev/floppy/0 /media/floppy auto noauto,user,exec,dev,suid 0 0
/dev/hdc /media/cdrw_dvdrom auto noauto,user,exec,dev,suid,ro 0 0
/dev/sda1 /media/usbdisk ext3 noauto,user,exec,dev,suid 0 0
/dev/sdb1 /media/usbdisk1 msdos noauto,user,exec,dev,suid 0 0


והמחשב בגנום ייראה כעת כך:
<img src="whatsup/images/articles/HAL_post.png" alt="HAL post">

מכאן לחיצה כפולה מעגנת את ההתקן וניגשת אליו. עם ניתוק ההתקנים הכניסות יוסרו מה-fstab וכך גם התיקיות שנוצרו תחת /media.


gnome-volume-manager משתמש בתשתיות של HAL ו-D-BUS, לגישה מהירה יותר להתקנים (לדוגמא: הפעלת נגן תקליטורים כשמכניסים תקליטור, תוכנה צריבה כשמכניסים מדיה ריקה וכן הלאה).


למידע נוסף על הפרוייקטים מומלץ לקרוא בשף הבית שלהם ובדוגמאות (חלק עדיין בהתהוות).


קישורים:

דף הבית שך HAL‏, freedesktop.org
דף הבית של D-BUS‏, freedesktop.org
הגדרה תיקית /media ב-FHS‏, pathname.com

D-BUS: האספרנטו (*) של שולחן העבודה הלינוקסי‏, ווטסאפ
 

קישורים רלוונטיים

HAL ו-D-BUS לשרותכם | כניסה / יצירת מנוי חדש | 8 תגובות
סף חסימה
  
ההערות הינן מטעם כותביהן. אין צוות האתר לוקח אחריות על תוכנן
כתבה מצוינת! (ניקוד: 1)
ע"י Inola ב 17/09/2004 - 11:38

(מידע על משתמש | שלח הודעה) http://
ויופי של יישום ב-GNOME.
אך נראה שהלינק 'הגדרת תיקית /media ב-FHS' מת...

[ השב לזאת ]

Re: כתבה מצוינת! ע"י mksoft ב 17/09/2004 - 21:43
Re: HAL ו-D-BUS לשרותכם (ניקוד: 1)
ע"י elcuco ב 17/09/2004 - 12:25

(מידע על משתמש | שלח הודעה) http://http://
אז במקום לקמפל קרנל שלוקח 40 דקות, צריך לקמפל את KDE שלוקח שעה וחצי (kdelibs).

האם ישומי console יהנו מזה?

[ השב לזאת ]

Re: HAL ו-D-BUS לשרותכם ע"י mksoft ב 17/09/2004 - 20:57
Re: HAL ו-D-BUS לשרותכם ע"י elcuco ב 17/09/2004 - 21:46
Re: HAL ו-D-BUS לשרותכם ע"י mksoft ב 18/09/2004 - 00:44
Re: HAL ו-D-BUS לשרותכם (ניקוד: 0)
ע"י פינגווין אנונימי ב 17/09/2004 - 18:52
אגב, השם HAL, באותם ראשי תיבות, היה פעם אחת התכונות החשובות שבה נופפו מתכנני NT: בקרנל של NT יש שכבת HAL שתפקידה לתת ממשק זהה בארכיטקטורות שונות.

לאחר הזניחה של רוב הארכיטקטורות השונות (mips, powerpc ו־alpha) שמענו פחות ופחות על שכבה זו.

ו־HAL הוא כמובן גם המחשב מאודיסאה בחלל. נקווה שלא נצטרך להלחם ב־HAL במחשב שלנו.

[ השב לזאת ]

Re: HAL ו-D-BUS לשרותכם ע"י Jaloobi ב 18/09/2004 - 13:32