Технологии

WSL: Linux внутри Windows — зачем нужен и как включить

30 минАктуально на 9 сентября 2026

WSL — Linux внутри Windows

Ты находишь инструкцию к нужному инструменту, копируешь первую же команду — и она не работает. Не потому, что ты ошибся: автор писал под Linux или macOS, а у тебя Windows. Так выглядит почти весь мир разработки: документация, готовые скрипты, ответы на форумах, примеры в репозиториях — всё это по умолчанию рассчитано на систему, которой у тебя нет. WSL закрывает этот разрыв: он приносит настоящий Linux внутрь Windows, не заставляя ничего сносить и переустанавливать.

Содержание
  1. Что такое WSL простыми словами
  2. Чем WSL отличается от виртуальной машины и двойной загрузки
  3. Зачем WSL нужен новичку на вайбкодинге
  4. WSL 1 против WSL 2 — в чём разница и что выбрать
  5. Как включить WSL и поставить Ubuntu
  6. Как устроены файлы: где лежит проект и почему не в /mnt/c
  7. Редактор, Claude Code и Node.js внутри WSL
  8. Сеть и порты: как открыть localhost из Windows
  9. Частые проблемы и как их решать
  10. Частые вопросы
  11. Коротко о главном

Что такое WSL простыми словами

WSL расшифровывается как Windows Subsystem for Linux — «подсистема Windows для Linux». Это официальная возможность самой Windows, которую делает Microsoft: ты включаешь её одной командой и получаешь рабочую систему Linux, живущую рядом с твоими привычными окнами, ярлыками и Проводником.

Со стороны это выглядит буднично. В меню «Пуск» появляется приложение с названием дистрибутива, например Ubuntu. Открываешь — видишь чёрное окно с приглашением командной строки. С этого момента всё, что ты в нём набираешь, выполняет Linux: ls, apt, curl, git, любые скрипты из документации. Windows при этом никуда не делась — браузер, мессенджеры, редактор, игры работают как обычно, а Linux просто дожидается тебя в соседнем окне.

Ключевое отличие от всего, что было раньше, — обе системы работают одновременно и видят файлы друг друга. Не нужно перезагружаться, чтобы «переключиться в Linux». Не нужно копировать файлы через флешку или облако. Проект, который ты собираешь, лежит в одном месте, а открыть его можно и из Linux-терминала, и из Проводника Windows.

Дистрибутив — это конкретная сборка Linux: ядро плюс набор программ и свой менеджер пакетов. Для новичка практический выбор один: Ubuntu. Это самый распространённый дистрибутив, и именно под него написано большинство инструкций в интернете. Когда в статье сказано «выполни sudo apt install ...» — это команда Ubuntu и родственных ей систем. Другие дистрибутивы в WSL тоже доступны, но брать их стоит осознанно, когда понимаешь зачем.

Ещё одна вещь, которая смущает новичков: WSL не даёт «рабочий стол Linux». Ты не увидишь панель задач Ubuntu, окошки в чужом стиле и второй Проводник. Рабочий стол остаётся один — виндовый. Linux живёт в виде терминала и процессов, а графику при необходимости показывает прямо в обычных окнах Windows. Для вайбкодинга это ровно то, что нужно: инструменты разработчика почти все консольные.

💡

Главная мысль: WSL — это не эмулятор и не «программа, притворяющаяся Linux». Это настоящая Linux-среда, встроенная в Windows и запускающаяся за пару секунд.

Чем WSL отличается от виртуальной машины и двойной загрузки

До появления WSL у пользователя Windows было два способа получить Linux, и оба неудобные.

Двойная загрузка — это когда на диске стоят две системы, а при включении компьютера ты выбираешь, в какую загрузиться. Работает быстро, потому что Linux получает всё железо целиком. Но переключение стоит перезагрузки: закрыть все окна, выйти, подождать, войти в другую систему, где нет ни твоих вкладок, ни мессенджеров. Файлы двух систем формально на одном диске, но добраться до них из соседней ОС не всегда просто. Для человека, который двадцать раз в день переключается между кодом, браузером и перепиской, это мучение.

Виртуальная машина — программа, которая создаёт внутри Windows «компьютер в компьютере» и запускает в нём полноценную Linux с рабочим столом. Перезагружаться не надо, обе системы работают разом. Цена — ресурсы: ты заранее отдаёшь виртуальной машине часть памяти и места на диске, и она держит их за собой, даже когда простаивает. Плюс отдельный рабочий стол в окне, отдельная файловая система, возня с общими папками и буфером обмена.

WSL забирает лучшее от обоих подходов. Запускается он мгновенно, память забирает по мере надобности и возвращает, когда она освобождается, отдельного рабочего стола не создаёт, а файлы обеих систем видны с обеих сторон. Технически современная версия WSL действительно использует механизм виртуализации — но настолько облегчённый и глубоко встроенный, что ощущается это не как «вторая машина», а как ещё одно приложение.

Двойная загрузка Виртуальная машина WSL
Переключение Перезагрузка Окно программы Просто открыть терминал
Скорость старта Минуты Десятки секунд Секунды
Расход памяти Вся система одна Выделяется заранее По мере надобности
Общие файлы Сложно Через общие папки Видны с обеих сторон
Рабочий стол Linux Да Да Нет (и не нужен)
Кому подходит Тем, кто живёт в Linux Тестам и экспериментам Разработке на Windows

Есть у WSL и честные ограничения. Он не заменит Linux там, где нужен прямой доступ к железу: сложные драйверы, работа с USB-устройствами без дополнительных настроек, точные замеры производительности «как на сервере». Для вайбкодинга это не мешает: тебе нужны Node.js, git, консольные утилиты и возможность выполнять команды из документации — всё это WSL даёт полностью.

Зачем WSL нужен новичку на вайбкодинге

Вайбкодинг — подход, при котором код пишет ИИ-ассистент, а ты ставишь задачи обычными словами и проверяешь результат. Казалось бы, если код пишет не ты, то и разница между системами не важна. На практике всё наоборот: именно новичку она мешает сильнее всего.

Инструкции в интернете написаны под Linux и macOS. Открой документацию любой библиотеки, любого хостинга, любого инструмента для сборки — примеры там начинаются с curl, sudo apt install, путей вида ~/projects/app и переменных export. Пользователю Windows приходится каждую такую строчку мысленно переводить: где-то заменить слеши, где-то заменить команду, где-то найти аналог, которого нет. Одна опечатка в переводе — и час уходит на ошибку, которой у автора инструкции не было.

ИИ-ассистент тоже думает Linux-командами. Он обучен на миллионах примеров, большинство которых с Linux-серверов и Mac. Попросишь его настроить проект — он предложит chmod +x, tail -f, конвейеры из нескольких команд. В обычной консоли Windows часть из них не сработает, и вместо продвижения к цели ты начинаешь длинную переписку про то, почему команда не найдена. Внутри WSL те же самые команды выполняются сразу, и советы ассистента становятся точными.

Кроссплатформенные инструменты на Windows ведут себя иначе. Пути с обратными слешами, разные символы конца строки в файлах, чувствительность к регистру, права доступа — набор мелочей, которые по отдельности решаемы, а вместе создают фоновый шум из странных ошибок. У новичка нет опыта, чтобы отличить «я сделал не так» от «это особенность системы», и он тратит силы на борьбу с окружением вместо работы над проектом.

Проект уедет на сервер, а сервер — Linux. Практически любой хостинг, куда ты потом выложишь приложение, работает на Linux. Если ты собирал и проверял всё в такой же среде, при выкладке ничего не сломается. Если собирал на Windows, а выкладываешь на Linux — часть ошибок вылезет ровно в момент публикации, самый неподходящий.

Одинаковая среда — общий язык с любым руководством. Когда ты пишешь в поиске «как исправить такую-то ошибку», ты получаешь ответы людей с Linux и Mac. Их команды у тебя работают дословно. Это ускоряет самостоятельное решение проблем в разы, а именно самостоятельность отличает человека, который довёл приложение до публикации, от того, кто застрял на настройке.

Отдельно стоит сказать, чего WSL не делает. Он не учит терминалу вместо тебя — если чёрное окно пока пугает, начни со статьи «Не бойся терминала», там разобраны базовые команды и способ читать вывод. WSL лишь меняет то, какой терминал у тебя под рукой: вместо своеобразного виндового — стандартный линуксовый, к которому написан весь остальной интернет.

WSL 1 против WSL 2 — в чём разница и что выбрать

Подсистема существует в двух поколениях, и в интернете попадаются инструкции к обоим. Понимать разницу полезно, чтобы не запутаться в чужих советах.

WSL 1 работал как переводчик. Настоящего ядра Linux в нём не было: программы Linux запускались, а их обращения к системе на лету переводились в понятные Windows команды. Плюс подхода — очень быстрая работа с файлами на дисках Windows и минимальные накладные расходы. Минус — перевод покрывал не всё. Программы, которым нужны редкие системные возможности, не запускались или вели себя странно. Docker в WSL 1 не работал.

WSL 2 устроен иначе: внутри запускается настоящее ядро Linux в очень лёгкой виртуальной машине. Совместимость стала полной — работает практически всё, что работает на обычной Ubuntu, включая контейнеры. Файловые операции внутри Linux-раздела стали заметно быстрее. Обратная сторона — доступ к файлам на дисках Windows через /mnt/c теперь идёт через сетевой протокол и работает медленно. Это не поломка, а плата за архитектуру, и именно из-за неё существует правило хранить проекты внутри Linux (о нём ниже).

WSL 1 WSL 2
Ядро Linux Нет, перевод команд Настоящее, в лёгкой ВМ
Совместимость с программами Частичная Практически полная
Docker Не работает Работает
Файлы внутри Linux Медленнее Быстро
Файлы в /mnt/c Быстро Медленно
Расход памяти Минимальный Динамический, с потолком

Выбор для вайбкодера однозначный: WSL 2. Он ставится по умолчанию, поддерживает всё, что тебе понадобится, и в нём работают инструменты, которыми ты будешь пользоваться дальше — от Node.js до контейнеров Docker. Единственная причина вспомнить про первую версию — очень слабая машина без поддержки виртуализации либо задача, где критична скорость работы с файлами именно на диске C. Обе ситуации редкие.

Версию можно посмотреть и переключить. В PowerShell:

wsl --status
wsl --list --verbose

Вторая команда покажет список установленных дистрибутивов и цифру версии рядом с каждым. Если по какой-то причине там стоит единица, перевести конкретный дистрибутив на вторую версию можно так:

wsl --set-version Ubuntu 2

А чтобы все будущие установки сразу были на второй версии:

wsl --set-default-version 2

Конвертация занимает время и требует свободного места — она физически переупаковывает файловую систему дистрибутива. Прерывать её не надо.

Как включить WSL и поставить Ubuntu

Установка сведена к одной команде, но у неё есть предусловия и порядок. Общая последовательность выглядит так.

flowchart TB
    check["Проверить Windows и виртуализацию"] --> install["Выполнить wsl --install"]
    install --> reboot["Перезагрузить компьютер"]
    reboot --> ubuntu["Запустить Ubuntu, создать пользователя"]
    ubuntu --> update["Обновить пакеты apt"]
    update --> tools["Поставить Node.js, git и редактор"]
    tools --> project["Создать проект в домашней папке"]

Шаг 1. Проверь систему

WSL поддерживается в актуальных версиях Windows 10 и Windows 11 в 64-разрядном варианте. Проверить свою версию можно, набрав в поиске Windows слово «сведения» и открыв сведения о системе, либо командой:

winver

Второе условие — включённая аппаратная виртуализация. Открой «Диспетчер задач», вкладку «Производительность», раздел «ЦП»: там есть строка про виртуализацию со значением «Включено» или «Отключено». Если отключено, включать нужно в настройках BIOS/UEFI при загрузке компьютера — пункт называется по-разному у разных производителей, но в названии почти всегда есть слова Virtualization, VT-x, SVM или AMD-V. Точное расположение пункта зависит от материнской платы, поэтому лучше искать по модели своего компьютера.

Шаг 2. Открой PowerShell от имени администратора

Нажми правой кнопкой по кнопке «Пуск» и выбери запуск терминала или PowerShell с правами администратора. Без прав администратора установка компонентов не пройдёт.

Шаг 3. Выполни установку

Одна команда включает нужные компоненты Windows, скачивает ядро и ставит дистрибутив по умолчанию:

wsl --install

Это и есть та самая wsl install, о которой пишут в англоязычных руководствах. По умолчанию ставится Ubuntu. Если хочешь выбрать другой дистрибутив, посмотри список доступных и укажи имя явно:

wsl --list --online
wsl --install -d Ubuntu

Команда работает несколько минут: скачивает компоненты, распаковывает образ. Дождись завершения и перезагрузи компьютер, даже если система об этом не попросила напрямую.

Шаг 4. Создай пользователя Linux

После перезагрузки Ubuntu запустится сама либо её нужно открыть из меню «Пуск». При первом запуске система попросит придумать имя пользователя и пароль. Несколько важных мелочей:

  • имя пользователя пиши маленькими латинскими буквами, без пробелов — это будет имя твоей домашней папки, и кириллица здесь создаст проблемы;
  • пароль при вводе не отображается вообще, даже звёздочками. Это нормально, просто набирай вслепую и нажимай Enter;
  • пароль от Linux никак не связан с паролем Windows. Запиши его: он понадобится при каждой команде с sudo.

Шаг 5. Обнови пакеты

Образ дистрибутива собран какое-то время назад, поэтому первым делом обнови списки пакетов и сами пакеты. Внутри Ubuntu:

sudo apt update && sudo apt upgrade -y

Первая часть скачивает свежий каталог доступных программ, вторая обновляет установленное. Флаг -y отвечает «да» на вопросы подтверждения. Первый запуск может занять несколько минут.

Шаг 6. Проверь, что всё живо

uname -a
lsb_release -a

Первая команда покажет версию ядра Linux, вторая — название и версию дистрибутива. Если обе отвечают осмысленным текстом, среда готова.

Полезные команды управления подсистемой, которые пригодятся позже (выполняются в PowerShell, не внутри Ubuntu):

wsl --list --verbose
wsl --shutdown
wsl --update
wsl --set-default Ubuntu

wsl --shutdown полностью останавливает подсистему — это первое, что стоит попробовать, когда что-то зависло или ведёт себя странно. wsl --update обновляет само ядро подсистемы, отдельно от пакетов внутри дистрибутива.

Как устроены файлы: где лежит проект и почему не в /mnt/c

Здесь новички теряют больше всего времени, поэтому разберём подробно.

Внутри WSL у тебя две файловые системы сразу. Первая — родная Linux: домашняя папка /home/имя, привычные /etc, /usr, /tmp. Вторая — диски Windows, подключённые в папку /mnt: диск C доступен как /mnt/c, диск D как /mnt/d. То есть из Linux ты можешь зайти на рабочий стол Windows:

cd /mnt/c/Users/имя/Desktop
ls

Возможность удобная, но именно она порождает главную ошибку: положить проект в привычное место на диске C и работать с ним оттуда.

Почему так делать не надо. В WSL 2 диски Windows подключены через сетевой протокол, а не напрямую. Каждое обращение к файлу проходит через прослойку между двумя системами. Для одного файла разница незаметна. Но проект на Node.js — это тысячи мелких файлов в папке зависимостей, и любая операция, которая их перебирает, замедляется в разы. Установка пакетов, сборка, автоматический пересбор при сохранении, запуск тестов — всё начинает тормозить, а слежение за изменениями файлов иногда просто не срабатывает, и правки «не подхватываются» без перезапуска.

Правильное место для проекта — домашняя папка Linux. Там файловая система родная, и скорость нормальная:

cd ~
mkdir -p projects/snake
cd projects/snake

Символ ~ — сокращение домашней папки, то есть /home/имя. Договорись с собой раз и навсегда: код живёт в ~/projects, а /mnt/c используется только чтобы перекинуть файл туда-обратно.

Как открыть эту папку из Проводника Windows. Файлы Linux не спрятаны — Windows видит их как сетевое расположение. Самый удобный способ: находясь в нужной папке внутри Ubuntu, выполнить

explorer.exe .

Точка означает «текущая папка». Откроется обычное окно Проводника с содержимым твоего Linux-каталога, где можно копировать, перетаскивать и открывать файлы привычным двойным щелчком. Адрес в строке будет начинаться с \\wsl.localhost\Ubuntu\ — его можно сохранить в «Быстрый доступ» и заходить в проект одним кликом.

Обратное направление. Скопировать файл с рабочего стола в проект:

cp /mnt/c/Users/имя/Desktop/картинка.png ~/projects/snake/

Это нормальное использование /mnt/c: разовое копирование, а не постоянная работа.

Пара правил, которые экономят нервы:

  • Не редактируй файлы Linux виндовыми программами, которые не понимают путей WSL, — при сохранении можно испортить права доступа. Редактор с поддержкой WSL (о нём в следующем разделе) делает это корректно.
  • Не создавай папки проекта с русскими названиями. Кириллица в путях сама по себе допустима, но часть инструментов разработчика на неё спотыкается, и разбираться в причине ошибки будешь долго.
  • Регистр в Linux имеет значение: Game.js и game.js — разные файлы. В Windows это одно и то же, и на переносе проекта такая мелочь ломает сборку.

Редактор, Claude Code и Node.js внутри WSL

Среда сама по себе бесполезна — в ней нужно поставить инструменты. Порядок такой: сначала базовые утилиты, потом Node.js, потом ассистент, и только затем связка с редактором.

Базовые утилиты

Часть программ уже есть в образе, часть ставится одной строкой:

sudo apt install -y git curl build-essential

git — система контроля версий, без неё не выложить проект. curl качает файлы и обращается к сайтам из командной строки. build-essential — набор компиляторов, который требуется некоторым пакетам Node.js при установке.

Сразу представься git, иначе он будет ругаться при первом сохранении изменений:

git config --global user.name "Имя Фамилия"
git config --global user.email "почта@example.com"

Отдельная тонкость: git внутри WSL и git в Windows — две независимые программы со своими настройками. Работая в WSL, пользуйся линуксовым; ставить второй в Windows необязательно.

Node.js

Node.js — среда, которая позволяет запускать JavaScript вне браузера; на ней держится почти вся современная веб-разработка. Что это такое и зачем нужно, подробно разобрано в статье «Что такое Node.js».

Версия из стандартного каталога Ubuntu часто сильно отстаёт, а многим инструментам нужна свежая. Поэтому Node ставят через менеджер версий — программу, которая умеет держать несколько версий сразу и переключаться между ними. Самый распространённый называется nvm. Актуальную команду установки бери с официальной страницы проекта: она содержит номер версии и меняется со временем, выдумывать её по памяти нельзя.

После установки менеджера версий закрой и открой терминал заново, затем поставь и выбери актуальную стабильную версию Node, после чего проверь:

node -v
npm -v

Обе команды должны вывести номера версий. Если вместо этого видишь «команда не найдена», значит терминал не перезапущен либо установка не завершилась.

Node, установленный в Windows, из Linux не виден и наоборот — это разные системы. Не удивляйся, что в PowerShell node -v отвечает, а в Ubuntu нет: нужно ставить отдельно.

Claude Code

Ассистент, который пишет код по твоим задачам, живёт в терминале и внутри WSL чувствует себя как дома: он получает нормальный Linux, стандартные команды и корректные пути. Пошаговая установка с разбором типичных ошибок — в статье «Как установить Claude Code». Общий смысл: ассистент ставится через npm, поэтому Node.js должен быть готов заранее, а запускать его нужно из папки проекта, чтобы он видел файлы, с которыми работает.

cd ~/projects/snake

Дальше ты формулируешь задачу словами — «сделай поле десять на десять клеток, змейка двигается стрелками» — а ассистент создаёт файлы, запускает проверки и объясняет, что сделал. Команды, которые он предлагает выполнить, будут линуксовыми, и в WSL они сработают дословно.

Редактор

Современные редакторы кода умеют подключаться к WSL напрямую: интерфейс остаётся в Windows, а файлы, терминал и все расширения работают уже внутри Linux. Для VS Code это отдельное расширение с поддержкой WSL; после его установки достаточно выполнить в папке проекта:

code .

Редактор откроется на Windows, но будет работать с линуксовой файловой системой напрямую — без сетевой прослойки и без путаницы с путями. Встроенный терминал в нём тоже окажется линуксовым, так что переключаться между окнами не придётся.

Проверить, что всё сошлось, можно маленьким сценарием. Создай файл и запусти его:

echo 'console.log("Работает")' > proverka.js
node proverka.js

Если в ответ пришло слово «Работает» — Node, файловая система и терминал связаны правильно.

Сеть и порты: как открыть localhost из Windows

Учебный проект курса — браузерная игра, а браузер у тебя виндовый. Значит, страницу, которую отдаёт сервер внутри Linux, нужно как-то открыть снаружи. Это делается само, но с оговорками.

Локальный сервер разработки — программа, которая раздаёт твои файлы по адресу вида http://localhost:3000. Слово localhost означает «этот же компьютер», а число после двоеточия — порт, условный номер двери, за которой слушает конкретная программа.

Запусти сервер внутри Ubuntu, и в большинстве случаев тот же адрес откроется в браузере Windows без всяких настроек: WSL 2 пробрасывает порты автоматически. Достаточно скопировать адрес из вывода команды и вставить в адресную строку.

Если страница не открывается, причина почти всегда одна из трёх.

Сервер слушает только сам себя. Многие инструменты по умолчанию привязываются к адресу 127.0.0.1, доступному лишь изнутри Linux. Нужно, чтобы сервер слушал все интерфейсы — 0.0.0.0. У разных инструментов за это отвечает свой флаг или параметр в конфигурации, чаще всего с названием host. Проверить, что и где слушает, можно так:

ss -tulpn

В колонке с адресами 0.0.0.0:3000 означает «доступен снаружи», 127.0.0.1:3000 — «только внутри».

Порт занят. Если предыдущий запуск не завершился, новый сервер не сможет занять тот же номер и либо упадёт с ошибкой, либо тихо возьмёт соседний. Найти и остановить занявший процесс:

ss -tulpn | grep 3000
kill <номер процесса>

Крайняя мера — wsl --shutdown в PowerShell: она гасит подсистему целиком вместе со всеми зависшими процессами.

Проброс сломался после сна или смены сети. Ноутбук уснул, переключился с Wi-Fi на кабель, поднялся VPN — и связь между системами может перестать работать. Лечится перезапуском подсистемы:

wsl --shutdown

Затем снова открой Ubuntu и запусти сервер. Это же действие помогает, когда внутри Linux вдруг пропал интернет.

Отдельная задача — открыть страницу с телефона, чтобы посмотреть, как игра выглядит на маленьком экране. Здесь автоматического проброса мало: нужно узнать адрес компьютера в домашней сети, убедиться, что сервер слушает 0.0.0.0, и разрешить входящее соединение в брандмауэре Windows. Адрес самого Linux-окружения покажет команда:

hostname -I

Учти, что этот адрес внутренний и меняется при перезапуске подсистемы; телефону нужен адрес компьютера в Wi-Fi-сети, который виден в параметрах сети Windows.

Частые проблемы и как их решать

Набор ситуаций, на которых спотыкаются чаще всего. Почти все решаются в одно-два действия, если знать причину.

Установка обрывается или подсистема не запускается

Самая частая причина — выключенная аппаратная виртуализация. Проверь строку «Виртуализация» в диспетчере задач на вкладке «Производительность». Если там «Отключено», включи соответствующий пункт в BIOS/UEFI. На ноутбуках с процессорами Intel он обычно называется Intel Virtualization Technology, на AMD — SVM Mode.

Вторая причина — не установлены нужные компоненты Windows. Команда wsl --install включает их сама, но если система обновлялась со старых версий или компоненты кто-то отключал, помогает повторный запуск установки от администратора и обязательная перезагрузка.

Третья — устаревшее ядро подсистемы. Оно обновляется отдельно от Windows:

wsl --update
wsl --shutdown

Кончается место на диске

Дистрибутив хранится в одном большом файле виртуального диска на диске C. Он растёт по мере того, как ты ставишь пакеты и качаешь зависимости, но обратно не сжимается автоматически: удалил внутри Linux десять гигабайт — файл на Windows остался прежнего размера.

Первым делом почисти изнутри:

sudo apt clean
sudo apt autoremove -y
npm cache clean --force

Отдельно проверь папки зависимостей заброшенных проектов — они занимают больше всего. Найти крупные каталоги в домашней папке:

du -h --max-depth=1 ~ | sort -h

После чистки место внутри Linux освободится, а вот вернуть его Windows можно только сжатием файла виртуального диска — операция отдельная, требует остановленной подсистемы и свободного места, и делать её стоит осознанно, когда действительно припёрло.

Кириллица в путях и именах файлов

Сам Linux с русскими буквами работает нормально, проблемы создают инструменты разработки. Путь вида /mnt/c/Users/Пользователь/Рабочий стол/Проект содержит и кириллицу, и пробел — на такой комбинации спотыкаются сборщики, скрипты и часть npm-пакетов, причём ошибка бывает совершенно невнятной.

Простое правило: все папки, имена файлов и имя пользователя Linux — латиницей, без пробелов. Русский текст внутри файлов — сколько угодно, это никого не смущает. Если проект уже лежит в папке с русским названием, перенеси его в ~/projects/имя-латиницей и работай оттуда.

Иногда встречается и обратная проблема: в терминале вместо русского текста показываются вопросительные знаки или кракозябры. Проверь кодировку окружения:

locale

В значениях должно фигурировать UTF-8. Если нет, локаль настраивается пакетом locales.

Всё работает медленно

В девяти случаях из десяти причина — проект лежит в /mnt/c. Перенеси его в домашнюю папку Linux, и скорость вырастет заметно, особенно на установке пакетов и пересборке.

Если проект уже в правильном месте, а тормоза остались, посмотри на потребление памяти: подсистема забирает ресурсы динамически, но при нехватке оперативной памяти начинает использовать диск, и всё замедляется. Помогает закрыть лишние приложения Windows, а при регулярной нехватке — задать подсистеме ограничение памяти в файле настроек .wslconfig в домашней папке Windows. Ещё одна частая причина — антивирус, проверяющий каждый файл проекта; в таком случае папку с проектами добавляют в исключения.

Пропал интернет внутри Linux

Симптом узнаваемый: apt update не отвечает или ругается на невозможность разрешить имя. Чаще всего виноват VPN или смена сети — подсистема получает свои настройки при старте и не всегда переживает перестройку сетевого стека Windows.

Первое действие — перезапуск:

wsl --shutdown

Если не помогло, проверь, что VPN-клиент не перехватывает трафик виртуальных адаптеров, и попробуй подключиться заново уже после старта подсистемы. В упорных случаях настраивают DNS вручную через файл /etc/resolv.conf и параметры в .wslconfig, но начинать стоит с простого перезапуска — он решает большинство случаев.

Забыл пароль пользователя Linux

Пароль от Linux хранится внутри дистрибутива и восстановлению по почте, конечно, не подлежит. Но у тебя есть административный доступ снаружи: подсистему можно запустить от имени root и сменить пароль обычной командой смены пароля. Из PowerShell:

wsl -u root

Дальше внутри уже без пароля меняешь его для своего пользователя. Полностью переустанавливать дистрибутив из-за забытого пароля не нужно.

Хочется начать с чистого листа

Если экспериментов накопилось слишком много и состояние системы стало непонятным, дистрибутив можно снести и поставить заново. Только помни: вместе с ним удалится всё, что лежит в домашней папке Linux. Сначала скопируй проекты наружу или сохрани их в удалённый репозиторий, и только потом удаляй. Такая операция необратима, а восстанавливать будет нечего.

Частые вопросы

Windows останется на месте или её надо переустанавливать?

Останется полностью. WSL — встроенная возможность самой Windows, а не отдельная система. Ничего не размечается, не форматируется и не заменяется; при желании подсистему можно так же удалить, и компьютер вернётся в исходное состояние.

Обязательно ли ставить WSL, если я только начинаю?

Не обязательно — первые шаги можно сделать и в обычной консоли Windows. Но чем дальше в проект, тем чаще инструкции, ответы на форумах и советы ИИ-ассистента будут написаны под Linux. Поставить подсистему один раз в начале дешевле, чем потом переносить наполовину собранный проект.

Сколько места занимает WSL с Ubuntu?

Свежий дистрибутив компактный, но реальный размер быстро растёт: ядро подсистемы, сам образ, установленные пакеты, папки зависимостей проектов. Разумно рассчитывать на несколько десятков гигабайт свободного места на системном диске и следить за ним, потому что виртуальный диск сам по себе не уменьшается.

Можно ли пользоваться и Windows, и Linux одновременно?

В этом и суть. Обе системы работают параллельно: в Windows у тебя браузер, переписка и редактор, в WSL — терминал, сервер разработки и ИИ-ассистент. Файлы видны с обеих сторон, буфер обмена общий, переключение — обычным Alt+Tab.

Чем WSL 2 лучше WSL 1 для моей задачи?

Полной совместимостью. Внутри второй версии работает настоящее ядро Linux, поэтому запускается практически всё, включая контейнеры и инструменты, которые в первой версии не заводились. Единственная плата — медленный доступ к файлам на дисках Windows, и она перестаёт быть проблемой, как только проект переезжает в домашнюю папку Linux.

Ошибка при команде появляется только у меня — это WSL виноват?

Скорее наоборот. После перехода в WSL ошибки становятся такими же, как у авторов инструкций, и потому легко ищутся: вставляешь текст ошибки в поиск или показываешь ассистенту, получаешь ответ, который дословно подходит. Ошибки, специфичные именно для Windows, как раз исчезают.

Нужен ли VPN для работы с WSL?

Самой подсистеме он не нужен: пакеты Ubuntu скачиваются напрямую. VPN может понадобиться для доступа к отдельным зарубежным сервисам, и тогда стоит проверить, что после его включения интернет внутри Linux остался рабочим — иногда требуется перезапуск подсистемы.

Коротко о главном

WSL убирает главное неудобство разработки на Windows: несовпадение твоей системы с той, под которую написан весь остальной мир. Установка сводится к одной команде и перезагрузке, а дальше ты получаешь среду, где инструкции из интернета работают дословно, а советы ИИ-ассистента не приходится переводить.

Три вещи, которые стоит запомнить с первого дня: ставь вторую версию подсистемы, держи проекты в домашней папке Linux, а не на диске C, и называй папки латиницей. Этих трёх привычек хватает, чтобы обойти большую часть проблем, на которых новички теряют вечера.

Настроенная среда — фундамент. Дальше идут терминал без страха, установка Claude Code и первый проект, который ты соберёшь вместе с ассистентом — уже без борьбы с окружением.

Читай дальше

Все статьи

Не просто статьи — тебя доведут до результата

В практикуме за 2499 ₽ рядом живая команда практикующих разработчиков и маркетологов: ведём по шагам до твоего работающего приложения. Не «ролики и сам разбирайся» — помогаем на каждом затыке.

Перейти к практикуму
Все статьи Ещё: технологии и архитектура