WSL (Windows Subsystem for Linux): nedir, kurulum ve Windows içinde Linux yapılandırması
WSL (Windows Subsystem for Linux), Windows 10 ve 11'e yerleşik bir alt sistemdir; ayrı bir sanal makine ve çift önyükleme olmadan gerçek bir Linux dağıtımını çalıştırır. wsl --install komutuyla yönetici olarak PowerShell'de tek adımda kurulur; varsayılan olarak WSL 2 ve Ubuntu kurulur, Ubuntu hafif bir sanal makinede gerçek bir Linux çekirdeğiyle çalışır.
Windows Subsystem for Linux (WSL), Windows 10 ve 11'in bir bileşenidir ve Linux dağıtımını doğrudan Windows içinde çalıştırmanıza izin verir: bash terminali, apt, ssh, grep, Docker ve her türlü komut satırı aracı. VirtualBox kurmanıza ya da ikinci bir sistem için diski bölmenize gerek yoktur: Ubuntu, birkaç saniyede normal bir terminal penceresi olarak açılır. Burada WSL 1 ile WSL 2 arasındaki farkları, alt sistemin nasıl kurulacağını, dosyalar, VS Code ve grafik uygulamalarla nasıl çalışılacağını ve en sık karşılaşılan hataların nasıl giderileceğini anlatıyoruz.
Linux ve Windows'ta WSL nedir
Kısaca WSL, Windows'tan çıkmadan tam bir Linux geliştirme ve öğrenme ortamı elde etmenin yoludur. Bir dağıtımı (Ubuntu, Debian, openSUSE, Kali, AlmaLinux ve diğerleri) komut satırından ya da Microsoft Store'dan kurar, ardından onunla bir sunucudaki gibi çalışırsınız: kullanıcılar, izinler, paketler, servisler.
WSL'nin ne yapmadığını bilmek önemlidir. Cygwin gibi bir komut öykünücüsü ya da taşınmış araçlar topluluğu değildir: WSL 2'de Microsoft tarafından derlenmiş gerçek bir Linux çekirdeği çalışır. Bu yüzden Linux ikili dosyaları yeniden derlenmeden çalışır ve WSL'de edinilen beceriler doğrudan gerçek bir sunucuya taşınır.
Alt sistemin tipik kullanım alanları:
- ayrı bir bilgisayar olmadan Linux ve komut satırı öğrenmek;
- üretim ortamı Linux olduğunda web geliştirme (Python, Node.js, PHP, Go);
- motor olarak WSL 2 kullanan Docker Desktop;
- SSH ile sunuculara bağlanma, bash betikleri, git ile tanıdık bir ortamda çalışma.
WSL 1 ve WSL 2: fark nedir
Alt sistemin iki mimarisi vardır. WSL 1, Linux sistem çağrılarını Windows çekirdeğinin çağrılarına çevirir; ayrı bir Linux çekirdeği yoktur. WSL 2 ise Hyper-V temelli hafif bir sanal makinede gerçek bir Linux çekirdeği çalıştırır; bu makine saniyeler içinde açılır ve belleğini kendi yönetir.
| Parametre | WSL 1 | WSL 2 |
|---|---|---|
| Çekirdek | yok, sistem çağrısı çevirisi | gerçek Linux çekirdeği |
| Sistem çağrısı uyumluluğu | kısmi | tam |
| Docker, systemd | hayır | evet |
Linux dosyalarında hız (~/) | daha düşük | yüksek |
Windows dosyalarında hız (/mnt/c) | yüksek | belirgin şekilde daha düşük |
| Sanallaştırma gerekir mi | hayır | evet |
| Ağ | Windows ile ortak | kendi sanal ağı (varsayılan NAT) |
Neredeyse tüm senaryolarda WSL 2 seçin; varsayılan da odur. WSL 1, sanallaştırma etkinleştirilemiyorsa (örneğin Windows'un kendisi iç içe sanallaştırma olmadan bir sanal makinede çalışıyorsa) ya da proje Windows diskinde durmak ve orada yoğun çalışmak zorundaysa anlamlıdır.
Windows 10 ve 11'de WSL nasıl kurulur
Windows 11'de ve Windows 10 sürüm 2004 veya sonrasında (derleme 19041+) kurulum tek komuta iner. PowerShell'i ya da «Terminal»i yönetici olarak açın ve çalıştırın:
wsl --install
Komut, gerekli Windows bileşenlerini etkinleştirir, WSL 2 çekirdeğini indirir ve Ubuntu'yu kurar. Yeniden başlattıktan sonra dağıtımın penceresi açılır: bir Linux kullanıcı adı ve parola belirleyin. Bunlar Windows hesabınıza bağlı değildir; bu parola sudo için gerekecektir.
Enter new UNIX username: alex
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
Hemen ardından paketleri güncelleyin; tıpkı yeni kurulmuş her sunucuda olduğu gibi:
sudo apt update && sudo apt upgrade -y
Dağıtım nasıl seçilir
Varsayılan olarak Ubuntu kurulur, ama başka bir dağıtım da seçebilirsiniz. Kullanılabilir listeyi görmek için:
wsl --list --online
Listeden bir dağıtımı adıyla kurmak için:
wsl --install -d Debian
WSL zaten kuruluysa komut yalnızca yeni dağıtımı ekler. Aynı anda birden fazla dağıtım tutabilirsiniz; örneğin iş için Ubuntu, denemeler için Kali.
Sürümü kontrol etme: wsl -l -v
Kurulu dağıtımları, durumlarını ve WSL sürümünü görmek için:
wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
Debian Stopped 2
Yıldız işareti varsayılan dağıtımı gösterir; bu dağıtım yalnızca wsl komutuyla açılır. Değiştirmek için: wsl --set-default Debian.
WSL 1'den WSL 2'ye geçiş
Yeni kurulumlar için sürüm şöyle ayarlanır:
wsl --set-default-version 2
Zaten kurulu bir dağıtım ayrıca dönüştürülür (veriler korunur, ama işlem birkaç dakika sürebilir):
wsl --set-version Ubuntu 2
Tersi dönüşüm için: wsl --set-version Ubuntu 1.
WSL yönetimi için faydalı komutlar
| Komut | Ne yapar |
|---|---|
wsl | varsayılan dağıtımı açar |
wsl -d Debian | belirli bir dağıtımı açar |
wsl --shutdown | tüm dağıtımları ve WSL 2 sanal makinesini durdurur |
wsl --terminate Ubuntu | tek bir dağıtımı durdurur |
wsl --update | WSL'i ve çekirdeği günceller |
wsl --status | varsayılan sürüm ve genel durum |
wsl --export Ubuntu ubuntu.tar | dağıtımın arşivde yedeğini alır |
wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tar | dağıtımı geri yükler veya kopyalar |
wsl --unregister Ubuntu | dağıtımı tüm verileriyle birlikte siler |
--unregister konusunda dikkatli olun: dağıtımın içindeki dosyalar Geri Dönüşüm Kutusu'na gitmeden silinir. Önce --export yapın.
Windows dosyalarından Linux'a ve tersine
Windows sürücüleri WSL içinde /mnt dizinine otomatik olarak bağlanır: C: sürücüsü /mnt/c, D: sürücüsü /mnt/d olur.
cd /mnt/c/Users/alex/Downloads
ls -l
cp report.csv ~/projects/
Tersi yönde Linux dosyaları Dosya Gezgini'nde \\wsl$\Ubuntu ağ yolu üzerinden (Windows 11'de ayrıca \\wsl.localhost\Ubuntu) ve kenar çubuğundaki «Linux» bölümünde görünür. Geçerli Linux dizinini hızla Dosya Gezgini'nde açmak için:
explorer.exe .
WSL'den Windows programları (notepad.exe, code) başlatılabilir, PowerShell'den ise wsl önekiyle Linux komutları çalıştırılabilir: wsl ls -la. İki sistem arasında yolları çevirmek için wslpath aracı vardır:
wslpath 'C:\Users\alex'
/mnt/c/Users/alex
WSL 2 performansı için temel kural: projelerinizi /mnt/c yerine Linux dosya sisteminde (~/projects) tutun. Windows disklerine erişim bir ağ protokolü üzerinden gider; büyük bir projede git status ya da npm install gibi işlemler orada kat kat yavaş çalışır.
VS Code ve WSL
Visual Studio Code, WSL ile uzak bir makine gibi çalışabilir: arayüz Windows'ta kalır, terminal, eklentiler, yorumlayıcılar ve hata ayıklayıcı ise Linux içinde çalışır. Bunun için WSL eklentisi (Microsoft) gerekir. Ardından dağıtımın terminalinde proje dizinine geçip çalıştırın:
cd ~/projects/site
code .
İlk açılışta VS Code sunucu bileşenini Linux'a kendisi kurar. Sol alt köşede «WSL: Ubuntu» göstergesi belirir; bu, gömülü terminalden çalıştırdığınız her şeyin Linux'ta çalıştığı anlamına gelir. Python ya da ESLint gibi eklentileri «WSL'de» kurmanız gerekir; VS Code bunu bir düğmeyle önerir.
WSL'de grafik uygulamalar (WSLg)
Windows 11'de ve Windows 10'da güncel WSL sürümlerinde WSLg bulunur: X sunucusu kurmaya gerek kalmadan Linux grafik uygulamalarını destekler. Programı olağan şekilde kurun; penceresi Windows pencerelerinin yanında açılır, kısayolu da Başlat menüsünde görünür.
sudo apt install gedit -y
gedit ~/.bashrc &
WSLg, X11 ve Wayland'ı, sesi ve panoyu destekler. Ancak günlük olarak tam bir Linux masaüstüyle çalışmak için bir alternatif değildir: WSL tek tek uygulamalar için tasarlanmıştır, GNOME ya da KDE gibi bütün bir masaüstü için değil.
systemd ve WSL 2 kaynakları
Güncel WSL 2 sürümleri systemd'yi destekler: yeni Ubuntu kurulumlarında varsayılan olarak etkindir. Etkin değilse dağıtımın içindeki /etc/wsl.conf dosyasına ekleyin:
[boot]
systemd=true
ve PowerShell'den alt sistemi wsl --shutdown ile yeniden başlatın. Bundan sonra systemctl ve nginx ya da PostgreSQL gibi servisler çalışır.
WSL 2 sanal makinesinin bellek ve işlemci sınırını Windows tarafındaki %UserProfile%\.wslconfig dosyasından belirleyebilirsiniz:
[wsl2]
memory=4GB
processors=2
Ayarlar wsl --shutdown sonrasında uygulanır.
WSL kurulumunda sık karşılaşılan hatalar
0x80370102 hatası
Tam mesaj: «Sanal makine başlatılamadı, çünkü gerekli bileşen yüklü değil» (WslRegisterDistribution failed with error: 0x80370102). Nedeni neredeyse her zaman aynıdır: WSL 2 sanal makineyi başlatamıyor. Şunları sırayla kontrol edin:
- Donanım sanallaştırması BIOS/UEFI'de açık mı: Intel VT-x (Intel Virtualization Technology) veya AMD-V (SVM Mode). Durum Görev Yöneticisi → «Performans» → CPU → «Sanallaştırma: Etkin» kısmında görünür.
- «Sanal Makine Platformu» bileşeni etkin mi?
- Hypervisor önyükleyicide devre dışı bırakılmış mı?
Bileşenler yönetici olarak PowerShell'den etkinleştirilir:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto
Bundan sonra bilgisayarı yeniden başlatın. Bir sanal makine içinde çalışıyorsanız ana sistemde iç içe sanallaştırmaya izin vermeniz gerekir; aksi halde WSL 1 kullanın.
Diğer yaygın sorunlar
- 0x800701bc — WSL 2 çekirdeği güncel değil.
wsl --updatekomutunu çalıştırın. - wsl --install yalnızca yardım metni gösteriyor — WSL zaten kurulu; dağıtımı
wsl --install -d Ubuntuile ekleyin. - VPN ile WSL içinde internet yok — VPN istemcisi sanal ağın rotalarını ele geçirir. Windows 11'de
.wslconfigdosyasındaki[wsl2]bölümündenetworkingMode=mirroredseçeneği yardımcı olur. - WSL çok yer kaplıyor — sanal disk
ext4.vhdxbüyür, ama dosyalar silindikten sonra kendiliğinden küçülmez. Elle küçültülebilir ya da--export/--importile taşınabilir. - Linux parolasını unuttunuz — PowerShell'den
wsl -u rootile root olarak girin, sonrapasswd alexçalıştırın.
WSL, sanal makine ya da çift önyükleme
Windows'lu bir bilgisayarda Linux çalıştırmanın tek yolu WSL değildir. Seçim göreve bağlıdır.
| Seçenek | Artıları | Eksileri | Ne zaman seçilmeli |
|---|---|---|---|
| WSL 2 | saniyeler içinde açılma, ortak dosyalar, VS Code, Docker | tam masaüstü yok, ağ ve disk özellikleri | geliştirme, komut satırı öğrenimi, betikler |
| Sanal makine (VirtualBox, Hyper-V, VMware) | tam izolasyon, anlık görüntüler, her dağıtım ve masaüstü, kendi ağ kartı | daha ağır, kaynaklar önceden ayrılır | sunucu laboratuvarı, ağ ve önyükleme denemeleri, disk bölümlendirme |
| Çift önyükleme | donanımın tüm gücü, yerel grafik ve sürücüler | sistem değiştirmek için yeniden başlatma, bölümlendirmede risk | Linux ana sistem olarak, Linux üzerinde oyun ve GPU işleri |
Linux'u sıfırdan öğrenmek için WSL genellikle yeterlidir: dosyalar, izinler, süreçler, paketler, bash betikleri ve SSH sunucudaki gibi çalışır. Bir sanal makineye ihtiyaç, WSL'de farklı işleyen konularda ortaya çıkar: önyükleyici, fiziksel disklerin bölümlendirilmesi, ağ arayüzleri ve ana sistemdeki güvenlik duvarı.
Sonuç
Windows Subsystem for Linux, tek bir komutla, wsl --install, Windows içinde gerçek bir Linux verir. WSL 2'yi seçin, sürümleri wsl -l -v ile kontrol edin, projelerinizi /mnt/c yerine ~/ altında tutun ve VS Code'u WSL eklentisi ile bağlayın. Kurulum 0x80370102 hatasıyla duruyorsa BIOS'ta sanallaştırmayı ve «Sanal Makine Platformu» bileşenini etkinleştirin. Bu çalışma ortamının hazırlanmasıyla Linux kursundaki uygulamalar başlar.
Sık sorulan sorular
WSL ücretsiz mi?
Evet. WSL, Home dahil tüm sürümlerdeki Windows 10 ve 11 ile birlikte gelir; Linux dağıtımları da ücretsiz dağıtılır.
WSL içinde Docker çalıştırabilir miyim?
Evet, ama yalnızca WSL 2 ile. WSL 2 motoru kullanan Docker Desktop kurabilir ya da Docker Engine'i doğrudan dağıtıma, normal bir Ubuntu sunucusundaki gibi kurabilirsiniz.
WSL dağıtımının dosyaları fiziksel olarak nerede saklanır?
WSL 2'de bunlar Windows kullanıcı profilinde bulunan ext4.vhdx sanal diskinde tutulur. Doğrudan açmanıza gerek yoktur: Dosya Gezgini'nde \\wsl$\ yolunu kullanın.
WSL'i tamamen nasıl kaldırırım?
Dağıtımları wsl --unregister ile silin, ardından «Yüklü uygulamalar» bölümünden «Windows Linux Alt Sistemi» uygulamasını kaldırın ve gerekirse Windows bileşenlerini devre dışı bırakın.
WSL'i başka bir sürücüye taşıyabilir miyim?
Evet: wsl --export Ubuntu ubuntu.tar, ardından wsl --unregister Ubuntu ve wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tar. Yeni sürümlerde wsl --manage Ubuntu --move komutu da vardır.
Bu konu “Linux: с нуля до уверенного администрирования” kursunda uygulamalı olarak ayrıntılı işleniyor.
Kursa git