1. Защо изобщо ми трябва WSL?
Работя с Linux сървъри, Docker, Ansible, bash скриптове и всякакви CLI инструменти. Windows PowerShell е мощен, но не е bash. Git Bash е компромис. Пълна виртуална машина е тежка, бавна при I/O и постоянно ми краде RAM.
WSL решава точно този проблем: отварям терминал, пиша ssh, docker, apt, vim или каквото ми трябва, и всичко се държи почти като на истински Linux. А когато ми трябва Excel или браузър с пълна Windows интеграция — те са на един Alt+Tab разстояние.
- не губя време за dual-boot;
- не държа постоянно включена тежка VM;
- мога да редактирам файлове от Windows и да ги изпълнявам в Linux;
- Docker Desktop работи отлично върху WSL2;
- получавам native Linux tools без да се отказвам от Windows приложения.
2. WSL1 срещу WSL2 — какво реално използвам
Когато Microsoft пусна първата версия, WSL1 превеждаше Linux system calls към Windows kernel. Беше бърз за някои неща, но имаше сериозни ограничения — особено с Docker, мрежи и файлова система.
WSL2 работи с истински Linux kernel, който Microsoft поддържа и обновява. Той се върти в лека виртуална машина, но интеграцията е толкова добра, че почти не усещам границата.
host OS
lightweight VM
Microsoft-managed
От години ползвам само WSL2. WSL1 го оставям само ако имам много специфичен случай с огромно количество малки файлове на Windows файлова система и нужда от максимална скорост на достъп. В 99% от случаите WSL2 е правилният избор.
wsl -l -v.3. Как го инсталирам на практика
В по-новите Windows версии (Windows 10 2004+ и Windows 11) инсталацията е направена изненадващо проста.
wsl --installТази команда включва необходимите компоненти, сваля WSL2 kernel и по подразбиране инсталира Ubuntu. След рестарт отварям Ubuntu, задавам потребителско име и парола — и готово.
Ако искам да контролирам повече нещата:
# Проверявам наличните дистрибуции
wsl --list --online
# Инсталирам конкретна дистрибуция
wsl --install -d Ubuntu-24.04
# Или Debian
wsl --install -d DebianСлед инсталация винаги проверявам версията:
wsl -l -vОчаквам да видя VERSION 2. Ако е 1, конвертирам с:
wsl --set-version Ubuntu-24.04 24. Коя дистрибуция избирам
Ubuntu е безопасният избор — най-много документация, най-много готови пакети, най-лесно за Docker и повечето tutorial-и. Аз лично работя предимно с Ubuntu LTS (22.04 или 24.04).
Debian е по-минималистичен и ми харесва, когато искам по-чист старт. Fedora, openSUSE и другите също работят, но рядко ми трябват.
Мога да имам няколко дистрибуции едновременно. Една за ежедневна работа, една „чиста“ за тестове, една по-стара ако трябва да възпроизведа проблем от клиентски сървър.
wsl --unregister.5. Как работи файловата система — най-важното практическо знание
Това е мястото, където хората най-често се объркват и губят производителност.
От Windows виждам Linux файловете тук:
\\wsl$\Ubuntu-24.04\home\fediaОт Linux виждам Windows дисковете тук:
/mnt/c/Users/Fedia
/mnt/d/...Ключовото правило, което следвам строго:
- Работните проекти, git репозитории, node_modules, build-ове — винаги вътре в Linux файловата система (
~/projects). - Windows файловете ползвам само когато трябва да отворя нещо с Windows приложение или да споделя резултат.
/mnt/c/... и пускам npm install, cargo build или make, производителността пада драстично. Виждал съм build-ове, които отнемат 5–10 пъти повече време само заради това.6. Основни команди, които ползвам всеки ден
# Списък на инсталираните
wsl -l -v
# Стартиране на конкретна дистрибуция
wsl -d Ubuntu-24.04
# Спиране на всички
wsl --shutdown
# Изтриване на дистрибуция (внимание — губи данни)
wsl --unregister Ubuntu-24.04
# Експорт / импорт (за backup или прехвърляне)
wsl --export Ubuntu-24.04 D:\backups\ubuntu.tar
wsl --import Ubuntu-Restored D:\wsl\ubuntu D:\backups\ubuntu.tarwsl --shutdown е моят приятел. Когато Docker Desktop се държи странно, когато мрежата „зацикли“ или когато искам да освободя RAM — спирам всичко и после стартирам наново.
7. Интеграция с Windows Terminal и VS Code
Използвам Windows Terminal. Добавям профил за всяка дистрибуция и работя удобно с tabs и split panes.
VS Code Remote - WSL е другото нещо, без което вече не мога. Отварям папка от WSL директно в VS Code и получавам пълна Linux среда — extensions, terminal, debugger — без да се занимавам с path проблеми.
# Отварям текущата WSL директория в VS Code
code .Това работи, защото VS Code автоматично детектира, че съм във WSL и стартира remote session.
8. Docker и WSL2 — най-честата комбинация
Docker Desktop на Windows вече по подразбиране използва WSL2 backend. Това означава, че контейнерите се въртят вътре в Linux, а не през Hyper-V с превод.
Аз почти винаги инсталирам Docker директно в дистрибуцията (не през Docker Desktop), когато искам максимален контрол. Но за повечето хора Docker Desktop + WSL2 е по-удобният вариант.
Важно: ако Docker Desktop е инсталиран, той създава собствени WSL дистрибуции (docker-desktop и docker-desktop-data). Не ги пипам и не ги изтривам.
9. Ресурси — RAM, CPU и диск
WSL2 по подразбиране може да вземе доста ресурси. На машини с 16 GB RAM понякога виждам, че Linux си взема 8–10 GB без да питам.
Създавам файл .wslconfig в потребителската си Windows директория:
[wsl2]
memory=6GB
processors=4
swap=2GB
localhostForwarding=trueСлед промяна правя wsl --shutdown и после стартирам отново. Това е едно от първите неща, които настройвам на нова машина.
10. Типични проблеми, които срещам и как ги решавам
| Проблем | Какво правя |
|---|---|
| WSL не стартира / „The system cannot find the file specified“ | wsl --update и после wsl --shutdown |
| Много бавни git / npm / build операции | Проверявам дали проектът е на /mnt/c. Местя го в ~/ |
| Няма интернет вътре в WSL | wsl --shutdown, проверка на Windows firewall / VPN, понякога sudo resolvectl flush-caches |
| Docker не вижда volumes | Уверявам се, че работя в WSL2 и че path-овете са Linux-style |
| Дистрибуцията „изчезна“ след update | Рядко, но се случва. Затова правя периодичен wsl --export |
11. Какво не правя с WSL
- Не го ползвам като единствен Linux сървър за production натоварвания.
- Не държа важни данни само вътре в дистрибуцията без backup (export или rsync).
- Не инсталирам GUI приложения, освен ако наистина ми трябват (WSLg е хубав, но не е за всичко).
- Не очаквам 100% идентично поведение с bare-metal Linux — има малки разлики в networking, systemd (в по-новите версии вече има) и hardware достъп.
12. Практически workflow, който следвам
- Инсталирам WSL2 + Ubuntu LTS.
- Настройвам
.wslconfigза разумни лимити на ресурси. - Създавам
~/projectsи работя само там. - Инсталирам необходимите инструменти (
git,curl,build-essential, Docker ако трябва). - Конфигурирам Windows Terminal и VS Code Remote.
- Правя първи
wsl --exportкато „чиста“ точка.
13. Заключение
WSL не е магия и не е перфектен. Има моменти, в които мрежата се държи странно, в които трябва да рестартирам с wsl --shutdown, в които файловата система ме наказва, ако не внимавам къде държа проектите.
Но за ежедневна работа като разработчик, системен администратор или човек, който просто иска Linux tools без dual-boot — е едно от най-добрите решения, които Microsoft са направили през последните години.
В следващата част ще мина към конкретна настройка: как си подготвям Ubuntu дистрибуцията от нулата — packages, ssh ключове, git, zsh/bash, Docker и всичко, което ми трябва, за да мога да започна реална работа в рамките на 15–20 минути.