3 min read

WSL 2: нормальная рабочая среда на Windows без двойной загрузки

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.

Связаться с нами
Telegram
WhatsApp
Email