لینوکس آلپاین در wsl ویندوز
مقدمه
دنبال این بودم که ببینم چطور میشه توزیع های لینوکس که توی استور مایکروسافت وجود ندارن یا بصورت رسمی توسط مایکروسافت پیشنهاد نشدن رو اضافه کرد به 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 ویندوز
-
اول برید به صفحه دانلود آلپاین
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
-
فرمت فایل tar.xz هست که باید اکسترکتش کنید به tar برای اینکار میتونید از نرم افزار 7zip استفاده کنید و با کلیک راست و انتخاب گزینه
Extract here
فایل بصورت tar در کنار همون ایجاد میشهفرض میکنیم فایل tar را در مسیر زیر بگذاریم ولی شما هر مسیری که خواستید میتونید بذارید ولی در دستورات بعدی باید اون مسیر رو لحاظ کنید
mkdir c:\wsl
-
یک ترمینال پاورشل یا کامندلاین یعنی cmd باز کنید، نیازی نیست بصورت ادمین اجرا بشه. یه مکان در نظر بگیرید، این مکان یا دایرکتوری قراره حاوی فایلهای مربوط به لینوکس آلپاین شما باشه مثلا من این کارو کردم:
mkdir c:\wsl\Alpine3
-
حالا با فرض اینکه فایل 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]
-
قسمت
<Distro>
یه اسم دلخواه هست که داخل ترمینال یا جاهای دیگه شما روی آلپاین خودتون میذارید که ما گذاشتیم Alpine-3 -
قسمت
<InstallLocation>
جایی هست که فایل های سیستم مجازی wsl ما قرار میگیره داخلش -
قسمت
<FileName>
همون فایل tar هست که از صفحه دانلود آلپاین قسمت MINI ROOT FILESYSTEM دانلود کردیم و اکسترکت کردیم -
قسمت
[Options]
رو برای این گذاشتیم که بگیم از WSL2 استفاده کردیم و اگر نمیخواهید از این نسخه استفاده کنید این قسمت یعنی--version 2
رو از انتهای دستور حذف کنید
-
-
اگر همه مراحل رو با موفقیت انجام دادین حالا میتوانید با اجرای دستور زیر لینوکس آلپاین رو اجرا کنید:
wsl -d Alpine-3
که Alpine-3 اسمی هست که ما گذاشتیم و از این به بعد همه جا با این نام شناخته میشه
جابجا کردن ماشین ایجاد شده در WSL به مکانی دیگر
توی این مطلب ما تونستیم آلپاین رو توی مسیر c:\wsl\Alpine3
قرار بدیم، ولی اگر بخواهیم این رو جابجا کنیم، اولا که اگر آلپاین ما در وضعیت اجرا باشه بهمون اجازه نمیده اینکارو بکنیم دوما اینکه اگر جابجا کنیم دیگه wsl نمیفهمه فایل های این ماشین کجاست و دیگه نمیتونیم آلپاین رو اجرا کنیم، ولی برای جابجایی هم راه هست، برای اینکار باید مراحل زیر رو طی کنیم:
-
اول ماشین رو استاپ کنید یا کلا wsl رو شات دان کنید.
برای استاپ کردن:
wsl -t Alpine-3
برای شات دان کامل wsl:
wsl --shutdown
-
حالا باید آلپاین رو از حالت رجیستر خارج کنید:
wsl --unregister Alpine-3
-
فرض کنید مکان دیگری که برای جابجایی در نظر گرفتین بصورت زیر هست:
d:\my-wsl-machines
داخلش یه پوشه بسازید که قراره فایل های ماشین آلپاین اونجا قرار بگیرن، من ترجیح میدم بازم همون اسم Alpine3 رو براش بذارم:
d: cd d:\my-wsl-machines mkdir Alpine3
اول رفتیم به مکانی که شما میخواهید ماشینتون رو بهش منتقل کنید، بعد هم پوشه رو ساختیم.
-
با دستور زیر از روی فایل 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 هم آخر دستور اضافه کردیم. توجه کنید که اینکار ماشین رو منتقل نمیکنه بلکه یکی از روش میسازه، میتونید پوشه مبدا رو پاک کنید.
-
اگر همه مراحل رو با موفقیت انجام دادین حالا میتونید با اجرای دستور زیر لینوکس آلپاین رو اجرا کنید:
wsl -d Alpine-3
سخن پایانی
خب توی این مطلب بصورت کلی با wsl و نحوه نصب یک توزیع خاص و نحوه جابجایی ماشینی که داخلش ایجاد میشه آشنا شدیم، با اجرای دستور
wsl --help
این امکان رو دارید که دستورات مختلف و توضیحات خوبی از این دستور ببینید ولی از همه بیشتر این دستور برای دیدن تمامی ماشین های ایجاد شده در wsl به همراه وضعیت اجراشون حتی ماشین های داکر بدرد میخوره:
wsl -l --all -v
من برای نوشتن این مطلب، از این مقاله در مدیوم الهام گرفتم، اینجا توضیح داده که چطور میتونیم راکی لینوکس رو با همین روش هایی که توضیح دادم نصب کنید:
https://medium.com/thinklinux/installing-rocky-linux-on-windows-10-wsl2-59204b24ad45