WSL 2: нормальная рабочая среда на Windows без двойной загрузки
Долгое время я избегал работать на Windows, если можно было обойтись. Putty, WinSCP, виртуалки — всё это работало, но каждый раз что-то скрипело. Один раз Vagrant-среда сломалась после обновления VirtualBox, и я потратил полдня, чтобы понять почему. После этого ноут с Linux стал основным.
Но реальность такова, что часть команды работает на Windows. И не у всех есть желание или возможность переходить. Поэтому когда появился WSL 2 с нормальным ядром Linux — я решил разобраться, насколько это жизнеспособно для реальной работы.
Оказалось — вполне.
Что такое WSL 2 и зачем это нужно
WSL (Windows Subsystem for Linux) — это слой совместимости, который позволяет запускать Linux-окружение прямо внутри Windows. Без виртуальной машины с интерфейсом, без двойной загрузки.
Первая версия WSL транслировала системные вызовы Linux в Windows API. Работало, но медленно и не всё. WSL 2 — это уже полноценное ядро Linux внутри лёгкой Hyper-V VM. Файловая система, сетевые утилиты, Docker — всё работает как ожидаешь.
Для кого это важно: если ты администрируешь серверы, пишешь скрипты, работаешь с Ansible, Terraform или просто хочешь нормальный bash под рукой — WSL 2 даёт это без смены ОС.
Включаем WSL 2
Открываешь PowerShell от администратора (Win + X → «Windows PowerShell (Admin)») и запускаешь:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
После этого — перезагрузка.
Затем скачиваешь и устанавливаешь пакет обновления ядра Linux для WSL 2. После установки:
wsl --set-default-version 2
Дистрибутив ставишь из Microsoft Store — Ubuntu подходит большинству. Запускаешь, создаёшь пользователя и пароль. Всё.
Что поставить сразу
Первым делом — обновить пакеты:
sudo apt update && sudo apt upgrade -y
Потом базовый набор для работы:
sudo apt install -y vim htop telnet ansible mc git python3 python3-pip pipx docker.io docker-compose jq unzip
Если работаешь с AWS или используешь Terraform — добавляешь их отдельно.
AWS CLI:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Terraform:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install -y terraform
Windows Terminal из Microsoft Store — это отдельно, но стоит поставить. Он объединяет Ubuntu, PowerShell и CMD в одном окне с нормальными вкладками и настройкой.
Автоматизируем установку на нескольких машинах
Если настраиваешь не одну рабочую станцию, а несколько — делать это руками каждый раз смысла нет. Вот скрипт, который делает всё сам:
# PowerShell Script for Automated WSL 2 and Ubuntu Setup
Write-Output "Enabling WSL and Virtual Machine Platform features..."
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart
if ($LASTEXITCODE -eq 3010) {
Write-Output "Reboot required. Press Enter to restart..."
Read-Host
Restart-Computer
}
$kernelUpdateUrl = "https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi"
$kernelUpdatePath = "$env:USERPROFILE\Downloads\wsl_update_x64.msi"
Write-Output "Downloading Linux kernel update..."
Invoke-WebRequest -Uri $kernelUpdateUrl -OutFile $kernelUpdatePath
Write-Output "Installing Linux kernel update..."
Start-Process msiexec.exe -ArgumentList "/i", $kernelUpdatePath, "/quiet", "/norestart" -Wait
wsl --set-default-version 2
Write-Output "Installing Ubuntu..."
winget install -e --id Canonical.Ubuntu
Write-Output "Done. WSL 2 and Ubuntu are ready."
Сохраняешь как SetupWSL.ps1. Запускаешь от администратора:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
.\SetupWSL.ps1
Скрипт включает нужные компоненты Windows, скачивает и ставит обновление ядра, выставляет WSL 2 по умолчанию и устанавливает Ubuntu через winget. На машинах где это нужно сделать быстро — экономит час-полтора.
Итог
WSL 2 не заменяет полноценный Linux-сервер или хорошо настроенную рабочую станцию на Ubuntu. Но как среда для повседневной работы с серверами, скриптами и DevOps-инструментами на Windows — это работает. Без боли и без компромиссов, которые были раньше.
Если нужно настроить рабочие окружения для команды или автоматизировать конфигурацию рабочих станций — пиши на [email protected] или заходи на 1it.pro.