عنوان:

‫انتشار متن باز زیرسیستم ویندوز برای لینوکس (Windows Subsystem for Linux - WSL)


نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۲/۳۰ ۱۰:۴۹
آدرس: www.dntips.ir
شرکت مایکروسافت با انتشار متن باز (Open Source) زیرسیستم ویندوز برای لینوکس (Windows Subsystem for Linux - WSL)، گامی مهم در راستای تعامل بیشتر با جامعه توسعه‌دهندگان برداشته است. این اقدام که نتیجه تلاش‌های چند ساله محسوب می‌شود، با انتشار کد منبع WSL بر روی گیت‌هاب (GitHub) در مخزن Microsoft/WSL، به اولین درخواست ثبت‌شده در این مخزن مبنی بر متن باز شدن این پروژه پاسخ می‌دهد. اکنون توسعه‌دهندگان می‌توانند با دریافت کد منبع WSL، آن را از ابتدا build کرده، قابلیت‌ها و اصلاحات جدید به آن اضافه نموده و در توسعه فعال آن مشارکت کنند.

معماری و اجزای WSL
زیرسیستم ویندوز برای لینوکس (WSL) از مجموعه‌ای از اجزای توزیع تشکیل شده است که برخی در محیط ویندوز و برخی دیگر در ماشین مجازی WSL 2 اجرا می‌شوند. معماری کلی WSL شامل بخش‌های زیر است:
  • اجراکننده‌های خط فرمان (Command line executables): این برنامه‌ها به عنوان نقاط ورودی برای تعامل با WSL عمل می‌کنند و شامل wsl.exe، wslconfig.exe و wslg.exe می‌باشند.
  • سرویس WSL (WSL service): این سرویس وظیفه راه‌اندازی ماشین مجازی WSL، استارت توزیع‌های لینوکس، mount کردن shareهای دسترسی به فایل و سایر موارد مرتبط را بر عهده دارد. فایل اجرایی این سرویس wslservice.exe است.
  • فرآیندهای init و دیمون لینوکس (Linux init and daemon processes): این باینری‌ها در محیط لینوکس اجرا شده و قابلیت‌های WSL را فراهم می‌کنند. از جمله آن‌ها می‌توان به init برای راه‌اندازی سیستم، gns برای شبکه، و localhost برای انتقال پورت (port forwarding) اشاره کرد.
  • اشتراک‌گذاری فایل‌های لینوکس با ویندوز (File sharing Linux files to Windows): این قابلیت از طریق پیاده‌سازی سرور plan9 در WSL فراهم می‌شود.
برای کسب اطلاعات بیشتر در مورد هر یک از این اجزا، علاقه‌مندان می‌توانند به وب‌سایت https://wsl.dev مراجعه کنند.

چرایی انتشار متن باز در حال حاضر: مروری بر تاریخچه WSL
زیرسیستم ویندوز برای لینوکس برای اولین بار در کنفرانس BUILD سال 2016 معرفی و با به‌روزرسانی سالگرد ویندوز 10 (Windows 10 Anniversary update) عرضه شد. در آن زمان، WSL بر پایه یک ارائه‌دهنده فرآیند pico به نام lxcore.sys استوار بود که به ویندوز امکان اجرای بومی فایل‌های اجرایی ELF و پیاده‌سازی فراخوان‌های سیستمی لینوکس در داخل هسته ویندوز را می‌داد. این فناوری بعدها به عنوان "WSL 1" شناخته شد و همچنان توسط WSL پشتیبانی می‌شود.
با گذشت زمان، مشخص شد که بهترین راه برای ارائه سازگاری بهینه با لینوکس بومی، تکیه بر خود هسته لینوکس است. بدین ترتیب، WSL 2 متولد شد و برای اولین بار در سال 2019 معرفی گردید. WSL 2 از یک ماشین مجازی سبک (lightweight virtual machine) برای اجرای هسته لینوکس استفاده می‌کند و سازگاری بسیار بالاتری با سیستم عامل لینوکس ارائه می‌دهد.
با رشد جامعه کاربری WSL و افزایش درخواست‌ها برای افزودن قابلیت‌های جدید مانند پشتیبانی از GPU، پشتیبانی از برنامه‌های گرافیکی (از طریق wslg) و پشتیبانی از systemd، مشخص شد که برای همگامی با این رشد و درخواست‌ها، WSL نیاز به توسعه سریع‌تر و انتشار جداگانه از ویندوز دارد. به همین دلیل، در سال 2021، WSL از کدبیس ویندوز جدا شده و به کدبیس مستقل خود منتقل گردید. این WSL جدید برای اولین بار به عنوان نسخه 0.47.1 در جولای 2021 از طریق فروشگاه مایکروسافت (Microsoft Store) منتشر شد. در آن زمان، تنها ویندوز 11 پشتیبانی می‌شد و این بسته به عنوان نسخه پیش‌نمایش (preview) علامت‌گذاری شده و تنها به کاربرانی توصیه می‌شد که تمایل به تجربه آخرین و بهترین ویژگی‌های WSL داشتند.
توسعه این "بسته WSL" جدید ادامه یافت تا اینکه برای عرضه عمومی آماده شد. این اتفاق در نوامبر 2022 با انتشار WSL 1.0.0 رخ داد که پشتیبانی از ویندوز 10 را نیز اضافه کرد و اولین نسخه "پایدار" (stable) این WSL جدید محسوب می‌شد. از آن زمان به بعد، بهبود WSL با هدف انتقال کامل همه کاربران به این بسته جدید و دور شدن از جزء WSL که همراه با ویندوز عرضه می‌شد، ادامه یافت. ویندوز 11 نسخه 24H2 اولین بیلد ویندوز بود که کاربران را از WSL "built-in" به بسته WSL "new" منتقل کرد. فایل اجرایی wsl.exe همچنان در ایمیج ویندوز حفظ شد تا بتواند بسته جدید را در صورت نیاز دانلود کرده و فرآیند انتقال را تسهیل کند.
با ادامه بهبود WSL، یک نقطه عطف دیگر نیز حاصل شد: انتشار WSL 2.0.0. این نسخه بهبودهای عمده‌ای مانند شبکه آینه‌ای (mirrored networking)، تونلینگ DNS (DNS tunneling)، پشتیبانی از session 0، پشتیبانی از پراکسی (proxy support) و پشتیبانی از فایروال (firewall support) را به همراه داشت. در زمان نگارش این مقاله، آخرین نسخه موجود WSL، نسخه 2.5.7 است که از زمان انتشار نسخه 0.47.1 در چهار سال گذشته، از طریق نه صفحه انتشار در گیت‌هاب در دسترس قرار گرفته است.

مشارکت در توسعه WSL
توسعه‌دهندگانی که علاقه‌مند به یادگیری نحوه عملکرد WSL هستند یا می‌خواهند نحوه کارکرد یک ویژگی خاص را بررسی کنند یا تغییری در آن ایجاد نمایند، می‌توانند به مخزن microsoft/WSL مراجعه کرده و اطلاعات بیشتری کسب کنند.


مشاهده مطلب اصلی