
ה Bash באובונטו ב- Windows מאפשר להפעיל בינאריות מקומיות של ELF64 ב- Linux באמצעות מערכת המשנה של Windows עבור Linux (WSL). אף על פי שהרבה אנשים הזדעזעו מההודעה Bash on Ubuntu, ראוי להזכיר שהיא פותחת דלתות חדשות לתאימות בין מערכות הפעלה שונות. מיקרוסופט עושה צעד נוסף קדימה וחושפת כיצד WSL שלה פועל כדי שנוכל להבין טוב יותר כיצד שתי המערכות מתקשרות זו עם זו.
WSL נוצר על ידי צוות Microsoft Windows Kernel ומכיל גם רכיבי מצב משתמש וגם מצב ליבה. באופן ספציפי יותר, המערכת מורכבת מ:
- שירות מנהל הפעלות במצב משתמש המטפל במחזור החיים של מופע לינוקס
- מנהלי התקנים של ספקי פיקו (lxss.sys, lxcore.sys) שתפקידם לחקות גרעין לינוקס על ידי תרגום סיסמאות לינוקס
- Pico מעבד את אירוח מצב המשתמש ללא שינוי בלינוקס (למשל / bin / bash).
הקשר בין שלושת המרכיבים מתואר כדלקמן:
זהו הרווח בין מצב בינארי של Linux למצב המשתמש לבין רכיבי הליבה של Windows שבו הקסם קורה. על ידי הצבת קבצים בינאריים ללא שינוי של לינוקס בתהליכי Pico אנו מאפשרים להפנות קריאות מערכת לינוקס לליבת Windows. מנהלי ההתקנים lxss.sys ו- lxcore.sys מתרגמים את קריאות מערכת הלינוקס לממשקי API של NT ומחקים את ליבת לינוקס.
האתגר העיקרי בתהליך הוא לגרום לשתי המערכות לעבוד יחד:
WSL מבצעת קבצי בינאריה ELF64 ללא שינוי של לינוקס על ידי וירטואליזציה של ממשק ליבת לינוקס על גבי ליבת Windows NT. אחד ממשקי הליבה שהוא חושף הם שיחות מערכת (syscalls). סיסקל הוא שירות המסופק על ידי הליבה שניתן לקרוא לו ממצב משתמש. גם ליבת לינוקס וגם ליבת Windows NT חושפות כמה מאות סיסקליות למצב משתמש, אך יש להן סמנטיקה שונה ובדרך כלל אינן תואמות ישירות. לדוגמא, ליבת לינוקס כוללת דברים כמו מזלג, פתיחה והרג, בעוד שלגרעין Windows NT יש את NtCreateProcess, NtOpenFile ו- NtTerminateProcess המקבילים.
מערכת המשנה של Windows עבור Linux כוללת מנהלי התקנים למצב הליבה (lxss.sys ו- lxcore.sys) האחראיים על טיפול בבקשות קריאה למערכת לינוקס בתיאום עם ליבת Windows NT. מנהלי ההתקנים אינם מכילים קוד מליבת הלינוקס אלא הם יישום של חדר נקי של ממשקי ליבה תואמים לינוקס. במקורות לינוקס מקוריים, כאשר מערכת סינכרון נעשית ממצב הפעלה של משתמש, היא מטופלת על ידי ליבת לינוקס. ב- WSL, כאשר מערכת בקשה נעשית מאותו הפעלה, ליבת Windows NT מעבירה את הבקשה אל lxcore.sys. במידת האפשר, lxcore.sys מתרגם את הסקאלה של לינוקס לשיחה המקבילה של Windows NT אשר בתורו עושה את ההרמה הכבדה.
בהתחשב בהתעניינותה של מיקרוסופט בפלטפורמות קוד פתוח, אנשים רבים תהו האם ענקית הטכנולוגיה צריכה לרכוש חברות גדולות הממוקדות בלינוקס כמו Canonical, החברה שעומדת מאחורי מערכת ההפעלה אובונטו. למרות שמיקרוסופט וקנוניקל שיתפו פעולה בתוכנות קוד פתוח, אף אחת מהן לא פרסמה הערות על אפשרות זו.
אם אתה מעניין כיצד מתפתחת האינטראקציה של לינוקס - Windows, עבור אל הבלוג של מיקרוסופט. הצוות הבטיח כי יעלו פוסטים נוספים בבלוג בנושא זה.
סיפורים קשורים שאתה צריך לבדוק:
- משתמשי לינוקס מדווחים על בעיות "אוזניות הפסיקו לעבוד ב- Windows 8.1"
- מיקרוסופט ו- Canonical מביאות את Bash ל- Windows 10 ב- Build 2016
- מינכן מתחילה להפיץ תקליטורי אובונטו בחינם למשתמשי Windows XP