Перейти к содержимому

7. WSL: Linux внутри Windows

WSL (Windows Subsystem for Linux) — это слой совместимости, позволяющий запускать Linux прямо внутри Windows без виртуальной машины. Это не эмуляция — WSL 2 использует настоящее ядро Linux.

С WSL ты получаешь все преимущества Linux-разработки (bash, apt, git, docker) не выходя из Windows.

ХарактеристикаWSL 1WSL 2
Совместимость syscallsЧастичнаяПолная
Производительность файловой системыВысокая на Windows FSВысокая на Linux FS
ИзоляцияНет VMЛегковесная VM
DockerПлохоОтлично
РекомендуетсяНетДа

WSL 2 — выбор по умолчанию для разработки.

Окно терминала
# В PowerShell (с правами администратора)
wsl --install # установить WSL + Ubuntu
# Выбрать конкретный дистрибутив
wsl --install -d Ubuntu-22.04
wsl --install -d Debian
wsl --install -d kali-linux
# Посмотреть доступные дистрибутивы
wsl --list --online
# Посмотреть установленные
wsl --list --verbose
wsl -l -v

После установки нужно перезагрузить компьютер и создать пользователя Ubuntu.

Окно терминала
# Запуск WSL
wsl # запустить в текущей директории
wsl -d Ubuntu # конкретный дистрибутив
wsl ~ # запустить в домашней директории Linux
# Управление дистрибутивами
wsl --list --verbose # статус всех дистрибутивов
wsl --set-default Ubuntu # установить по умолчанию
wsl --set-version Ubuntu 2 # обновить до WSL 2
# Остановка
wsl --shutdown # остановить все дистрибутивы
wsl --terminate Ubuntu # остановить конкретный
# Экспорт/импорт
wsl --export Ubuntu backup.tar
wsl --import MyUbuntu C:\WSL\ backup.tar
Окно терминала
# Из WSL: доступ к Windows дискам
ls /mnt/c/ # C:\
ls /mnt/d/ # D:\
cd /mnt/c/Users/username/Desktop
# Открыть Windows Explorer из WSL
explorer.exe . # открыть текущую директорию в Explorer
# Из Windows PowerShell: доступ к файлам WSL
\\wsl$\Ubuntu\home\username\
# или в Explorer: \\wsl$\Ubuntu
Окно терминала
# Запустить Linux команду из PowerShell
wsl ls -la
wsl cat /etc/os-release
wsl python3 --version
# Комбинировать
wsl find /home -name "*.py" | Select-String "import"
# Запустить скрипт
wsl bash ~/myscript.sh
Окно терминала
# Из WSL bash
notepad.exe file.txt # открыть в Notepad
code . # открыть VS Code (если установлен)
explorer.exe . # открыть в Explorer
powershell.exe -c "Get-Date" # запустить PowerShell команду
cmd.exe /c "dir" # запустить CMD команду

VS Code имеет отличную интеграцию с WSL через расширение “Remote - WSL”:

Окно терминала
# Установи расширение Remote - WSL в VS Code
# Затем из WSL:
code . # откроет VS Code подключённый к WSL
# Или из VS Code:
# Ctrl+Shift+P → "Remote-WSL: New Window"

В этом режиме:

  • Файлы хранятся в Linux файловой системе
  • Терминал в VS Code — это bash/zsh
  • Все инструменты запускаются в Linux
  • Полная производительность Linux FS
Окно терминала
# Обновить пакеты
sudo apt update && sudo apt upgrade -y
# Установить основные инструменты
sudo apt install -y \
git curl wget \
build-essential \
python3 python3-pip \
nodejs npm \
htop vim
# Установить Node.js через nvm (лучший вариант)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
# Установить Docker Desktop (с WSL 2 интеграцией)
# Скачать с docker.com → включить WSL 2 интеграцию в настройках

Файл C:\Users\username\.wslconfig (Windows) настраивает глобальные параметры WSL 2:

[wsl2]
memory=4GB # лимит памяти
processors=2 # количество CPU
swap=2GB # размер swap
localhostForwarding=true
Окно терминала
# Из WSL доступ к Windows-сервисам через localhost
curl http://localhost:3000 # если сервер запущен в Windows
# Из Windows доступ к WSL-сервисам
# WSL 2 получает свой IP
hostname -I # IP адрес WSL
Окно терминала
# 1. Установи WSL (если ещё нет)
# wsl --install
# 2. Проверь версию
wsl --list --verbose
# 3. Запусти Linux команды из PowerShell
wsl uname -a
wsl cat /etc/os-release
# 4. Зайди в WSL
wsl
# 5. В bash: создай проект
mkdir -p ~/projects/test
cd ~/projects/test
echo "console.log('Hello from WSL!')" > index.js
node index.js
# 6. Открой папку в VS Code
code .
# 7. Из WSL получи доступ к файлам Windows
ls /mnt/c/Users/

WSL — это не компромисс, это лучшее из двух миров. Используй Windows для игр и GUI, Linux для разработки!