IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal17/40-dars12 daqiqa
Mundarija (32)

WSL2: Windows ichida Linux

Qisqacha: WSL2 (Windows Subsystem for Linux 2) — Windows ichida haqiqiy Linux'ni ishlatish imkoni. U administrator PowerShell'ida bitta buyruq bilan o'rnatiladi: wsl --install. Sukut bo'yicha Ubuntu o'rnatiladi. Asosiy qoida: loyihalarni Linux ichidagi uy papkasida (/home/ismingiz/) saqlang, Windows diskida (/mnt/c/...) emas — aks holda ish bir necha barobar sekinlashadi.

Bu darsda

  • WSL2 qaysi muammoni hal qilishini va virtual mashinadan nimasi bilan farq qilishini tushunasiz.
  • WSL2 va Ubuntu'ni o'rnatish qadamlarini bilasiz, birinchi ishga tushirishdagi savollarga tayyor bo'lasiz.
  • Windows'dan Linux fayllariga va Linux'dan Windows disklariga yo'l yoza olasiz.
  • Loyihani qayerda saqlash kerakligini va nega shundayligini tushuntira olasiz.
  • WSL'ning eng ko'p uchraydigan xatolarini taniysiz.

Oldin bilishingiz kerak: Operatsion tizim nima: kernel, jarayon va oqim, Yo'llar (path): absolyut va nisbiy, Dastur o'rnatish va paket menejerlari.

Maslahat: Bu dars Windows foydalanuvchilari uchun. macOS'da siz allaqachon Linux'ga juda o'xshash muhitdasiz, Linux'da esa — Linux'ning o'zida. Siz darsni tanishish uchun o'qib chiqing, o'rnatish qismini o'tkazib yuborsangiz bo'ladi.

1. Nega bu kerak?

Internetdagi saytlarning aksariyati Linux serverlarda ishlaydi. Dasturchilar vositalari — Node.js, Docker, ma'lumotlar bazalari — avvalo Linux uchun yaratiladi va sinaladi. Siz yozgan sayt ham bir kun Linux serverga chiqadi.

Aziz esa Windows noutbukda o'qiyapti. Ilgari uning oldida ikki noqulay yo'l bor edi:

  1. Ikkinchi tizim o'rnatish (dual boot). Kompyuter yoqilganda "Windows yoki Linux?" deb so'raydi. Linux'da ishlasangiz, Telegram yoki Word uchun qayta yuklash kerak.
  2. Virtual mashina. Bu haqda pastda gaplashamiz — u og'ir va sekin edi.

WSL2 uchinchi yo'lni beradi: Windows'dan chiqmasdan, uning ichida haqiqiy Linux ishlaydi. Oynada Telegram, yonida Ubuntu terminali.

2. WSL2 qanday ishlaydi?

2.1 Virtual mashina nima?

Virtual mashina (virtual machine, VM) — kompyuter ichida dastur yordamida yaratilgan ikkinchi "kompyuter". Unga protsessor vaqti, xotira va disk ajratiladi. Ichida alohida operatsion tizim yashaydi va o'zini haqiqiy kompyuterdadek his qiladi.

O'xshatish: katta uy ichida qurilgan alohida kvartira. O'z eshigi, o'z oshxonasi bor, lekin elektr va suv umumiy uydan keladi.

Klassik virtual mashinalar (VirtualBox, VMware) to'liq kompyuterni taqlid qiladi. Ular ko'p xotira oladi, sekin yoqiladi va Windows bilan fayl almashish noqulay.

2.2 WSL2 — yengil virtual mashina

WSL2 ham virtual mashinada ishlaydi, lekin juda yengil. Uni Windows o'zi boshqaradi: bir necha soniyada yoqiladi, xotirani kerakligicha oladi va keyin qaytaradi. Ichida Microsoft sozlagan haqiqiy Linux yadrosi (kernel) ishlaydi.

flowchart TB
  subgraph W["Windows 11"]
    A["Windows dasturlari:<br/>brauzer, Telegram, VS Code"]
  end
  subgraph L["WSL2 — yengil virtual mashina"]
    B["Ubuntu: bash, git, node"]
    K["Haqiqiy Linux yadrosi"]
    B --> K
  end
  A <-- "fayllar va tarmoq umumiy" --> B
  W --> H["Virtualizatsiya qatlami (Hyper-V)"]
  L --> H
  H --> P["Kompyuter apparati: CPU, RAM, disk"]

Birinchi versiya — WSL1 — boshqacha ishlardi. U Linux dasturlarining tizim chaqiruvlarini Windows tiliga "tarjima" qilardi. Ba'zi dasturlar bu tarjimada ishlamasdi. WSL2 haqiqiy yadro ishlatgani uchun Linux dasturlari to'liq ishlaydi. Bugun "WSL" deyilganda deyarli har doim WSL2 nazarda tutiladi.

2.3 Distributiv nima?

Linux yadrosining o'zi faqat poydevor. Unga buyruqlar, paket menejeri va boshqa dasturlar qo'shilib, tayyor tizim yig'iladi. Bunday to'plam distributiv (distribution, qisqasi "distro") deb ataladi. Mashhurlari: Ubuntu, Debian, Fedora.

WSL sukut bo'yicha Ubuntu'ni o'rnatadi. Bu kursda ham Ubuntu ishlatamiz — serverlarda eng ko'p uchraydigani ham shu.

Tekshirib ko'ring: WSL1 va WSL2 ning asosiy farqi nimada?

Javob

WSL1 Linux dasturlarining tizim chaqiruvlarini Windows'ga tarjima qilardi — haqiqiy Linux yadrosi yo'q edi, shuning uchun ba'zi dasturlar ishlamasdi. WSL2 yengil virtual mashina ichida haqiqiy Linux yadrosini ishlatadi, shuning uchun Linux dasturlari to'liq ishlaydi.

3. O'rnatish

3.1 Talablar

  • Windows 11 yoki yangilangan Windows 10.
  • Kompyuter BIOS'ida virtualizatsiya yoqilgan bo'lishi. BIOS — kompyuter yoqilganda birinchi ishlaydigan dastur, uni Kompyuter nima darsida "firmware" deb ko'rgan edik.

Virtualizatsiyani tekshirish: Ctrl + Shift + Esc bilan Task Manager'ni oching → "Performance" (Unumdorlik) → "CPU". O'ng pastda Virtualization: Enabled yozuvi bo'lsa — hammasi joyida.

3.2 Bitta buyruq

PowerShell'ni administrator sifatida ochamiz: Windows tugmasini bosing, PowerShell deb yozing, dastur ustida sichqonchaning o'ng tugmasini bosib "Run as administrator" ni tanlang. Keyin:

powershell
wsl --install

Bu buyruq:

  1. WSL uchun kerakli Windows qismlarini yoqadi.
  2. Linux yadrosini yuklab oladi.
  3. Ubuntu distributivini o'rnatadi.

Ko'pincha oxirida kompyuterni qayta ishga tushirish so'raladi. Qayta yuklang.

Boshqa distributiv kerak bo'lsa, avval ro'yxatni ko'ring, keyin nomini yozing:

powershell
wsl --list --online
wsl --install -d Debian

3.3 Birinchi ishga tushirish

Qayta yuklangandan keyin Ubuntu oynasi ochiladi (ochilmasa, Start menyusidan "Ubuntu" ni toping). U ikki narsani so'raydi:

text
Enter new UNIX username: ali
New password:
Retype new password:
  • UNIX username — Linux ichidagi foydalanuvchi nomingiz. Kichik lotin harflarida, bo'sh joysiz yozing: ali, malika.
  • Password — Linux paroli. U sudo buyrug'i uchun kerak bo'ladi. Windows parolingiz bilan bir xil bo'lishi shart emas.

Diqqat: Parol yozayotganda ekranda hech narsa ko'rinmaydi — na harf, na yulduzcha. Bu xato emas, Linux'ning himoyasi: yoningizdagi odam parol uzunligini ham ko'rmasin. Yozishda davom eting va Enter bosing.

Shundan keyin siz Linux ichidasiz. Birinchi ish — paketlarni yangilash (oldingi darsdagi apt):

bash
sudo apt update
sudo apt upgrade

sudo parol so'raydi — hozirgina o'ylab topgan parolingizni yozing.

3.4 Hammasi o'rnatilganini tekshirish

PowerShell'da (administrator shart emas):

powershell
wsl --list --verbose
text
  NAME      STATE           VERSION
* Ubuntu    Running         2
  • NAME — distributiv nomi. * belgisi — sukut bo'yicha ochiladigani.
  • STATE — holati: Running (ishlayapti) yoki Stopped (to'xtagan).
  • VERSION — 2 bo'lishi kerak, ya'ni WSL2.

Tekshirib ko'ring: wsl --list --verbose natijasida VERSION ustunida 1 turibdi. Bu nimani bildiradi?

Javob

Bu distributiv eski WSL1 rejimida ishlayapti — haqiqiy Linux yadrosisiz. Uni WSL2 ga o'tkazish uchun wsl --set-version Ubuntu 2 buyrug'i bor. Yangi o'rnatishlarda sukut bo'yicha 2 bo'ladi.

4. Kundalik boshqaruv

Buyruq (PowerShell'da) Nima qiladi
wsl Sukut bo'yicha distributivni ochadi
wsl -d Debian Aniq distributivni ochadi
wsl --list --verbose Distributivlar va holati
wsl --shutdown Barcha distributivlarni to'xtatadi
wsl --update WSL'ning o'zini yangilaydi

Qulayroq yo'li — Windows Terminal dasturi (Windows 11'da tayyor turadi). Unda yangi varaq ochish menyusida "Ubuntu" chiqadi. Terminal dasturlari haqida — keyingi darslarda.

5. Ikki dunyo orasidagi ko'prik

5.1 Windows'dan Linux fayllariga

File Explorer'ning chap panelida pingvin rasmli Linux bo'limi bor. Yoki manzil qatoriga yozing:

text
\\wsl.localhost\Ubuntu\home\ali

Eski qisqa shakli ham ishlaydi: \\wsl$\Ubuntu\home\ali. Bu yerda Linux fayllari oddiy papkadek ko'rinadi.

Teskari yo'nalishda ham qulay: Ubuntu terminalida explorer.exe . deb yozsangiz, turgan Linux papkangiz Explorer'da ochiladi. Nuqta (.) — "joriy papka", buni Yo'llar darsida ko'rgan edik.

5.2 Linux'dan Windows disklariga

Linux'da Windows disklari /mnt/ papkasi ichida turadi. Disk harfi kichik harfga aylanadi, teskari chiziqlar oddiy chiziqqa:

Windows'da Linux (WSL) ichida
C:\ /mnt/c/
D:\ /mnt/d/
C:\Users\Ali\Desktop /mnt/c/Users/Ali/Desktop

Tekshirib ko'ring: Windows'dagi D:\Rasmlar\2026 papkasining WSL ichidagi yo'lini yozing.

Javob

/mnt/d/Rasmlar/2026. Disk D: → /mnt/d, teskari chiziqlar (\) oddiy chiziqqa (/) almashadi. Papka nomlarining katta-kichik harfi o'zgarmaydi.

6. Eng muhim qoida: loyihani qayerda saqlash

6.1 Muammo

Jasur loyihasini C:\Users\Jasur\Desktop\sayt da saqladi va WSL terminalida /mnt/c/Users/Jasur/Desktop/sayt orqali ishladi. Kichik fayllari ko'p bo'lgan har bir amal — masalan, tayyor kutubxonalarni yuklash — daqiqalab cho'zila boshladi.

6.2 Sababi

Linux o'z diskida (ext4 fayl tizimi, Fayl tizimi darsida ko'rgan edik) to'g'ridan-to'g'ri ishlaydi. Windows diskidagi faylga esa har safar "chegara"dan o'tib murojaat qiladi. Har bir murojaat maxsus ko'prik orqali ketadi va vaqt oladi. Bitta katta fayl uchun bu sezilmaydi. Lekin dasturlash loyihasida o'n minglab kichik fayl bo'ladi — kechikishlar qo'shilib, ish bir necha barobar sekinlashadi.

Chegara ikki tomonlama: Windows dasturlari ham Linux fayllarini sekinroq o'qiydi. Qoida — fayl qaysi dunyoda yashasa, u bilan o'sha dunyoning dasturlari ishlasin.

Diqqat — oltin qoida: Linux vositalari bilan ishlaydigan loyihalarni Linux uy papkasida saqlang.

  • /home/jasur/loyihalar/sayt — Linux diskida, tez.
  • /mnt/c/Users/Jasur/Desktop/sayt — Windows diskida, sekin.

Fayl tizimi darsida loyihalar uchun C:\loyihalar papkasini tavsiya qilgan edik. Bu gap Windows dasturlari bilan ishlaganda to'g'ri. WSL'da ishlasangiz, xuddi shunday loyihalar papkasini Linux uy papkasida oching.

Yana bir farq: Linux fayl tizimi katta-kichik harfni farqlaydi. Rasm.png va rasm.png u yerda ikki xil fayl. Bu serverdagi holat bilan bir xil — Yo'llar darsidagi ogohlantirishni eslang.

Tekshirib ko'ring: Nega bitta 2 GB lik video faylni /mnt/c dan o'qish unchalik sekin emas, 30 000 ta kichik fayli bor loyiha esa juda sekin?

Javob

Sekinlik har bir murojaatda chegaradan o'tishdan kelib chiqadi. Bitta katta fayl — kam murojaat. 30 000 ta kichik fayl — 30 000 marta ochish, o'qish va tekshirish. Har birining kichik kechikishi qo'shilib, katta vaqtga aylanadi.

7. VS Code bilan ishlash

Kodni qora oynada emas, VS Code'da yozasiz. VS Code — Microsoft'ning bepul kod tahrirlovchisi, uni alohida darsda o'rnatamiz va o'rganamiz. Hozir faqat g'oyani bilib qo'ying:

  1. VS Code'ga WSL kengaytmasini (Microsoft chiqargan) o'rnatasiz.
  2. Ubuntu terminalida loyiha papkasiga kirasiz.
  3. code . deb yozasiz.

VS Code oynasi Windows'da ochiladi, lekin fayllar, terminal va dasturlar Linux ichida ishlaydi. Oynaning chap pastki burchagida WSL: Ubuntu yozuvi chiqadi. Batafsil — VS Code terminali va masofaviy ishlash darsida.

8. Xotira va to'xtatish

WSL2 sukut bo'yicha kompyuter xotirasining yarmigacha ishlata oladi. Xotira kam bo'lsa (8 GB), buni cheklash mumkin. Windows'dagi foydalanuvchi papkangizda (C:\Users\Ali\) .wslconfig nomli fayl yaratiladi:

ini
[wsl2]
memory=3GB

Fayl saqlangandan keyin PowerShell'da wsl --shutdown yozing — keyingi ochilishda yangi chegara ishlaydi. wsl --shutdown WSL egallagan xotirani darhol bo'shatish uchun ham qulay.

9. Ko'p uchraydigan xatolar

9.1 Virtualizatsiya o'chiq

Bu xabarni biz shu darsni tayyorlagan kompyuterda haqiqatan oldik:

text
WSL2 is not supported with your current machine configuration.
Please enable the "Virtual Machine Platform" optional component
and ensure virtualisation is enabled in the BIOS.
Enable "Virtual Machine Platform" by running:
wsl.exe --install --no-distribution

Tarjimasi: "Kompyuteringizning hozirgi sozlamasida WSL2 ishlamaydi. 'Virtual Machine Platform' qismini yoqing va BIOS'da virtualizatsiya yoqilganiga ishonch hosil qiling". Xabar yechimni ham aytyapti:

  1. Administrator PowerShell'ida wsl.exe --install --no-distribution ni ishga tushiring va kompyuterni qayta yuklang.
  2. Task Manager'da Virtualization: Disabled bo'lsa — BIOS'ga kiring (kompyuter yoqilayotganda odatda F2, F10 yoki Del tugmasi) va "Intel VT-x", "AMD-V" yoki "SVM" bandini yoqing.

Xuddi shu muammo ba'zan 0x80370102 kodi bilan chiqadi — yechimi bir xil.

9.2 Parol "yozilmayapti"

Parol yozilayotganda ekran bo'sh turadi — bu to'g'ri xatti-harakat (o'rnatish bo'limidagi ogohlantirishni eslang). Yozib, Enter bosing.

9.3 Linux parolini unutish

PowerShell'da root (Linux'ning bosh administratori) sifatida kiring va yangi parol bering:

powershell
wsl -u root
bash
passwd ali

ali o'rniga o'z Linux foydalanuvchi nomingizni yozing. Keyin exit bilan chiqing.

9.4 Loyiha /mnt/c da va hammasi sekin

Loyihani Linux uy papkasiga ko'chiring (loyihani qayerda saqlash qoidasi). Keyingi darslarda fayllarni terminalda ko'chirishni ham o'rganamiz.

9.5 Windows dasturida yaratilgan skript Linux'da ishlamaydi

Windows dasturlari yangi faylni odatda CRLF qator oxiri bilan saqlaydi. Linux'da bu ^M xatosini beradi — Qator oxiri darsidagi muammoning o'zi. Linux fayllarini VS Code (WSL rejimida) orqali tahrirlang.

10. Mashqlar

1-mashq (oson): Yo'llarni almashtiring

Windows yo'lini WSL yo'liga aylantiring: C:\Users\Malika\Documents\hisobot.txt. Ishora: disk harfi /mnt/ ichida kichik harf bo'ladi, \ esa / ga almashadi.

Javob:

Yechim

/mnt/c/Users/Malika/Documents/hisobot.txt. C: → /mnt/c, qolgan qism o'zgarmaydi, faqat teskari chiziqlar oddiy chiziqqa almashdi.

2-mashq (o'rta): Tartibni tiklang

Ali WSL o'rnatmoqchi. Qadamlarni to'g'ri tartibga qo'ying:

  • A) Ubuntu'da foydalanuvchi nomi va parol yaratish
  • B) wsl --install ni administrator PowerShell'ida ishga tushirish
  • C) Task Manager'da Virtualization: Enabled ni tekshirish
  • D) Kompyuterni qayta yuklash
  • E) sudo apt update va sudo apt upgrade
Yechim

C → B → D → A → E. Avval virtualizatsiya yoqilganini tekshiramiz (aks holda o'rnatish xato beradi). Keyin wsl --install, qayta yuklash, birinchi ochilishda foydalanuvchi yaratish va oxirida paketlarni yangilash. sudo parol so'raydi — u A qadamda yaratiladi, shuning uchun E undan keyin keladi.

3-mashq (qiyin): Tergov

Jasurning WSL'dagi loyihasi juda sekin ishlayapti. U terminalda turgan papkasining yo'lini ko'rsatdi: /mnt/c/Users/Jasur/Desktop/do'kon-sayt. Uning kompyuterida 8 GB xotira bor va WSL ishlaganda Windows qotib qolyapti.

  1. Sekinlikning sababi nima va loyihani qaysi yo'lga ko'chirish kerak?
  2. Windows qotishining ehtimoliy sababi va yechimi?
  3. Papka nomida yana qanday muammo bor? (Ishora: Fayl va papka nomlash qoidalari.)
Yechim
  1. Loyiha Windows diskida (/mnt/c/...). Har bir fayl murojaati chegaradan o'tadi. Uni Linux uy papkasiga ko'chirish kerak: masalan, /home/jasur/loyihalar/dokon-sayt.
  2. WSL2 xotiraning yarmigacha — 4 GB gacha oladi, Windows'ga kam qoladi. C:\Users\Jasur\.wslconfig faylida [wsl2] va memory=3GB yozib, wsl --shutdown qilish kerak.
  3. Nomda apostrof (') bor. Apostrof terminal buyruqlarida muammo tug'diradi. Nom dokon-sayt kabi kichik lotin harflari va chiziqchadan iborat bo'lsin.

11. Real ishda

  • Windows'dagi dasturchilar. Ko'p kompaniyalar Windows noutbuk beradi, loyihalar esa Linux serverda ishlaydi. WSL2 ikkisini bog'laydi: siz serverdagi muhitning o'zida ishlaysiz.
  • Docker. Windows'dagi Docker Desktop (dasturlarni "konteyner"larda ishga tushiradigan vosita, keyinroq o'rganamiz) ichkarida WSL2'dan foydalanadi. wsl --list --verbose da docker-desktop degan distributivni ko'rsangiz — sababi shu.
  • Server buyruqlarini mashq qilish. Haqiqiy serverni buzib qo'yishdan qo'rqmasdan, Linux buyruqlarini WSL'da sinab ko'rasiz. Kerak bo'lsa, distributivni o'chirib, qaytadan o'rnatasiz.
  • Intervyu. "Windows'da ishlasangiz, Linux muhitini qanday tashkil qilasiz?" degan savolga "WSL2, loyihalar Linux fayl tizimida, VS Code WSL kengaytmasi bilan" — tayyor javob.

Xulosa

  • WSL2 — Windows ichida haqiqiy Linux yadrosi bilan ishlaydigan yengil virtual mashina.
  • O'rnatish: administrator PowerShell'ida wsl --install, qayta yuklash, Linux foydalanuvchi nomi va paroli.
  • Parol yozilganda ekranda hech narsa ko'rinmaydi — bu normal.
  • Windows'dan Linux'ga: \\wsl.localhost\Ubuntu\...; Linux'dan Windows'ga: /mnt/c/....
  • Loyihalarni Linux uy papkasida saqlang — /mnt/c da ish bir necha barobar sekin.
  • Virtualizatsiya xatosi — BIOS'da virtualizatsiyani va "Virtual Machine Platform" ni yoqish bilan hal bo'ladi.

Keyingi dars: Terminal, shell va prompt — shu paytgacha buyruqlarni "yozib, Enter bosing" deb ishlatdik. Endi terminal, shell va prompt aslida nima ekanini tushunamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
WSL2: Windows ichida Linux — IlmHamroh