✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

על ארכיטקטורה והתקנה של WSL 2.0

Eli Shlomo
|
Dec 1, 2018
alt="blogs"
title="Google"
EuropeClouds.com

במאמר זה נעסוק בנושא WSL 2.0 – ארכיטקטורה, איך מתקינים ועוד.

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

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

ישנם מצבים מסוימים שבהם ניתן לעבוד עם הפצת לינוקס על Windows 10 והפעם באמצעות WSL, או ליתר דיוק עם הגרסה המעודכנת, גרסת WSL 2.0.

סביבת WSL

הגרסה החדשה של סביבת WSL 2 זמינה בגרסת Windows 10 עם בילד 18917 ומעלה, וניתנת להתקנה מתוך Optional Features. בנוסף לכך, WSL 2 תהיה זמינה מתוך development builds בגרסת Windows 10 20H1 (הגרסה תהיה זמינה לקראת אפריל 2020).

סביבת WSL (הגרסה הראשונה)

הסביבה אשר קיימת בגרסאות Windows 10 בילד 1607 ומעלה היא סביבת WSL 1 שיצאה בגרסתה הראשונה, ומתנהגת באופן מעט שונה מאשר סביבת WSL 2.

סביבת WSL 1 בגרסתה הראשונה רצה על רכיב פנימי שנקרא LXSS Manager, ולכן בתחילת דרכה, הפקודות היו מבוססות בעיקר על lxrun.exe, החל מגרסת Windows 10 1803 נעשה שינוי ברכיב (ללא כל קשר לסביבת WSL 2), והפקודות מתבססות בעיקר על wsl.exe.

הרכיב LXSS Manager Service מתקשר באמצעות הדרייברים של lxss.sys ושל lxcore.sys מול Bash ואחרים, אך לא מול הפצות לינוקס, ולכן ישנו API העובד מול לינוקס קרנל ומבצע תשאולים ותרגומים.

ישנן הרשאות ספציפיות לקבצים ותיקיות בכדי שלא יהיה צורך ביצירת Partition של לינוקס, ובכדי שקבצים בינאריים של לינוקס לא ירוצו על Windows שלא מותקנת בו סביבת WSL.

בכל ריצה של WSL 1 ישנו Instance של לינוקס אשר נפתח באופן אוטומטי ברמת משתמש ובכל סיום, אותו לינוקס Instance נסגר באופן אוטומטי.

הפקודה wsl.exe מאפשרת לנהל הפצות לינוקס, לתחזק את אותן ההפצות, להתקין ולהסיר הפצות לינוקס, לבצע פעולות בינאריות וכן הלאה. בנוסף לכך, ניתן להריץ את wsl.exe מתוך ממשק CMD או מתוך ממשק PowerShell.

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

סביבת WSL2

סביבת WSL 2 מגיעה בגרסאות Windows 10 בילד 18917 ומעלה, ובפעם הראשונה מביאה Linux Kernel אמיתי אל Windows 10.

סביבת WSL 2 מגיעה עם ארכיטקטורה חדשה המאפשרת להריץ ELF64 (ליתר דיוק Linux binaries) וכתוצאה מכך, הארכיטקטורה החדשה משנה את הצורה שבה לינוקס עובד אל מול אותה גרסת Windows ומול החומרה שעליה הוא רץ.

2019-11-16_07h21_23



גרסת Linux Kernel בנויה ומותאמת מול WSL 2 על סמך גרסת Linux Kernel 4.19, ותקבל עדכונים שוטפים באמצעות Windows Update. כלומר, כל העדכונים שייצאו ברמת Linux Kernel יעודכנו בהתאם מול WSL 2.

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

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

ארכיטקטורה

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

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

לינוקס בתוך Windows – בסביבת WSL 2 ישנה מכונה (VM) המבוססת על מאפיינים של Hyper-V, אך עדיין לא מדובר על מכונה של ממש, אלא VM אשר מותאם רק לטובת הפעלת Linux.

מטרת המכונה היא לטעון גרסת Linux עם דרייברים ולהפעיל את סביבת המשתמש בלינוקס עם תאימות מלאה מול המארח (על גבי Windows 10), מכיוון שמדובר בכל זאת על מכונה (אומנם לא סטנדרטית) אבל עדיין מדובר על מאפיינים של Hyper-V.

מהיכן נעשית התאימות של סביבת WSL 2 ועליה Kernel Linux מול המכונה הפיסית? כאן בא לידי ביטוי VPCI, או יותר נכון מנגנון Virtual PCI המגיע מתחום Hyper-V Security, כלומר - האפשרות לבצע תאימות או יותר נכון para-virtualized.

למעשה, para-virtualized נכנס לפעולה כאשר מכונה וירטואלית עולה, ולאחר מכן מבצע טעינה עם אותו Kernel ייעודי שלה וניגשת לכל אותם משאבים שיש במכונה הפיסית ללא מגבלות. מידע נוסף בנושא Fuzzing para-virtualized devices in Hyper-V.

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

מצב משתמש – לינוקס Kernel מספק מספר רכיבים ואת UserSpace שם מתרחשות מספר פעולות: UserSpace הוא כל הפעולות אשר מתבצעות מחוץ לאותו Kernel, בין אם ברמת האפליקציות או בגישה להגדרות בינאריות.

בסביבת WSL 2, האזור של UserSpace בינאריים אשר נעשים בצורת Sideload ונוצרים במהלך ההתקנה והגדרת Distro, ביחד עם UserSpace המתשאל את Linux Kernel במידת הצורך.

פעולות בינאריות – הפעולות הבינאריות של לינוקס מבצעות קריאות מערכת על גבי אותו Linux Kernel ועם גישה מלאה למערכת בכדי לבצע פעולות רבות ולהפעיל פונקציות שונות כמו גישה לזיכרון, יצירת תהליכים וכן הלאה.

WSL-2-Architecture.jpg



הארכיטקטורה של סביבת WSL2 בנויה בצורה כזאת שהיא מאפשרת לקרנל של לינוקס יחד עם Linux ELF64 (שלא עבר שינוי) להיות מעל הקרנל של Windows.

סביבת WSL 2 מתרגמת קריאות ושאילתות מתוך Linux Kernel, ומעבירה את אותן הקריאות אל Windows בכדי לעבד את המידע והפעולות בצורה מהירה, ולכן צורת העבודה של סביבת WSL 2 מזכירה במעט (ממש במעט) את Wine, המאפשר להריץ פעולות Windows על Linux.

ועכשיו עולה השאלה - האם יש גישה לרכיבים כדוגמת GPU? עדיין לא, אבל בקרוב תהיה גישה לרכיבים כדוגמת GPU + USB בצורה מלאה, ולצורך העניין, יהיה אפשר להפעיל Password Cracking מתוך סביבת WSL 2 או על גבי הפצת KALI שהיא חלק ממנה (ובמידה והיא מותקנת).

הפצות Linux

ישנן הפצות לינוקס אשר נתמכות בסביבת WSL 2, וישנן הפצות מותאמות מול WSL המצריכות הגדרות ידניות

הפצות נתמכות

Ubuntu
Debian
OpenSUSE / SUSE Enterprise Linux
Kali Linux
Fedora
Pengwin

2019-11-16_10h05_40.png

הפצות מותאמות WSL

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

miniwsl
ArchWSL
AlpineWSL
WSLInstall
wsldl
WSL-Distribution-Switcher
acme-wsl

למי מיועד WSL 2

רכיב ה-WSL שנמצא בגרסאות Windows 10 השונות, מאפשר להריץ הפצות לינוקס שונות לצד Windows 10, ללא הפרעה בין שתי המערכות.

WSL נועדה לאנשי פיתוח ואנשי אבטחת מידע המעוניינים לבצע פעולות שונות מתוך אותה מערכת, ומבלי להתקין עוד מערכת נוספת או להפעיל מצב של שתי מערכות הפעלה על אותה המכונה: למשל, הפצת KALI Linux, במידה ומתקינים את הפצת KALI על גבי WSL, לאחר מכן ניתן לעבוד עם כלי האבטחה המוכרים (כל החבילות והכלים) מתוך אותה מערכת ההפעלה, ולשלב אותה עם כלים נוספים כדוגמת VSCode.

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

למה WSL 2 מתאים?

• ביצוע פעולות פיתוח שונות ומגוונות
• יצירת אוטומציה באמצעות שפות פיתוח שונות כדוגמת Python או .NET
• כלי תקיפה לאנשי אבטחה (בעיקר KALI אבל אפשר לשלב עם Black Arch)
• אינטגרציה ופיתוח מול Docker
• פיתוח מול AI כגון קוגניטיב וכן הלאה
• אינטגרציה עם כלים ושפות שונות, כדוגמת VSCode או PowerShell (יכולה להיות חלק מפיתוח משולב עם שפות נוספות)

למה לא מומלץ להשתמש ב-WSL2?

• אינטגרציה עם כלי תקשורת או שימוש של Low-Level
• אין גרפיקה או שמע (לא בתמיכה מלאה, אבל ישנם כלים שעובדים)
• תמיכה ברכיבי GPU
• עדיין (בדגש על עדיין) אינו מחליף גרסת לינוקס מלאה

כלים

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

WSLGit – כלי המאפשר להריץ פעולות שונות מתוך BASH ומתפקד כפלאגין של VSCode בתוך סביבת WSL.
WSLTools – ניהול סביבות WSL בארגון מתוך ממשק אחד, המאפשר לבצע התקנות של הפצות לינוקס, הפעלה של רכיבים מסוימים בתוך WSL ואפשרויות ניהול נוספות.
WSL Docker Git – סט של סקריפטים שנועד להתקין ולאפשר שימוש של Docker על גבי WSL

איך מתקינים WSL 2

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

דרישות

• גרסת Windows 10 עם בילד 18917
• תמיכה של וירטואליזציה Hyper-V

התקנת WSL 2

בכדי להתקין סביבת WSL 2, יש לבצע את הפעולות הבאות:

הפעלת WSL ברמת Windows 10 – התקנת רכיב WSL בתחנה מתוך ממשק PowerShell, יש להריץ את הפקודה הבאה:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

הפעלת Virtual Machine Platform – הפעלת רכיב VM בתחנה מתוך ממשק PowerShell באמצעות הפקודה הבאה:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

התקנת לינוקס Distro – ישנן מספר גרסאות אשר נתמכות באופן רשמי ע"י Microsoft, וניתן להתקין אותן ישירות מתוך Microsoft Store או מתוך PowerShell, ולאחר מכן להפעיל את אותה ההפצה שהותקנה בצורה הבסיסית בלבד.

בכדי להתקין הפצת לינוקס יש לגשת לכתובת https://aka.ms/wslstore ומשם להמשיך בהתקנה, לדוגמה התקנת KALI על גבי Windows 10.

הגדרת WSL 2 – בסיום התקנת Distro נבצע מספר הגדרות בסביבת WSL 2 מתוך ממשק PowerShell באמצעות הפקודות הבאות:

לפני שנגדיר WSL, נוודא שאכן ישנה הפצה מותקנת מתוך ממשק PowerShell באמצעות הפקודה הבאה:
wsl –list

לאחר מכן נוודא שאותה הפצה מוגדרת עם סביבת WSL 2 מתוך ממשק PowerShell באמצעות הפקודה הבאה:

wsl –set-version Ubuntu 2

ולסיום נוודא שסביבת WSL 2 היא הסביבה הדיפולטית מתוך ממשק ה-PowerShell באמצעות הפקודה הבאה:

wsl –set-default-version 2

בסיום התקנה והגדרת סביבת WSL 2, נוכל לעבוד עם לינוקס Distro ועם כלים שונים כדוגמת VSCode, להגדיר סביבות פיתוח שונות מתוך WSL כדוגמת Python ועוד.

לסיכום

סביבת WSL 2 מביאה איתה בשורה משמעותית בהשוואה לסביבת WSL 1 עם Linux Kernel אמיתי ומותאם, ובגלל הארכיטקטורה של סביבת WSL 2 ניתן לקבל ביצועים טובים יותר וגישה לחומרה המקומית ועל סמך האפשרויות הנ"ל לבצע פעולות לינוקס על גבי Windows.


מאת: אלי שלמה, מומחה למערכות מיקרוסופט וענן

רוצים להתעדכן בתכנים נוספים הקשורים לארכיטקטורת ענן? הצטרפו לפורום המקצועי של IsraelClouds בתחום > להרשמה

במאמר זה נעסוק בנושא WSL 2.0 – ארכיטקטורה, איך מתקינים ועוד.

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

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

ישנם מצבים מסוימים שבהם ניתן לעבוד עם הפצת לינוקס על Windows 10 והפעם באמצעות WSL, או ליתר דיוק עם הגרסה המעודכנת, גרסת WSL 2.0.

סביבת WSL

הגרסה החדשה של סביבת WSL 2 זמינה בגרסת Windows 10 עם בילד 18917 ומעלה, וניתנת להתקנה מתוך Optional Features. בנוסף לכך, WSL 2 תהיה זמינה מתוך development builds בגרסת Windows 10 20H1 (הגרסה תהיה זמינה לקראת אפריל 2020).

סביבת WSL (הגרסה הראשונה)

הסביבה אשר קיימת בגרסאות Windows 10 בילד 1607 ומעלה היא סביבת WSL 1 שיצאה בגרסתה הראשונה, ומתנהגת באופן מעט שונה מאשר סביבת WSL 2.

סביבת WSL 1 בגרסתה הראשונה רצה על רכיב פנימי שנקרא LXSS Manager, ולכן בתחילת דרכה, הפקודות היו מבוססות בעיקר על lxrun.exe, החל מגרסת Windows 10 1803 נעשה שינוי ברכיב (ללא כל קשר לסביבת WSL 2), והפקודות מתבססות בעיקר על wsl.exe.

הרכיב LXSS Manager Service מתקשר באמצעות הדרייברים של lxss.sys ושל lxcore.sys מול Bash ואחרים, אך לא מול הפצות לינוקס, ולכן ישנו API העובד מול לינוקס קרנל ומבצע תשאולים ותרגומים.

ישנן הרשאות ספציפיות לקבצים ותיקיות בכדי שלא יהיה צורך ביצירת Partition של לינוקס, ובכדי שקבצים בינאריים של לינוקס לא ירוצו על Windows שלא מותקנת בו סביבת WSL.

בכל ריצה של WSL 1 ישנו Instance של לינוקס אשר נפתח באופן אוטומטי ברמת משתמש ובכל סיום, אותו לינוקס Instance נסגר באופן אוטומטי.

הפקודה wsl.exe מאפשרת לנהל הפצות לינוקס, לתחזק את אותן ההפצות, להתקין ולהסיר הפצות לינוקס, לבצע פעולות בינאריות וכן הלאה. בנוסף לכך, ניתן להריץ את wsl.exe מתוך ממשק CMD או מתוך ממשק PowerShell.

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

סביבת WSL2

סביבת WSL 2 מגיעה בגרסאות Windows 10 בילד 18917 ומעלה, ובפעם הראשונה מביאה Linux Kernel אמיתי אל Windows 10.

סביבת WSL 2 מגיעה עם ארכיטקטורה חדשה המאפשרת להריץ ELF64 (ליתר דיוק Linux binaries) וכתוצאה מכך, הארכיטקטורה החדשה משנה את הצורה שבה לינוקס עובד אל מול אותה גרסת Windows ומול החומרה שעליה הוא רץ.

2019-11-16_07h21_23



גרסת Linux Kernel בנויה ומותאמת מול WSL 2 על סמך גרסת Linux Kernel 4.19, ותקבל עדכונים שוטפים באמצעות Windows Update. כלומר, כל העדכונים שייצאו ברמת Linux Kernel יעודכנו בהתאם מול WSL 2.

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

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

ארכיטקטורה

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

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

לינוקס בתוך Windows – בסביבת WSL 2 ישנה מכונה (VM) המבוססת על מאפיינים של Hyper-V, אך עדיין לא מדובר על מכונה של ממש, אלא VM אשר מותאם רק לטובת הפעלת Linux.

מטרת המכונה היא לטעון גרסת Linux עם דרייברים ולהפעיל את סביבת המשתמש בלינוקס עם תאימות מלאה מול המארח (על גבי Windows 10), מכיוון שמדובר בכל זאת על מכונה (אומנם לא סטנדרטית) אבל עדיין מדובר על מאפיינים של Hyper-V.

מהיכן נעשית התאימות של סביבת WSL 2 ועליה Kernel Linux מול המכונה הפיסית? כאן בא לידי ביטוי VPCI, או יותר נכון מנגנון Virtual PCI המגיע מתחום Hyper-V Security, כלומר - האפשרות לבצע תאימות או יותר נכון para-virtualized.

למעשה, para-virtualized נכנס לפעולה כאשר מכונה וירטואלית עולה, ולאחר מכן מבצע טעינה עם אותו Kernel ייעודי שלה וניגשת לכל אותם משאבים שיש במכונה הפיסית ללא מגבלות. מידע נוסף בנושא Fuzzing para-virtualized devices in Hyper-V.

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

מצב משתמש – לינוקס Kernel מספק מספר רכיבים ואת UserSpace שם מתרחשות מספר פעולות: UserSpace הוא כל הפעולות אשר מתבצעות מחוץ לאותו Kernel, בין אם ברמת האפליקציות או בגישה להגדרות בינאריות.

בסביבת WSL 2, האזור של UserSpace בינאריים אשר נעשים בצורת Sideload ונוצרים במהלך ההתקנה והגדרת Distro, ביחד עם UserSpace המתשאל את Linux Kernel במידת הצורך.

פעולות בינאריות – הפעולות הבינאריות של לינוקס מבצעות קריאות מערכת על גבי אותו Linux Kernel ועם גישה מלאה למערכת בכדי לבצע פעולות רבות ולהפעיל פונקציות שונות כמו גישה לזיכרון, יצירת תהליכים וכן הלאה.

WSL-2-Architecture.jpg



הארכיטקטורה של סביבת WSL2 בנויה בצורה כזאת שהיא מאפשרת לקרנל של לינוקס יחד עם Linux ELF64 (שלא עבר שינוי) להיות מעל הקרנל של Windows.

סביבת WSL 2 מתרגמת קריאות ושאילתות מתוך Linux Kernel, ומעבירה את אותן הקריאות אל Windows בכדי לעבד את המידע והפעולות בצורה מהירה, ולכן צורת העבודה של סביבת WSL 2 מזכירה במעט (ממש במעט) את Wine, המאפשר להריץ פעולות Windows על Linux.

ועכשיו עולה השאלה - האם יש גישה לרכיבים כדוגמת GPU? עדיין לא, אבל בקרוב תהיה גישה לרכיבים כדוגמת GPU + USB בצורה מלאה, ולצורך העניין, יהיה אפשר להפעיל Password Cracking מתוך סביבת WSL 2 או על גבי הפצת KALI שהיא חלק ממנה (ובמידה והיא מותקנת).

הפצות Linux

ישנן הפצות לינוקס אשר נתמכות בסביבת WSL 2, וישנן הפצות מותאמות מול WSL המצריכות הגדרות ידניות

הפצות נתמכות

Ubuntu
Debian
OpenSUSE / SUSE Enterprise Linux
Kali Linux
Fedora
Pengwin

2019-11-16_10h05_40.png

הפצות מותאמות WSL

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

miniwsl
ArchWSL
AlpineWSL
WSLInstall
wsldl
WSL-Distribution-Switcher
acme-wsl

למי מיועד WSL 2

רכיב ה-WSL שנמצא בגרסאות Windows 10 השונות, מאפשר להריץ הפצות לינוקס שונות לצד Windows 10, ללא הפרעה בין שתי המערכות.

WSL נועדה לאנשי פיתוח ואנשי אבטחת מידע המעוניינים לבצע פעולות שונות מתוך אותה מערכת, ומבלי להתקין עוד מערכת נוספת או להפעיל מצב של שתי מערכות הפעלה על אותה המכונה: למשל, הפצת KALI Linux, במידה ומתקינים את הפצת KALI על גבי WSL, לאחר מכן ניתן לעבוד עם כלי האבטחה המוכרים (כל החבילות והכלים) מתוך אותה מערכת ההפעלה, ולשלב אותה עם כלים נוספים כדוגמת VSCode.

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

למה WSL 2 מתאים?

• ביצוע פעולות פיתוח שונות ומגוונות
• יצירת אוטומציה באמצעות שפות פיתוח שונות כדוגמת Python או .NET
• כלי תקיפה לאנשי אבטחה (בעיקר KALI אבל אפשר לשלב עם Black Arch)
• אינטגרציה ופיתוח מול Docker
• פיתוח מול AI כגון קוגניטיב וכן הלאה
• אינטגרציה עם כלים ושפות שונות, כדוגמת VSCode או PowerShell (יכולה להיות חלק מפיתוח משולב עם שפות נוספות)

למה לא מומלץ להשתמש ב-WSL2?

• אינטגרציה עם כלי תקשורת או שימוש של Low-Level
• אין גרפיקה או שמע (לא בתמיכה מלאה, אבל ישנם כלים שעובדים)
• תמיכה ברכיבי GPU
• עדיין (בדגש על עדיין) אינו מחליף גרסת לינוקס מלאה

כלים

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

WSLGit – כלי המאפשר להריץ פעולות שונות מתוך BASH ומתפקד כפלאגין של VSCode בתוך סביבת WSL.
WSLTools – ניהול סביבות WSL בארגון מתוך ממשק אחד, המאפשר לבצע התקנות של הפצות לינוקס, הפעלה של רכיבים מסוימים בתוך WSL ואפשרויות ניהול נוספות.
WSL Docker Git – סט של סקריפטים שנועד להתקין ולאפשר שימוש של Docker על גבי WSL

איך מתקינים WSL 2

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

דרישות

• גרסת Windows 10 עם בילד 18917
• תמיכה של וירטואליזציה Hyper-V

התקנת WSL 2

בכדי להתקין סביבת WSL 2, יש לבצע את הפעולות הבאות:

הפעלת WSL ברמת Windows 10 – התקנת רכיב WSL בתחנה מתוך ממשק PowerShell, יש להריץ את הפקודה הבאה:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

הפעלת Virtual Machine Platform – הפעלת רכיב VM בתחנה מתוך ממשק PowerShell באמצעות הפקודה הבאה:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

התקנת לינוקס Distro – ישנן מספר גרסאות אשר נתמכות באופן רשמי ע"י Microsoft, וניתן להתקין אותן ישירות מתוך Microsoft Store או מתוך PowerShell, ולאחר מכן להפעיל את אותה ההפצה שהותקנה בצורה הבסיסית בלבד.

בכדי להתקין הפצת לינוקס יש לגשת לכתובת https://aka.ms/wslstore ומשם להמשיך בהתקנה, לדוגמה התקנת KALI על גבי Windows 10.

הגדרת WSL 2 – בסיום התקנת Distro נבצע מספר הגדרות בסביבת WSL 2 מתוך ממשק PowerShell באמצעות הפקודות הבאות:

לפני שנגדיר WSL, נוודא שאכן ישנה הפצה מותקנת מתוך ממשק PowerShell באמצעות הפקודה הבאה:
wsl –list

לאחר מכן נוודא שאותה הפצה מוגדרת עם סביבת WSL 2 מתוך ממשק PowerShell באמצעות הפקודה הבאה:

wsl –set-version Ubuntu 2

ולסיום נוודא שסביבת WSL 2 היא הסביבה הדיפולטית מתוך ממשק ה-PowerShell באמצעות הפקודה הבאה:

wsl –set-default-version 2

בסיום התקנה והגדרת סביבת WSL 2, נוכל לעבוד עם לינוקס Distro ועם כלים שונים כדוגמת VSCode, להגדיר סביבות פיתוח שונות מתוך WSL כדוגמת Python ועוד.

לסיכום

סביבת WSL 2 מביאה איתה בשורה משמעותית בהשוואה לסביבת WSL 1 עם Linux Kernel אמיתי ומותאם, ובגלל הארכיטקטורה של סביבת WSL 2 ניתן לקבל ביצועים טובים יותר וגישה לחומרה המקומית ועל סמך האפשרויות הנ"ל לבצע פעולות לינוקס על גבי Windows.


מאת: אלי שלמה, מומחה למערכות מיקרוסופט וענן

רוצים להתעדכן בתכנים נוספים הקשורים לארכיטקטורת ענן? הצטרפו לפורום המקצועי של IsraelClouds בתחום > להרשמה

Eli Shlomo

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות