Windows Subsystem for Linux یا WSL چیست؟

Windows Subsystem for Linux یا WSL یک ویژگی در ویندوز است که به کاربران اجازه می‌دهد تا یک محیط لینوکس را مستقیماً در ویندوز اجرا کنند، بدون نیاز به استفاده....

انتشار: , زمان مطالعه: 12 دقیقه
Windows Subsystem for Linux یا WSL چیست؟
دسته بندی: مرجع تعداد بازدید: 64

Windows Subsystem for Linux (WSL) یک ویژگی در ویندوز است که به کاربران اجازه می‌دهد تا یک محیط لینوکس را مستقیماً در ویندوز اجرا کنند، بدون نیاز به استفاده از ماشین‌های مجازی یا نصب سیستم عامل لینوکس به صورت مستقیم. این ابزار برای توسعه‌دهندگانی که نیاز به دسترسی به ابزارها و دستورات لینوکس دارند، بدون ترک محیط ویندوز بسیار مفید است.

WSL اولین بار در ویندوز 10 معرفی شد و پس از مدتی نسخه دوم آن به نام WSL2 بهبود یافت. این نسخه جدید شامل تغییرات زیرساختی مهمی بود که کارایی، پشتیبانی از برنامه‌های لینوکس، و تجربه کلی کاربران را بهبود بخشید.

تاریخچه و انگیزه به وجود آمدن WSL

در گذشته، توسعه‌دهندگان ویندوزی که نیاز به ابزارهای لینوکس داشتند، معمولاً از ماشین‌های مجازی یا ابزارهایی مثل Cygwin استفاده می‌کردند. این روش‌ها همواره محدودیت‌هایی داشتند: ماشین‌های مجازی منابع زیادی مصرف می‌کردند و از نظر کارایی مناسب نبودند، و ابزارهایی مثل Cygwin تنها شبیه‌سازی محدودی از قابلیت‌های لینوکس ارائه می‌دادند.

با توجه به این نیاز، مایکروسافت تصمیم گرفت که محیطی ایجاد کند تا کاربران بتوانند بدون نیاز به مجازی‌سازی، مستقیماً از ابزارها و دستورات لینوکس در ویندوز استفاده کنند. در نتیجه، WSL در سال 2016 به عنوان بخشی از Windows 10 معرفی شد.

معماری WSL

WSL به دو نسخه اصلی تقسیم می‌شود: WSL1 و WSL2. هر کدام از این نسخه‌ها معماری متفاوتی دارند که به تفصیل در زیر بررسی می‌شود.

WSL1

WSL1 به جای اینکه یک هسته (kernel) واقعی لینوکس داشته باشد، از یک لایه سازگاری (Compatibility Layer) استفاده می‌کند. این لایه باعث می‌شود که دستورات لینوکس به معادل‌های ویندوز ترجمه شوند. این روش امکان استفاده از ابزارهای خط فرمان لینوکس را بدون اجرای واقعی هسته لینوکس فراهم می‌کند.

WSL1 مزایایی چون سرعت اجرای سریع و منابع کمتر نسبت به ماشین‌های مجازی دارد، اما به دلیل عدم استفاده از هسته واقعی لینوکس، در برخی از کاربردها مانند استفاده از سیستم فایل‌های پیشرفته لینوکس یا برخی از ابزارها، محدودیت‌هایی دارد.

تشریح اجزای معماری WSL1 طبق تصویر فوق:

تشریح اجزای معماری WSL1 طبق تصویر فوق:

 Windows NT Kernel هسته ویندوز که هسته اصلی سیستم‌عامل ویندوز را تشکیل می‌دهد و تمامی منابع سیستم را مدیریت می‌کند. این هسته مسئول ارتباط بین برنامه‌ها و سخت‌افزار است و تمامی دستورات از طریق آن به سیستم منتقل می‌شود.

 WSL یک لایه ترجمه است که درخواست‌های برنامه‌های لینوکس را می‌گیرد و آن‌ها را به دستورات قابل فهم برای هسته ویندوز تبدیل می‌کند. این یعنی یک "سیستم ترجمه" برای دستورات لینوکسی فراهم می‌شود که به جای یک ماشین مجازی یا هسته لینوکس واقعی، دستورات مستقیماً توسط هسته ویندوز اجرا می‌شوند. در اینجا، هسته لینوکس واقعی وجود ندارد، بلکه دستورات سیستمی لینوکس به معادل آن‌ها در ویندوز ترجمه و سپس توسط Windows NT Kernel اجرا می‌شود.

 Linux Distribution این لایه شامل توزیع‌های مختلف لینوکس است که کاربران از آن‌ها در WSL1 استفاده می‌کنند (مانند Ubuntu، Debian، OpenSUSE). این بخش شامل برنامه‌ها، ابزارهای لینوکسی، و کتابخانه‌هایی است که کاربران نیاز دارند تا بتوانند محیط لینوکس را بر روی ویندوز اجرا کنند. در WSL1، دستورات و ابزارهای لینوکس از طریق لایه WSL به هسته ویندوز فرستاده می‌شوند تا اجرا شوند.

WSL2

با WSL2، مایکروسافت تغییرات بزرگی در زیرساخت ایجاد کرد. در این نسخه، مایکروسافت از یک ماشین مجازی سبک‌وزن استفاده می‌کند که هسته واقعی لینوکس را اجرا می‌کند. این ماشین مجازی بسیار کارآمد طراحی شده و به کاربران اجازه می‌دهد که از قابلیت‌های پیشرفته لینوکس مثل سیستم‌های فایل پیشرفته و ابزارهای شبکه استفاده کنند.

WSL2 بر پایه Hyper-V ساخته شده است و به دلیل استفاده از هسته واقعی لینوکس، سرعت اجرای برخی دستورات و برنامه‌ها به طور قابل توجهی بهبود یافته است. همچنین، پشتیبانی از سیستم‌های فایل و سازگاری بیشتری با ابزارهای پیشرفته لینوکس ارائه می‌دهد.

اجزای معماری WSL2 طبق تصویر فوق:

تشریح اجزای معماری WSL2 طبق تصویر فوق:

  • Hypervisor: Hypervisor بخشی است که وظیفه اجرای ماشین مجازی سبک لینوکس را بر عهده دارد. این بخش در سطح پایین سیستم قرار دارد و منابع سخت‌افزاری را بین سیستم‌عامل‌های مهمان (در اینجا Linux VM) و سیستم‌عامل میزبان (ویندوز) مدیریت می‌کند. Hypervisor این امکان را فراهم می‌کند که لینوکس و ویندوز به طور همزمان اجرا شوند.

  • Windows NT Kernel: این هسته، سیستم‌عامل اصلی ویندوز را تشکیل می‌دهد و واسطی بین برنامه‌های کاربری ویندوز و سخت‌افزار سیستم است. Windows NT Kernel با Hypervisor در ارتباط است تا ماشین مجازی سبک لینوکس را مدیریت کند.

  • Windows User Mode: این بخش مربوط به حالت کاربری سیستم ویندوز است، جایی که برنامه‌های کاربری (مثل PowerShell یا Command Prompt) اجرا می‌شوند. این برنامه‌ها می‌توانند دستورات لینوکس را نیز از طریق WSL اجرا کنند.

  • Lightweight Linux Utility VM: این بخش ماشین مجازی سبکی است که هسته واقعی لینوکس درون آن اجرا می‌شود. ماشین مجازی لینوکس توسط Hypervisor مدیریت می‌شود.

  • Linux Kernel: هسته لینوکس واقعی است که به صورت بومی درون WSL2 اجرا می‌شود. استفاده از هسته لینوکس واقعی باعث بهبود عملکرد و سازگاری با سیستم‌های فایل لینوکس و قابلیت‌های شبکه می‌شود.

  • GNU/Linux User Mode: این لایه مربوط به حالت کاربری در لینوکس است که شامل محیط‌ها و ابزارهای معمولی لینوکس مانند bash و ابزارهای خط فرمان است.

 

ویژگی‌ها و قابلیت‌های WSL

1. دسترسی به ابزارهای لینوکس

یکی از ویژگی‌های کلیدی WSL امکان دسترسی به هزاران ابزار و دستور لینوکس است. این قابلیت به ویژه برای توسعه‌دهندگان که نیاز به استفاده از ابزارهای مانند Bash، Git، Python و بسیاری از ابزارهای دیگر دارند، بسیار مهم است.

2. پشتیبانی از چند توزیع لینوکس

WSL به کاربران اجازه می‌دهد تا چندین توزیع مختلف لینوکس مانند Ubuntu، Debian، Fedora و openSUSE را به صورت همزمان نصب و استفاده کنند. کاربران می‌توانند به سادگی توزیع مورد نظر خود را از Microsoft Store دانلود و نصب کنند.

3. یکپارچگی با ویندوز

WSL به خوبی با سیستم فایل ویندوز یکپارچه شده است، به طوری که کاربران می‌توانند به فایل‌های سیستم ویندوز دسترسی داشته باشند و برعکس. همچنین، امکان اجرای دستورات لینوکس در PowerShell یا Command Prompt نیز وجود دارد.

4. پشتیبانی از شبکه

WSL از شبکه به صورت کامل پشتیبانی می‌کند و کاربران می‌توانند ابزارهای شبکه لینوکس مانند SSH، SCP و Curl را به طور مستقیم در ویندوز اجرا کنند. همچنین، WSL2 بهبودهای بیشتری در زمینه پشتیبانی از ابزارهای شبکه ارائه داده است.

5. بهینه‌سازی برای توسعه‌دهندگان

با استفاده از WSL، توسعه‌دهندگان می‌توانند به راحتی محیط‌های توسعه لینوکس را در ویندوز اجرا کنند، بدون نیاز به تغییر سیستم عامل یا استفاده از ماشین‌های مجازی. این ویژگی به ویژه برای توسعه‌دهندگان نرم‌افزارهای چند پلتفرمی بسیار مفید است.

مزایای WSL

1. کارایی بالا

WSL1 به دلیل عدم استفاده از مجازی‌سازی واقعی، کارایی بالاتری نسبت به ماشین‌های مجازی سنتی داشت. با WSL2، مایکروسافت توانست کارایی بیشتری را با اجرای هسته واقعی لینوکس و استفاده از ماشین‌های مجازی سبک به ارمغان بیاورد.

2. مصرف منابع کمتر

در مقایسه با ماشین‌های مجازی، WSL مصرف منابع کمتری دارد. WSL1 به دلیل عدم استفاده از مجازی‌سازی مستقیم، نیاز به رم و پردازنده کمتری دارد. WSL2 نیز با بهینه‌سازی‌های جدید در Hyper-V، کارایی خوبی ارائه می‌دهد.

3. یکپارچگی با ویندوز

یکی از بزرگترین مزایای WSL یکپارچگی آن با ویندوز است. کاربران می‌توانند به راحتی از ابزارهای ویندوز و لینوکس به طور همزمان استفاده کنند. این یکپارچگی به توسعه‌دهندگان اجازه می‌دهد که بدون نیاز به جابجایی بین سیستم‌ها، پروژه‌های خود را به سرعت پیش ببرند.

4. سهولت نصب و استفاده

نصب و استفاده از WSL بسیار ساده است. کاربران به سادگی می‌توانند WSL را از طریق تنظیمات ویندوز فعال کنند و توزیع لینوکس مورد نظر خود را از Microsoft Store دانلود کنند. همچنین، مدیریت WSL از طریق رابط خط فرمان ویندوز نیز آسان است.

معایب WSL

1. محدودیت‌های WSL1

WSL1 به دلیل عدم استفاده از هسته واقعی لینوکس، محدودیت‌هایی دارد. برخی از ابزارها و سیستم‌های فایل پیچیده در WSL1 به درستی کار نمی‌کنند. به عنوان مثال، پشتیبانی از Docker و برخی از ابزارهای شبکه در WSL1 محدود است.

2. مصرف منابع در WSL2

در حالی که WSL2 کارایی بالایی دارد، اما به دلیل استفاده از مجازی‌سازی (هرچند سبک)، مصرف منابع بیشتری نسبت به WSL1 دارد. کاربرانی که نیاز به منابع زیادی دارند ممکن است در برخی مواقع با مشکل مواجه شوند.

3. پشتیبانی محدود از GPU

اگرچه مایکروسافت اخیراً پشتیبانی از GPU را در WSL2 معرفی کرده است، اما هنوز در مراحل اولیه است و برای همه کاربردها و کاربران در دسترس نیست. این می‌تواند برای کاربرانی که به توسعه‌های مرتبط با هوش مصنوعی یا یادگیری ماشین نیاز دارند، محدودیت‌هایی ایجاد کند.

4. پشتیبانی ناکامل از همه برنامه‌های لینوکس

با وجود پیشرفت‌های چشمگیر در WSL2، هنوز برخی از برنامه‌ها یا ابزارهای لینوکس به طور کامل در WSL اجرا نمی‌شوند. این مسئله به دلیل تفاوت در زیرساخت‌های ویندوز و لینوکس است.

مقایسه WSL1 و WSL2

ویژگی WSL1 WSL2
استفاده از هسته بدون هسته واقعی لینوکس استفاده از هسته واقعی لینوکس
کارایی سرعت بالا برای برخی وظایف کارایی بهتر برای همه وظایف
پشتیبانی از سیستم فایل محدودیت در پشتیبانی پشتیبانی کامل
مصرف منابع کمتر بیشتر به دلیل استفاده از VM
  • WSL1: همانطور که در تصویر معماری ها نشان داده شد ، در این نسخه خبری از هسته واقعی لینوکس نیست و تمام دستورات از طریق لایه WSL مستقیماً به Windows NT Kernel منتقل و اجرا می‌شوند.
  • WSL2: از یک ماشین مجازی سبک استفاده می‌کند که یک هسته لینوکس واقعی در آن اجرا می‌شود و سازگاری بهتری با سیستم‌های فایل و برنامه‌های لینوکسی ارائه می‌دهد.

به طور کلی، WSL1 از لحاظ عملکرد کندتر و از لحاظ سازگاری محدودتر از WSL2 است، ولی همچنان یک روش موثر برای اجرای برنامه‌های لینوکسی در محیط ویندوز محسوب می‌شود.

چرا WSL به وجود آمد؟

WSL به عنوان پاسخی به نیازهای روزافزون توسعه‌دهندگان و متخصصان فناوری اطلاعات به وجود آمد که نیاز داشتند ابزارها و قابلیت‌های لینوکس را در محیط ویندوز بدون استفاده از راه‌حل‌های پیچیده مانند ماشین‌های مجازی یا بوت دوگانه (dual boot) به کار گیرند. چندین دلیل اصلی پشت توسعه WSL وجود دارد که در زیر به تفصیل به آن‌ها پرداخته می‌شود:

1. افزایش محبوبیت لینوکس در جامعه توسعه‌دهندگان

لینوکس در میان توسعه‌دهندگان، به‌ویژه در زمینه‌های توسعه نرم‌افزار، مهندسی سیستم‌ها، و DevOps، بسیار محبوب است. ابزارهایی مانند Docker، Git، Jenkins و زبان‌های برنامه‌نویسی مانند Python و Ruby در محیط لینوکس بهتر کار می‌کنند. بسیاری از برنامه‌ها و ابزارهای متن‌باز (Open Source) نیز به طور بومی روی لینوکس توسعه داده می‌شوند.

مایکروسافت برای سال‌ها سهم بزرگی از بازار سیستم عامل‌ها را با ویندوز در اختیار داشت، اما با افزایش استفاده از لینوکس، بسیاری از توسعه‌دهندگان به سمت این سیستم عامل مهاجرت کردند. برای حفظ جامعه توسعه‌دهندگان و ارائه راه‌حلی که آن‌ها بتوانند بدون ترک ویندوز از ابزارهای لینوکس بهره‌مند شوند، مایکروسافت به فکر راه‌اندازی WSL افتاد.

2. نیاز به یک محیط چند پلتفرمی برای توسعه‌دهندگان

بسیاری از توسعه‌دهندگان نرم‌افزار به صورت همزمان در چندین پلتفرم (ویندوز، لینوکس، و حتی macOS) کار می‌کنند. تا پیش از WSL، توسعه‌دهندگانی که از ویندوز به عنوان سیستم عامل اصلی خود استفاده می‌کردند، مجبور بودند برای دسترسی به ابزارهای لینوکس از راه‌حل‌هایی مثل ماشین مجازی یا بوت دوگانه استفاده کنند که مشکلاتی مثل مصرف منابع زیاد و نیاز به تغییر محیط کاری را به همراه داشت.

WSL به توسعه‌دهندگان این امکان را داد که در یک محیط یکپارچه، هم از ابزارهای ویندوز و هم از ابزارهای لینوکس استفاده کنند. این ویژگی برای توسعه‌دهندگانی که بر روی پروژه‌های چند پلتفرمی کار می‌کنند، یک مزیت بزرگ به شمار می‌رود.

3. تسهیل استفاده از ابزارهای DevOps و Cloud

در دنیای مدرن توسعه نرم‌افزار، DevOps به یکی از ارکان اساسی توسعه و مدیریت سیستم‌ها تبدیل شده است. بسیاری از ابزارهای DevOps مانند Ansible، Kubernetes، Docker، و Terraform به طور طبیعی روی لینوکس اجرا می‌شوند. همچنین، اکثر سرورهای ابری که توسعه‌دهندگان با آن‌ها کار می‌کنند نیز از سیستم عامل لینوکس استفاده می‌کنند.

به این ترتیب، نیاز توسعه‌دهندگان و مدیران سیستم به استفاده از ابزارهای لینوکسی در محیط ویندوز، انگیزه‌ای شد برای مایکروسافت تا با توسعه WSL این نیاز را برآورده کند. با WSL، این دسته از متخصصان می‌توانند مستقیماً از ابزارهای لینوکسی روی ویندوز استفاده کنند و به سرعت به محیط‌های ابری مبتنی بر لینوکس متصل شوند.

4. صرفه‌جویی در منابع و بهبود کارایی

پیش از ظهور WSL، برای اجرای لینوکس در ویندوز از ماشین‌های مجازی (مثل VirtualBox یا VMware) استفاده می‌شد. اما ماشین‌های مجازی به منابع سخت‌افزاری بیشتری نیاز داشتند و به طور کلی سرعت اجرای برنامه‌ها پایین‌تر بود. در نتیجه، کاربرانی که نیاز به استفاده از هر دو سیستم عامل داشتند، با مشکلاتی همچون کاهش کارایی و افزایش مصرف منابع روبرو بودند.

WSL به طور ویژه طراحی شد تا این مشکلات را برطرف کند. WSL1 با استفاده از لایه سازگاری به کاربران اجازه می‌داد بدون نیاز به اجرای یک ماشین مجازی کامل، به ابزارهای لینوکسی دسترسی داشته باشند. در WSL2 نیز با بهینه‌سازی‌های انجام شده و استفاده از ماشین مجازی سبک‌وزن مبتنی بر Hyper-V، این مشکل به حداقل رسید و مصرف منابع کاهش یافت.

5. رویکرد جدید مایکروسافت به متن‌باز (Open Source)

مایکروسافت در گذشته به عنوان یک شرکت بسته و متمرکز بر ویندوز شناخته می‌شد، اما در سال‌های اخیر این رویکرد تغییر کرده است. این شرکت به تدریج به سمت پشتیبانی از نرم‌افزارهای متن‌باز و مشارکت در پروژه‌های متن‌باز حرکت کرده است. راه‌اندازی WSL یکی از اقدامات استراتژیک مایکروسافت در این زمینه بود.

WSL به مایکروسافت این امکان را داد تا با توسعه‌دهندگان و جامعه متن‌باز ارتباط بهتری برقرار کند و با ارائه دسترسی به ابزارهای لینوکسی در محیط ویندوز، کاربران بیشتری را به خود جذب کند. این تغییر رویکرد همچنین باعث شد که مایکروسافت به یکی از بزرگترین مشارکت‌کنندگان در پروژه‌های متن‌باز مثل GitHub، Visual Studio Code و Azure تبدیل شود.

6. همگامی با روندهای توسعه مدرن

با افزایش استفاده از فناوری‌های کانتینرها (مثل Docker) و میکروسرویس‌ها، لینوکس به عنوان پلتفرم اصلی برای اجرای این فناوری‌ها شناخته می‌شود. مایکروسافت با توجه به این روند، نیاز به ارائه راه‌حلی برای توسعه‌دهندگانی که از ویندوز استفاده می‌کنند اما نیاز به فناوری‌های مدرن مبتنی بر لینوکس دارند را احساس کرد.

WSL به این توسعه‌دهندگان این امکان را می‌دهد که بدون تغییر سیستم عامل یا محیط کاری خود، از فناوری‌های مدرن توسعه نرم‌افزار بهره‌مند شوند. این هماهنگی با روندهای توسعه مدرن از دیگر دلایلی بود که باعث شد مایکروسافت WSL را معرفی کند.


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)