**WSL** (ראשי תיבות של: **W**indows **S**ubsystem for **L**inux) היא שכבת תאימות להפעלת קובצי הפעלה בינאריים של לינוקס (בפורמט ELF) בסביבות Windows 10, Windows 11, ו- Windows Server 2019.

במאי 2019, הוכרזה **WSL 2**, ובה שינויים חשובים כגון ליבת לינוקס אמיתית באמצעות תכונות Hyper-V. מהדורת WSL אינה זמינה לכל משתמשי Windows 10 כברירת מחדל. ניתן להתקין אותו על ידי הצטרפות לתוכנית Windows Insider או התקנה ידנית.

סקירה כללית
-----------

המהדורה הראשונה של WSL מספקת ממשק ליבה תואם לינוקס שפותחה על ידי מיקרוסופט, ללא קוד ליבת לינוקס אשר לאחר מכן יכול להריץ מרחב משתמש של GNU, כמו זה של אובונטו, או openSUSE, וכן SUSE Linux Enterprise Server,   Debian וקאלי לינוקס.

מרחב משתמש כזה עשוי להכיל מעטפת GNU Bash ושפת פקודה, עם כלים מקוריים של שורת הפקודה של GNU (sed, awk וכו'), מתורגמנים לשפת תכנות (Ruby, Python וכו'), ואפילו יישומים גרפיים (באמצעות שרת X11 בצד המארח).

הארכיטקטורה עוצבה מחדש ב-WSL 2, עם ליבת לינוקס הפועלת בסביבת מכונה וירטואלית "קלת משקל".

פופולריות וזמינות
-----------------

WSL בטא הוצגה בגרסה 1607 של Windows 10 (עדכון יום השנה) ב-2 באוגוסט 2016. רק אובונטו (עם Bash כמעטפת ברירת המחדל) נתמכה. WSL בטא נקראה גם "Bash on Ubuntu ב-Windows" או "Bash on Windows".

WSL כבר לא היה בטא בגרסה 1709 של Windows 10 (עדכון "יוצרי הסתיו"), שיצא ב-17 באוקטובר 2017. ניתן היה להתקין הפצות לינוקס מרובות והיו זמינות להתקנה בחנות Windows.

WSL זמין רק בגרסאות 64 סיביות של Windows 10 מגרסה 1607. זה זמין גם ב-Windows Server 2019.

מיקרוסופט הכריזה על WSL 2 ב-6 במאי 2019, שכולל קצה אחורי חדש לחלוטין מבוסס VM (מבוסס על תת-קבוצה של תכונות Hyper-V) במקום שכבת ההתאמה הקודמת לשיחות מערכת. WSL 2 נשלח עם Windows 10 גרסת 2004, והועבר גם ל-Windows 10 גרסאות 1903 ו-1909.

תמיכת GPU עבור WSL 2 הוצגה ב-Windows build 20150. תמיכת GUI עבור WSL 2 הוצגה ב-Windows build 21364. שניהם מוכלים ב-Windows 11.

מיקרוסופט הציגה גרסה של Windows Store של WSL ב-11 באוקטובר 2021 עבור Windows 11.

התפתחות
-------

הגיחה הראשונה של מיקרוסופט להשגת תאימות דמוית Unix ב-Windows החלה עם Microsoft POSIX Subsystem, שהוחלפה על ידי Windows Services עבור UNIX דרך MKS / Interix, אשר בסופו של דבר הוצאה משימוש עם שחרורו של Windows 8.1. הטכנולוגיה שמאחורי Windows Subsystem עבור לינוקס מקורה בפרויקט Astoria שלא פורסם, שאיפשר לכמה יישומי אנדרואיד לפעול על Windows 10 Mobile. הוא הפך זמין לראשונה ב- Windows 10 Insider Preview build 14316.

הפרויקטים הקודמים של מיקרוסופט והצד השלישי Cygwin התמקדו ביצירת סביבות ייחודיות דמויות Unix משלהם המבוססות על תקן POSIX,אולם WSL שואפת לתאימות לינוקס מלאה. במקום לעטוף פונקציונליות שאינה מקורית לתוך קריאות מערכת Win32 כפי שהמערכות הקודמות הללו השתמשו בהן, התכנון הראשוני של WSL (WSL 1) מינף את מנהל הליבה של NT כדי לשרת תוכניות לינוקס כתהליכים מינימליים מיוחדים ומבודדים (הידועים *כ"תהליכי פיקו"* ) המחוברים לליבה מצב *"ספקי פיקו"* לקריאות מערכת וטיפול בחריגים, הנבדלים מזה של תהליך NT "וניל", ובוחרים לנצל מחדש יישומי NT קיימים בכל מקום שניתן.

אף על פי ש-WSL (באמצעות עיצוב ראשוני זה) היה הרבה יותר מהיר וללא ספק הרבה יותר פופולרי מאחיו פרויקטי UNIX-on-Windows, מהנדסי ליבת Windows מצאו קושי בניסיון להגביר את הביצועים ותאימות המערכת של WSL על ידי ניסיון לעצב מחדש את ליבת ה-NT הקיימת כדי לזהות ולפעול נכון על ה-API של לינוקס. בכנס של Microsoft Ignite בשנת 2018, מהנדסי מיקרוסופט נתנו סקירה ברמה גבוהה של טכנולוגיית Hyper-V VM חדשה "קלת משקל" עבור קונטיינריזציה שבה ליבה וירטואלית יכולה לעשות שימוש ישיר בפרימיטיבים של NT במארח. בשנת 2019, מיקרוסופט הכריזה על ארכיטקטורת WSL (WSL 2) שתוכננה מחדש באמצעות טכנולוגיית VM זו המארחת אימאג' ליבת לינוקס (מותאמת אישית) בפועל, תוך שהיא טוענת לתאימות מלאה ל-Sycall.

מיקרוסופט רואה ב-WSL "בעיקר כלי למפתחים - במיוחד מפתחי אינטרנט וכאלה שעובדים על או עם פרויקטים בקוד פתוח". בספטמבר 2018 אמרה מיקרוסופט כי "WSL דורש פחות משאבים (CPU, זיכרון ואחסון) מאשר מכונה וירטואלית מלאה" (שלפני WSL הייתה הדרך הישירה ביותר להריץ תוכנת לינוקס בסביבת Windows), תוך שהיא מאפשרת למשתמשים להשתמש ביישומי Windows ובכלי Linux על אותה קבוצת קבצים.

באפריל 2021, מיקרוסופט פרסמה מבנה מבחן של Windows 10 הכולל גם את היכולת להריץ יישומי ממשק משתמש גרפי של לינוקס (GUI) באמצעות WSL 2 ו-CBL-Mariner. מערכת המשנה של Windows עבור Linux GUI (WSLg) שוחררה רשמית בכנס Microsoft Build 2021. זה כלול ב-Windows 10 Insider build 21364 ואילך.

ארכיטקטורה
----------

### WSL 1

#### שירות מנהל LXSS

LXSS Manager Service הוא השירות שאחראי על האינטראקציה עם תת-המערכת (דרך *מנהלי ההתקן* `lxss.sys` ו- `lxcore.sys`), והדרך שבה Bash.exe (שלא להתבלבל עם ה-Shells המסופקים על ידי הפצות לינוקס) משיק את הלינוקס תהליכים, כמו גם טיפול בקריאות מערכת לינוקס ובנעילות הבינאריות במהלך ביצוען.

כל תהליכי לינוקס המופעלים על ידי משתמש מסוים נכנסים ל-"Linux Instance" (בדרך כלל, התהליך הראשון שהופעל הוא init). ברגע שכל האפליקציות נסגרות, המופע נסגר.

#### wsl.exe

הפקודה `wsl.exe` משמשת לניהול הפצות בתת-מערכת Windows עבור לינוקס בשורת הפקודה. זה יכול לרשום הפצות זמינות, להגדיר הפצת ברירת מחדל ולהסיר הפצות. ניתן להשתמש בפקודה גם כדי להפעיל קבצים בינאריים של לינוקס משורת הפקודה של Windows או Windows PowerShell. כאשר `wsl.exe` מחליף את `lxrun.exe` שהוצא משימוש החל מ-Windows 10 1803.

##### דוגמאות

הפעלת `uname` ב-WSL באמצעות PowerShell.

```
PS C:\temp> wsl uname --all
Linux WikiMachine 4.4.0-18362-Microsoft #1-Microsoft Mon Mar 18 12:02:00 PST 2019 x86\_64 x86\_64 x86\_64 GNU/Linux

```
דוגמה לשימוש ב `sudo` משורת הפקודה.

```
C:\temp> wsl sudo apt-get update
[sudo] password for username:
Hit:1 https://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 https://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]

```

#### גישה לחומרה ומערכת קבצים

העיצוב של WSL 1 לא כלל אמולציית חומרה/וירטואליזציה (בניגוד לפרויקטים אחרים כגון coLinux) ועושה שימוש ישיר במערכת הקבצים המארחת (דרך `VolFS` ו- `DrvFS` ) וחלקים מסוימים של החומרה, כמו הרשת, מה שמבטיח יכולת פעולה הדדית. לשרתי אינטרנט למשל, ניתן לגשת דרך אותם ממשקים וכתובות IP המוגדרות במארח, והם חולקים את אותן הגבלות על השימוש ביציאות הדורשות הרשאות ניהול, או יציאות שכבר תפוסות על ידי יישומים אחרים. 

ישנם מיקומים מסוימים (כגון תיקיות מערכת) ותצורות שהגישה/שינוי שלהן מוגבלים, גם כאשר הם פועלים כ-root, עם sudo מהמעטפת. יש להפעיל מופע עם הרשאות גבוהות על מנת לקבל "sudo" לתת הרשאות שורש אמיתיות, ולאפשר גישה כזו.

#### מגבלות

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

אפשר להפעיל כמה יישומים גרפיים (GUI) (כגון Mozilla Firefox) על ידי התקנת שרת X11 בתוך סביבת Windows (מארח) (כגון VcXsrv או Xming), אם כי לא ללא אזהרות, כגון היעדר תמיכת אודיו (אם כי ניתן לתקן זאת על ידי התקנת PulseAudio ב-Windows באופן דומה ל-X11) או האצת חומרה (כתוצאה מכך ביצועים גרפיים גרועים). גם תמיכה ב- OpenCL ו- CUDA אינה מיושמת כרגע, אם כי מתוכננת לשחרורים עתידיים.

מיקרוסופט ציינה ש-WSL תוכנן לפיתוח יישומים, ולא עבור מחשבים שולחניים או שרתי ייצור, והמליצה להשתמש במכונות וירטואליות (Hyper-V), Kubernetes ו- Azure למטרות אלו.

### WSL 2

גרסה 2 מציגה שינויים בארכיטקטורה. מיקרוסופט בחרה בווירטואליזציה באמצעות קבוצת משנה שעברה אופטימיזציה גבוהה של תכונות Hyper-V, על מנת להפעיל את הליבה וההפצות (בהתבסס על הליבה), מה שמבטיח ביצועים שוות ערך ל-WSL 1. למען תאימות לאחור, מפתחים לא צריכים לשנות שום דבר בהפצות שפורסמו. ניתן לשנות את הגדרות WSL 2 על ידי *התצורה הגלובלית של WSL*, הכלולה בקובץ INI בשם `.wslconfig` בתיקייה User Profile .

התקנת ההפצה שוכנת בתוך מערכת קבצים בפורמט ext4 בתוך דיסק וירטואלי, ומערכת הקבצים המארחת נגישה בשקיפות באמצעות פרוטוקול 9P,  בדומה לטכנולוגיות אחרות של מכונות וירטואליות כמו QEMU. עבור המשתמשים, מיקרוסופט הבטיחה עד פי 20 מביצועי הקריאה/כתיבה של WSL 1. מ-Windows מסופק מפנה רשת של IFS עבור גישה לקובצי אורח של Linux באמצעות קידומת נתיב UNC של `\\wsl$` .

WSL 2 דורש Windows 10 גרסה 1903 ומעלה, עם Build 18362 ומעלה, עבור מערכות x64, וגרסה 2004 ומעלה, עם Build 19041 ומעלה, עבור מערכות ARM64. 

### WSLg

WSLg הוא קיצור של *Windows Subsystem for Linux GUI* שנבנה במטרה לאפשר תמיכה בהפעלת יישומי Linux GUI (X11 ו-Wayland) ב-Windows בחוויית שולחן עבודה משולבת במלואה. WSLg שוחרר רשמית בכנס Microsoft Build 2021. זה כלול ב-Windows 10 Insider build 21364 ואילך. עם זאת, עם הצגת Windows 11 WSLg יוצאת עם מבנה ייצור של חלונות המביא תמיכה עבור גרפיקה ואודיו גם באפליקציות WSL.

#### דרישות מוקדמות להפעלת WSLg

* Windows 11 או Windows 10 Insider Preview (build 21362 ואילך)
* הפעל WSLg על מערכת עם GPU וירטואלי (vGPU) מופעל עבור WSL (אופציונלי, אולם זה מאפשר עיבוד OpenGL מואץ בחומרה)

קישורים חיצוניים
----------------

ויקישיתוף מדיה וקבצים בנושא **WSL** בוויקישיתוף
* 

* אתר האינטרנט הרשמי של WSL

* אתר האינטרנט הרשמי של WSL (באנגלית)
* *Windows Command Line* blog
* WSL on Microsoft Docs
* WSL on GitHub
* WSL2-Linux-Kernel on GitHub
* *Windows Command Line Tools For Developers* blog
* Brown, Pete (22 ביולי 2016). "Fun with the Windows Subsystem for Linux". *Windows Developer Blog*. Microsoft. `{{cite web}}`:  (עזרה)
* WSL, הבלוג הרשמי

הערות שוליים
------------

1. ↑  June 2021, Darren Allan 23 (23 ביוני 2021). "Windows 11 could seamlessly run graphical Linux apps". *TechRadar* (באנגלית). נבדק ב-2021-06-29. `{{cite web}}`:  (עזרה)
2. 1 2 3  Craig Loewen (2019-05-06). "Announcing WSL 2". *Windows Command Line Tools For Developers*.
3. 1 2  mscraigloewen. "About WSL 2". *docs.microsoft.com*.
4. ↑  craigloewen-msft. "Install WSL on Windows 10". *docs.microsoft.com* (באנגלית אמריקאית). נבדק ב-2021-06-11.
5. ↑  Gerwitz, Mike. "GNU/kWindows". *mikegerwitz.com*. נבדק ב-8 באפריל 2018. `{{cite web}}`:  (עזרה)
6. ↑  Harsh, Mike (30 במרץ 2016). "Run Bash on Ubuntu on Windows". *Building Apps for Windows*. Microsoft. `{{cite web}}`:  (עזרה)
7. ↑  Finley, Klint (30 במרץ 2016). "Why Microsoft Making Linux Apps Run on Windows Isn't Crazy". *Wired*. Condé Nast. `{{cite web}}`:  (עזרה)
8. ↑  Kirkland, Dustin (30 במרץ 2016). "Ubuntu on Windows – The Ubuntu Userspace for Windows Developers". *Ubuntu Insights*. Canonical. `{{cite web}}`:  (עזרה)
9. ↑  Hammons, Jack (9 באפריל 2016). "Bash on Ubuntu on Windows". *MSDN*. Microsoft. `{{cite web}}`:  (עזרה)
10. ↑  Get openSUSE Leap 42 - Microsoft Store
11. ↑  Get SUSE Linux Enterprise Server 12 - Microsoft Store
12. ↑  Yegulalp, Serdar (12 במאי 2017). "Windows Subsystem for Linux welcomes Suse and Fedora options". *InfoWorld*. נבדק ב-16 בספטמבר 2017. `{{cite web}}`:  (עזרה)
13. 1 2  "What's new in WSL in Windows 10 Fall Creators Update - Windows Command Line". *Windows Command Line*. 11 באוקטובר 2017. נבדק ב-15 באוקטובר 2021. `{{cite web}}`:  (עזרה)
14. ↑  "Debian GNU/Linux for WSL now available in the Windows Store". *Windows Command Line Tools For Developers* (באנגלית אמריקאית). נבדק ב-7 במרץ 2018. `{{cite news}}`:  (עזרה)
15. ↑  "Kali Linux in the Windows App Store" (באנגלית אמריקאית). נבדק ב-9 במרץ 2018. `{{cite news}}`:  (עזרה)
16. 1 2 3 4 5  "Frequently Asked Questions for WSL". Microsoft. נבדק ב-13 בנובמבר 2016. `{{cite web}}`:  (עזרה)
17. ↑  "WSL 2 will be generally available in Windows 10, version 2004 - Windows Command Line". *Windows Command Line*. 13 במרץ 2020. נבדק ב-15 באוקטובר 2021. `{{cite web}}`:  (עזרה)
18. ↑  "WSL 2 Support is coming to Windows 10 Versions 1903 and 1909 - Windows Command Line". *Windows Command Line*. 20 באוגוסט 2020. נבדק ב-15 באוקטובר 2021. `{{cite web}}`:  (עזרה)
19. ↑  "GPU accelerated ML training inside the Windows Subsystem for Linux - Windows Developer Blog". *Windows Blog*. 17 ביוני 2020. נבדק ב-16 באוקטובר 2021. `{{cite web}}`:  (עזרה)
20. ↑  "The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux - Windows Command Line". *Windows Command Line*. 21 באפריל 2021. נבדק ב-16 באוקטובר 2021. `{{cite web}}`:  (עזרה)
21. ↑  "A preview of WSL in the Microsoft Store is now available! - Windows Command Line". *Windows Command Line*. 11 באוקטובר 2021. נבדק ב-16 באוקטובר 2021. `{{cite web}}`:  (עזרה)
22. ↑  Bright, Peter (6 באפריל 2016). "Why Microsoft needed to make Windows run Linux software". *Ars Technica*. Condé Nast. `{{cite web}}`:  (עזרה)
23. ↑  Aul, Gabe (6 באפריל 2016). "Announcing Windows 10 Insider Preview Build 14316". *Windows Experience Blog*. Microsoft. `{{cite web}}`:  (עזרה)
24. ↑  "Windows Subsystem for Linux Overview". *Windows Subsystem for Linux* (באנגלית אמריקאית). נבדק ב-22 באפריל 2018. `{{cite news}}`:  (עזרה)
25. ↑  Microsoft Ignite (2018-10-02), *OS internals: Technical deep-dive into operating system innovations - BRK3365*, אורכב מ-המקור ב-2021-11-09, נבדק ב-2019-05-07
26. ↑  Foley, Mary Jo (2021-04-21). "New Windows 10 test build adds first preview of Linux GUI apps on WSL". *ZDNet* (באנגלית אמריקאית). נבדק ב-2021-04-23.
27. ↑  "The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux". 21 באפריל 2021. `{{cite web}}`:  (עזרה)
28. 1 2  Abrams, Lawrence (2021-05-29). "Hands on with WSLg: Running Linux GUI apps in Windows 10". *Bleeping Computer*. נבדק ב-2021-05-30.
29. ↑  Jack Hammons (22 באפריל 2016). "Windows Subsystem for Linux Overview". *Windows Subsystem for Linux blog on MSDN*. `{{cite web}}`:  (עזרה)
30. ↑  Manage and configure Windows Subsystem for Linux
31. ↑  Windows Subsystem for Linux interoperability with Windows
32. ↑  Command Reference for Windows Subsystem for Linux
33. ↑  Jack Hammons (15 ביוני 2016). "WSL File System Support". *Windows Subsystem for Linux blog on MSDN*. `{{cite web}}`:  (עזרה)
34. ↑  Jack Hammons (8 בנובמבר 2016). "WSL Networking". *Windows Subsystem for Linux blog on MSDN*. `{{cite web}}`:  (עזרה)
35. ↑  "Please enable WSL to run 32 bit ELF binaries". *Windows Developer feedback (Microsoft/UserVoice)*.
36. ↑  "Support for 32-bit i386 ELF binaries". *GitHub*.
37. ↑  "Windows 10's Bash shell can run graphical Linux applications with this trick". *PC World*. נבדק ב-10 בספטמבר 2018. `{{cite web}}`:  (עזרה)
38. ↑  "GPU not accesssible for running tensorflow and installing CUDA · Issue #1788 · Microsoft/WSL". *GitHub*. נבדק ב-10 בספטמבר 2018. `{{cite web}}`:  (עזרה)
39. ↑  "OpenCL & CUDA GPU support". *Windows Developer feedback (Microsoft/UserVoice)*. 15 בספטמבר 2016. נבדק ב-10 בספטמבר 2018. `{{cite web}}`:  (עזרה)
40. ↑  Loewen, Craig (26 ביולי 2019). "What's new for WSL in Insiders Preview Build 18945". *Microsoft devblog*. אורכב מ-המקור ב-26 ביולי 2019. נבדק ב-26 ביולי 2019. In this new update we’ve added the ability to start using global config options for WSL. These options are targeted towards power users who want to further customize their WSL experience. `{{cite web}}`:  (עזרה)
41. ↑  Hillis, Ben (25 ביולי 2019). "MicrosoftDocs/WSL | Build 18947". *GitHub*. אורכב מ-המקור ב-26 ביולי 2019. נבדק ב-26 ביולי 2019. `{{cite web}}`:  (עזרה)
42. ↑  "A Deep Dive Into How WSL Allows Windows to Access Linux Files". *Windows Command Line Tools For Developers* (באנגלית אמריקאית). 2019-05-30. נבדק ב-2019-06-24.
43. ↑  Jujjuri, Venkateswararao; Van Hensbergen, Eric; Liguori, Anthony; Pulavarty, Badari (ביולי 13–16, 2010). "VirtFS—A virtualization aware File System pass-through" (PDF). *Linux Symposium*. `{{cite journal}}`:  (עזרה)
44. ↑  "Announcing WSL 2". *Windows Command Line Tools For Developers* (באנגלית אמריקאית). 2019-05-06. נבדק ב-2019-06-24.
45. ↑  "Installation Instructions for WSL 2" (באנגלית אמריקאית). נבדק ב-2020-05-07.
46. 1 2 3  *Welcome to WSLg*, Microsoft, 2021-11-07, נבדק ב-2021-11-07
47. ↑  Salter, Jim (2021-10-07). "The best part of Windows 11 is a revamped Windows Subsystem for Linux". *Ars Technica* (באנגלית אמריקאית). נבדק ב-2021-11-07.