Windows kullanıyorsunuz ama karşınıza sürekli Linux çıkıyor: Bir eğitimdeki komutlar bash için yazılmış, sunucunuz Ubuntu, Docker container'larınızın neredeyse tamamı Linux tabanlı. Eskiden bunun çözümü ya bilgisayara ikinci bir işletim sistemi kurmak ya da VirtualBox gibi bir programla ağır bir sanal makine çalıştırmaktı. WSL bu ihtiyacı Windows'un içinden, tek bir komutla çözer. Bu yazıda WSL'in ne olduğunu, nasıl kurulduğunu, Windows ile Linux arasında dosyaların nasıl paylaşıldığını ve en sık karşılaşılan hataları anlatacağız.
WSL (Windows Subsystem for Linux), Windows üzerinde ayrı bir sanal makine programı kurmadan veya bilgisayarı ikinci bir işletim sistemiyle başlatmadan, Ubuntu, Debian gibi Linux dağıtımlarını çalıştırmanızı sağlayan bir Windows özelliğidir. Türkçesiyle "Linux için Windows Alt Sistemi" olarak geçer.
WSL ile şunları yapabilirsiniz:
ls, grep, apt, ssh gibi komutları kullanmak.sh dosyaları) çalıştırmakMicrosoft, Mayıs 2025'teki Build konferansında WSL'in kaynak kodunu açtığını duyurdu. Bugün WSL açık kaynaklıdır ve kodu GitHub'da yayımlanmaktadır.
WSL'in iki sürümü vardır ve çalışma mantıkları farklıdır:
Microsoft'un resmi karşılaştırmasının özeti:
| Özellik | WSL 1 | WSL 2 |
|---|---|---|
| Windows ve Linux arasında entegrasyon | Var | Var |
| Hızlı açılış | Var | Var |
| Gerçek (tam) Linux çekirdeği | Yok | Var |
| Tam sistem çağrısı uyumluluğu | Yok | Var |
| systemd desteği | Yok | Var |
| Windows dosyalarına (C: sürücüsü) erişim performansı | Daha iyi | Daha yavaş |
| VMware ve VirtualBox'ın güncel sürümleriyle birlikte çalışma | Var | Yok (eski sürümlerle sorun çıkabilir) |
Hangisini seçmeli? Neredeyse her durumda WSL 2. Docker, systemd isteyen servisler ve tam Linux uyumluluğu yalnızca WSL 2'de vardır. wsl --install komutuyla yapılan yeni kurulumlar zaten varsayılan olarak WSL 2 kullanır. WSL 1, yalnızca projelerinizi Windows klasörlerinde tutmak zorundaysanız veya WSL 2'yi desteklemeyen eski bir donanımınız varsa anlamlıdır.
WSL 2'de olan şey özetle şudur:
/mnt/c gibi klasörler olarak görünür, Linux dosyaları Windows'ta \\wsl.localhost adresinden açılır, Linux'ta localhost üzerinde çalışan bir sunucuya Windows tarayıcısından ulaşılabilir.Docker Nedir? yazısında Docker Desktop'ın Windows'ta arka planda hafif bir Linux sanal makinesi çalıştırdığından bahsetmiştik. Bu sanal makine, WSL 2'nin ta kendisidir.
winver yazın.Başlat menüsünde PowerShell arayın, sağ tıklayıp Yönetici olarak çalıştır seçin ve şu komutu yazın:
wsl --install
Bu komut sırasıyla:
Kurulum bittiğinde bilgisayarı yeniden başlatın. Yeniden başlatmadan WSL çalışmaz.
Ubuntu yerine başka bir dağıtım istiyorsanız önce kurulabilecek dağıtımları listeleyin:
wsl --list --online
Ardından istediğiniz dağıtımı adıyla kurun, örneğin Debian için:
wsl --install -d Debian
Yeniden başlattıktan sonra Ubuntu penceresi kendiliğinden açılır (açılmazsa Başlat menüsünden Ubuntu'yu çalıştırın). İlk açılışta sizden bir kullanıcı adı ve şifre istenir.
Bilmeniz gereken birkaç nokta:
mutlu).sudo ile yönetici işlemleri yaparken kullanacaksınız, unutmayın.İlk iş olarak Ubuntu'nun paket listesini ve yüklü paketleri güncelleyin:
sudo apt update && sudo apt upgrade -y
sudo, komutu yönetici yetkisiyle çalıştırır ve Adım 2'de belirlediğiniz şifreyi sorar.
PowerShell'e geri dönüp şu komutu çalıştırın:
wsl --list --verbose
Çıktı şuna benzer:
NAME STATE VERSION
* Ubuntu Running 2
VERSION sütununda 2 görüyorsanız dağıtımınız WSL 2 ile çalışıyor demektir. Baştaki * işareti varsayılan dağıtımı gösterir.
WSL'in kendisini güncellemek ve sürümünü görmek için şu komutları kullanabilirsiniz:
wsl --update
wsl --version
WSL'e girmenin birkaç yolu vardır:
wsl yazmakPowerShell'den Linux'a geçerken doğrudan Linux'taki ev klasörünüzde başlamak için:
wsl ~
Linux terminalinden çıkmak için exit yazmanız yeterlidir.
Windows sürücüleriniz Linux'ta /mnt klasörünün altında görünür:
| Windows | Linux'taki karşılığı |
|---|---|
C:\ | /mnt/c/ |
D:\ | /mnt/d/ |
C:\Users\Mutlu\Desktop | /mnt/c/Users/Mutlu/Desktop |
Örneğin Windows masaüstünüzdeki dosyaları listelemek için:
ls /mnt/c/Users/KULLANICI_ADINIZ/Desktop
Dosya Gezgini'nin adres çubuğuna şunu yazın:
\\wsl.localhost
Kurulu tüm dağıtımlar klasör olarak görünür; örneğin Ubuntu'daki ev klasörünüz \\wsl.localhost\Ubuntu\home\kullanici_adiniz adresindedir. Windows 11'de Dosya Gezgini'nin sol menüsünde ayrıca bir Linux bölümü de bulunur.
En pratik yol ise Linux terminalindeyken bulunduğunuz klasörü doğrudan Dosya Gezgini'nde açmaktır:
explorer.exe .
Sondaki noktayı unutmayın; "bu klasör" anlamına gelir.
Microsoft'un resmi önerisi açıktır: En iyi performans için dosyalarınızı, kullandığınız araçlarla aynı işletim sisteminin dosya sisteminde tutun.
/home/kullanici_adiniz/projelerC:\Users\kullanici_adiniz\projelerWSL 2'de /mnt/c üzerinden Windows dosyalarına erişim, Linux dosya sistemine göre belirgin şekilde yavaştır. npm install gibi binlerce küçük dosya oluşturan bir komutu /mnt/c altındaki bir projede çalıştırmak, aynı komutu Linux ev klasöründe çalıştırmaktan çok daha uzun sürebilir. WSL ile çalışırken yaşanan "çok yavaş" şikayetlerinin büyük kısmı bu yüzdendir.
Bunun için Linux tarafında bir proje klasörü oluşturun ve çalışmalarınızı orada yapın:
mkdir -p ~/projeler
cd ~/projeler
WSL'in Windows ile ne kadar iç içe çalıştığını görmek için küçük bir deneme yapalım. Ubuntu'da Python 3 hazır yüklü gelir; Python'un içindeki basit web sunucusunu kullanacağız. python3 --version komutu bir sürüm numarası yerine hata verirse önce sudo apt install python3 ile kurun.
mkdir -p ~/projeler/wsl-deneme
cd ~/projeler/wsl-deneme
echo "<h1>Merhaba! Bu sayfa WSL içinden geliyor.</h1>" > index.html
python3 -m http.server 8000
Terminalde sunucunun 8000 portunda çalıştığını belirten bir satır görürsünüz.
Windows'taki tarayıcınızda şu adresi açın:
http://localhost:8000
"Merhaba! Bu sayfa WSL içinden geliyor." başlığını görmelisiniz. WSL 2, Linux içinde localhost üzerinde açılan portları varsayılan olarak Windows'a da iletir; bu yüzden ek bir ayar gerekmez.
Sunucuyu durdurmak için Linux terminalinde Ctrl+C tuşlarına basın.
Aynı klasördeyken şunu yazın:
explorer.exe .
Açılan Dosya Gezgini penceresinde index.html dosyasını Not Defteri ile açıp metni değiştirin, kaydedin, sunucuyu yeniden başlatıp tarayıcıyı yenileyin. Aynı dosyaya hem Windows'tan hem Linux'tan erişmiş oldunuz.
WSL 2 varsayılan olarak bilgisayarınızın toplam belleğinin %50'sine kadarını kullanabilir. Docker ile ağır işler çalıştırdığınızda bu, Windows tarafında yavaşlamaya yol açabilir. Sınırları belirlemek için Windows'ta kullanıcı klasörünüzde (C:\Users\KULLANICI_ADINIZ) .wslconfig adlı bir dosya oluşturun. Bu dosya varsayılan olarak yoktur.
Örneğin WSL'i 4 GB bellek ve 2 işlemci çekirdeğiyle sınırlamak için:
[wsl2]
memory=4GB
processors=2
swap=4GB
Ayarların geçerli olması için WSL'in tamamen kapanıp yeniden açılması gerekir. Bunun en hızlı yolu PowerShell'de şu komuttur:
wsl --shutdown
Bu komut çalışan tüm dağıtımları kapatır. Ardından Ubuntu'yu yeniden açtığınızda yeni ayarlar geçerli olur. Microsoft'un dokümantasyonuna göre tüm Linux pencerelerini kapattıktan sonra alt sistemin tamamen durması yaklaşık 8 saniye sürer; wsl --shutdown bu bekleme yerine doğrudan kapatır.
systemd, Linux'ta servisleri (örneğin bir veritabanını veya SSH sunucusunu) başlatıp yöneten sistemdir ve systemctl komutuyla kullanılır. Microsoft'un dokümantasyonuna göre wsl --install ile kurulan güncel Ubuntu sürümlerinde systemd varsayılan olarak açıktır.
Başka bir dağıtımda veya eski bir kurulumda açmak için Linux içinde /etc/wsl.conf dosyasına şunları ekleyin:
[boot]
systemd=true
Ardından PowerShell'de wsl --shutdown komutuyla WSL'i yeniden başlatın. systemd için WSL sürümünüzün 0.67.6 veya daha yeni olması gerekir; wsl --version ile kontrol edebilirsiniz.
Windows'ta Docker Desktop kurarken WSL 2 tabanlı motoru kullanmanız önerilir. Kurulumdan sonra Docker Desktop ayarlarında Resources → WSL Integration bölümünden hangi dağıtımlarda docker komutunun kullanılabileceğini seçebilirsiniz. Ubuntu için bu ayarı açtığınızda, Ubuntu terminalinde doğrudan docker ve docker compose komutlarını kullanabilirsiniz.
Bu ikilinin en verimli kullanımı, projeyi Linux tarafında (~/projeler) tutup Docker komutlarını Ubuntu terminalinden çalıştırmaktır. Docker Nedir? ve Docker Compose Nedir? yazılarındaki tüm örnekleri bu şekilde birebir uygulayabilirsiniz.
VS Code'a Microsoft'un WSL eklentisini kurduğunuzda, Linux içindeki bir proje klasöründe şu komutu yazmanız yeterlidir:
code .
VS Code Windows'ta açılır ama terminali, eklentileri ve dosya işlemleri Linux tarafında çalışır. Böylece hem Windows'un rahat arayüzünü hem de Linux'un geliştirme ortamını birlikte kullanırsınız.
Aşağıdaki komutlar PowerShell'de veya Komut İstemi'nde çalıştırılır:
| Komut | Ne yapar? |
|---|---|
wsl --install | WSL'i ve varsayılan dağıtımı (Ubuntu) kurar |
wsl --list --online | Kurulabilecek dağıtımları listeler |
wsl --list --verbose | Kurulu dağıtımları, durumlarını ve WSL sürümlerini gösterir |
wsl --install -d <dağıtım> | Belirtilen dağıtımı kurar |
wsl -d <dağıtım> | Belirtilen dağıtımı başlatır |
wsl --set-default <dağıtım> | Varsayılan dağıtımı değiştirir |
wsl --set-version <dağıtım> 2 | Bir dağıtımı WSL 2'ye dönüştürür |
wsl --update | WSL'i günceller |
wsl --version | WSL ve çekirdek sürümünü gösterir |
wsl --shutdown | Tüm dağıtımları ve WSL 2 sanal makinesini kapatır |
wsl --terminate <dağıtım> | Yalnızca belirtilen dağıtımı kapatır |
wsl --export <dağıtım> <dosya> | Dağıtımın yedeğini dosyaya alır |
wsl --import <ad> <klasör> <dosya> | Yedekten dağıtım oluşturur |
wsl --unregister <dağıtım> | Dağıtımı tüm verileriyle birlikte siler |
wsl --unregister komutuna özellikle dikkat edin. Microsoft'un uyarısıyla: Bu komuttan sonra o dağıtıma ait tüm veriler, ayarlar ve yazılımlar kalıcı olarak silinir. Emin değilseniz önce wsl --export ile yedek alın.
Neden olur: WSL 2'nin ihtiyaç duyduğu sanallaştırma kullanılamıyor.
Çözüm:
bcdedit /enum | findstr -i hypervisorlaunchtype
Sonuç Off ise şu komutla açın ve bilgisayarı yeniden başlatın:
bcdedit /set hypervisorlaunchtype Auto
WSL'i bir sanal makinenin içinde kuruyorsanız (örneğin Hyper-V'deki bir Windows sanal makinesinde), o sanal makine için iç içe sanallaştırmanın (nested virtualization) açık olması gerekir.
Neden olur: "Windows Subsystem for Linux" Windows özelliği etkin değil.
Çözüm: Yönetici PowerShell'de şu komutu çalıştırıp bilgisayarı yeniden başlatın:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Aynı işlemi Windows özelliklerini aç veya kapat penceresinden Linux için Windows Alt Sistemi seçeneğini işaretleyerek de yapabilirsiniz.
Neden olur: WSL dağıtımları yalnızca sistem sürücüsünde (genellikle C:) çalışır. Windows'ta yeni uygulamaların başka bir sürücüye kaydedilmesi ayarlanmışsa bu hata alınır.
Çözüm: Windows 11'de Ayarlar → Sistem → Depolama → Gelişmiş depolama ayarları → Yeni içeriğin kaydedileceği yer bölümünden yeni uygulamaların kaydedileceği yeri C: olarak değiştirin.
Neden olur: Linux çekirdeği bileşeni eksik veya eski.
Çözüm: PowerShell'de şu komutu çalıştırın:
wsl --update
Hata devam ederse Microsoft'un sorun giderme sayfasında önerildiği gibi Linux çekirdeği güncelleme paketini (MSI) WSL'in manuel kurulum sayfasından indirip kurun.
Neden olur: Bazı kurumsal VPN'ler DNS ayarlarını değiştirir ve WSL'in otomatik oluşturduğu DNS yapılandırması VPN ile uyumsuz kalır.
Çözüm: Önce WSL'i ve Windows'u güncelleyin, ardından .wslconfig dosyasına networkingMode=mirrored satırını ekleyerek ağ modunu "aynalanmış" moda almayı deneyin. Bu mod, WSL'in Windows'un ağ arayüzlerini doğrudan kullanmasını sağlar ve VPN uyumluluğunu genellikle iyileştirir. Sorun devam ederse Microsoft'un sorun giderme sayfasındaki DNS adımlarını izleyin.
[wsl2]
networkingMode=mirrored
Neden olur: Büyük ihtimalle proje /mnt/c altında, yani Windows dosya sisteminde duruyor.
Çözüm: Projeyi Linux ev klasörünüze (~/projeler) taşıyın. Taşımak için örneğin:
cp -r /mnt/c/Users/KULLANICI_ADINIZ/projem ~/projeler/
Evet. WSL, Windows 10 ve Windows 11'in ücretsiz bir özelliğidir. Ubuntu ve Debian gibi dağıtımlar da ücretsizdir. WSL'in kaynak kodu 2025'ten bu yana açıktır.
Tam olarak değil. WSL 2 de arka planda sanallaştırma kullanır, ancak bu sanal makine Windows tarafından otomatik yönetilir, saniyeler içinde açılır ve Windows ile derin bir entegrasyona sahiptir (ortak dosya erişimi, localhost yönlendirmesi, Windows programlarını Linux'tan çalıştırma). Klasik sanal makinelerde ise her şeyi siz kurar ve yönetirsiniz; karşılığında tamamen bağımsız, farklı bir işletim sistemi elde edersiniz.
Evet. Windows 11 ve güncel Windows 10 sürümlerinde WSL, grafik arayüzlü Linux uygulamalarını da destekler (bu özelliğe WSLg denir). Örneğin Linux'a kurduğunuz bir grafik programı, Windows masaüstünde normal bir pencere olarak açılır. Ancak WSL'in asıl kullanım alanı terminal ve geliştirme araçlarıdır.
Evet. Bilinen yöntem, dağıtımı wsl --export ile bir dosyaya yedekleyip wsl --import ile istediğiniz sürücüdeki bir klasöre geri yüklemektir. Güncel WSL sürümleri bunun için ayrıca wsl --manage <dağıtım> --move <hedef_klasör> komutunu da sunar. Taşıma işleminden önce mutlaka yedek alın.
Evet. Ubuntu, Debian, openSUSE ve diğer dağıtımları aynı anda kurup birbirinden bağımsız kullanabilirsiniz. wsl --list --verbose ile hepsini görebilir, wsl -d <dağıtım> ile istediğinizi başlatabilirsiniz.
Önce wsl --list --verbose ile kurulu dağıtımları görün ve her birini wsl --unregister <dağıtım> ile kaldırın (verilerin silineceğini unutmayın). Ardından Ayarlar → Uygulamalar bölümünden "Windows Subsystem for Linux" uygulamasını kaldırabilirsiniz.
wsl --install yazıp bilgisayarı yeniden başlatmak yeterlidir./mnt/c altında, Linux dosyaları Windows'ta \\wsl.localhost adresinde görünür.~/projeler) tutun..wslconfig dosyasıyla sınırlayabilir, ayarları wsl --shutdown ile uygulayabilirsiniz.wsl --unregister dağıtımı tüm verileriyle siler; öncesinde wsl --export ile yedek alın.WSL kurulu bir Windows, modern yazılım geliştirme için eksiksiz bir ortamdır. Bir sonraki adım olarak Docker Desktop'ı WSL 2 motoruyla kurup Docker Nedir? yazısındaki örnek uygulamayı Ubuntu terminalinden çalıştırabilir, ardından Docker Compose Nedir? yazısıyla çok servisli projelere geçebilirsiniz. Projenizi internete açmaya hazır olduğunuzda ise WSL terminalindeki ssh komutuyla sunucunuza bağlanıp Coolify ile yayına alabilirsiniz.
Kurumsal web siteleri için içerik yönetim sistemi.