مقدمه

دنبال این بودم که ببینم چطور میشه توزیع های لینوکس که توی استور مایکروسافت وجود ندارن یا بصورت رسمی توسط مایکروسافت پیشنهاد نشدن رو اضافه کرد به WSL ، برای اینکه ببینید لیست اونهایی که توسط خود مایکروسافت و توسط دستورات خود WSL قابل نصب هستند، دستور زیر رو اجرا کنید:

wsl -l -o

خروجی همچین چیزی میشه:

The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

و خودش میگه با نوشتن دستور با آپشن install هر کدوم رو خواستین نصب کنید، یعنی مثلا برای نصب دبیان:

wsl --install Debian

ولی برای نصب آلپاین چه کنیم؟ برای نصب راکی لینوکس و … ؟

مراحل نصب آلپاین در WSL ویندوز

  1. اول برید به صفحه دانلود آلپاین

    https://www.alpinelinux.org/downloads/

    و در قسمت MINI ROOT FILESYSTEM فایل با معماری x86_64 رو بردارید (اگر ویندوز شما 32 بیتی هست x86). مثلا من اینو برداشتم:

    https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-minirootfs-3.19.1-x86_64.tar.gz

  2. فرمت فایل tar.xz هست که باید اکسترکتش کنید به tar برای اینکار می‌تونید از نرم افزار 7zip استفاده کنید و با کلیک راست و انتخاب گزینه Extract here فایل بصورت tar در کنار همون ایجاد میشه

    فرض می‌کنیم فایل tar را در مسیر زیر بگذاریم ولی شما هر مسیری که خواستید می‌تونید بذارید ولی در دستورات بعدی باید اون مسیر رو لحاظ کنید

    mkdir c:\wsl
  3. یک ترمینال پاورشل یا کامندلاین یعنی cmd باز کنید، نیازی نیست بصورت ادمین اجرا بشه. یه مکان در نظر بگیرید، این مکان یا دایرکتوری قراره حاوی فایلهای مربوط به لینوکس آلپاین شما باشه مثلا من این کارو کردم:

    mkdir c:\wsl\Alpine3
  4. حالا با فرض اینکه فایل tar در مسیر c:\wsl وجود داره باید اون رو با دستور زیر وارد wsl کنیم:

    wsl --import Alpine-3 c:\wsl\Alpine3 c:\wsl\alpine-minirootfs-3.19.1-x86_64.tar --version 2

    خب این دستور خیلی مهمه و باید توضیح بدم، سینتکس این دستور این مدلیه:

    wsl --import <Distro> <InstallLocation> <FileName> [Options]
    1. قسمت <Distro> یه اسم دلخواه هست که داخل ترمینال یا جاهای دیگه شما روی آلپاین خودتون می‌ذارید که ما گذاشتیم Alpine-3

    2. قسمت <InstallLocation> جایی هست که فایل های سیستم مجازی wsl ما قرار میگیره داخلش

    3. قسمت <FileName> همون فایل tar هست که از صفحه دانلود آلپاین قسمت MINI ROOT FILESYSTEM دانلود کردیم و اکسترکت کردیم

    4. قسمت [Options] رو برای این گذاشتیم که بگیم از WSL2 استفاده کردیم و اگر نمی‌خواهید از این نسخه استفاده کنید این قسمت یعنی

      --version 2

      رو از انتهای دستور حذف کنید

  5. اگر همه مراحل رو با موفقیت انجام دادین حالا می‌توانید با اجرای دستور زیر لینوکس آلپاین رو اجرا کنید:

    wsl -d Alpine-3

    که Alpine-3 اسمی هست که ما گذاشتیم و از این به بعد همه جا با این نام شناخته میشه

جابجا کردن ماشین ایجاد شده در WSL به مکانی دیگر

توی این مطلب ما تونستیم آلپاین رو توی مسیر c:\wsl\Alpine3 قرار بدیم، ولی اگر بخواهیم این رو جابجا کنیم، اولا که اگر آلپاین ما در وضعیت اجرا باشه بهمون اجازه نمی‌ده اینکارو بکنیم دوما اینکه اگر جابجا کنیم دیگه wsl نمی‌فهمه فایل های این ماشین کجاست و دیگه نمی‌تونیم آلپاین رو اجرا کنیم، ولی برای جابجایی هم راه هست، برای اینکار باید مراحل زیر رو طی کنیم:

  1. اول ماشین رو استاپ کنید یا کلا wsl رو شات دان کنید.

    برای استاپ کردن:

    wsl -t Alpine-3

    برای شات دان کامل wsl:

    wsl --shutdown
  2. حالا باید آلپاین رو از حالت رجیستر خارج کنید:

    wsl --unregister Alpine-3
  3. فرض کنید مکان دیگری که برای جابجایی در نظر گرفتین بصورت زیر هست:

    d:\my-wsl-machines

    داخلش یه پوشه بسازید که قراره فایل های ماشین آلپاین اونجا قرار بگیرن، من ترجیح میدم بازم همون اسم Alpine3 رو براش بذارم:

    d:
    cd d:\my-wsl-machines
    mkdir Alpine3

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

  4. با دستور زیر از روی فایل ext4.vhdx موجود توی مقصدی که تعیین کردیم ماشین ما ایجاد میشه، توجه کنید که چقدر شبیه به ساختن از روی فایل tar هست با این تفاوت که با یک option اضافه داریم میگیم که فایل ما vhd یا هارد دیسک مجازی هست:

    wsl --import Alpine-3 d:\my-wsl-machines\Alpine3 c:\wsl\Alpine3\ext4.vhdx --version 2 --vhd

    پس دستور بالا ماشین با اسم توزیع Alpine-3 در مکان دیگری که مد نظر ما هست یعنی از روی فایل vhdx از روی مبدا می‎سازه و همونطور که مشخصه آپشن های ورژن 2 و نوع فایل vhd هم آخر دستور اضافه کردیم. توجه کنید که اینکار ماشین رو منتقل نمی‌کنه بلکه یکی از روش میسازه، می‌تونید پوشه مبدا رو پاک کنید.

  5. اگر همه مراحل رو با موفقیت انجام دادین حالا می‌تونید با اجرای دستور زیر لینوکس آلپاین رو اجرا کنید:

    wsl -d Alpine-3

سخن پایانی

خب توی این مطلب بصورت کلی با wsl و نحوه نصب یک توزیع خاص و نحوه جابجایی ماشینی که داخلش ایجاد میشه آشنا شدیم، با اجرای دستور

 wsl --help

این امکان رو دارید که دستورات مختلف و توضیحات خوبی از این دستور ببینید ولی از همه بیشتر این دستور برای دیدن تمامی ماشین های ایجاد شده در wsl به همراه وضعیت اجراشون حتی ماشین های داکر بدرد می‌خوره:

wsl -l --all -v

من برای نوشتن این مطلب، از این مقاله در مدیوم الهام گرفتم، اینجا توضیح داده که چطور می‌تونیم راکی لینوکس رو با همین روش هایی که توضیح دادم نصب کنید:

https://medium.com/thinklinux/installing-rocky-linux-on-windows-10-wsl2-59204b24ad45