Подсистема WSL (Windows Subsystem for Linux или Windows для Linux) позволяет запускать среду Linux без графического интерфейса непосредственно в Windows без необходимости использовать традиционную виртуальную машину или устанавливать Linux второй операционной системой. Для удобства в статье я буду называть Linux-ом любую гостевую операционную систему: Ubuntu, Debian и т.д.

Официальная документация Microsoft по WSL
Установка Windows Subsystem for Linux
Установка Linux
Перенос в WSL образа Linux с диска C на другой диск
Частые ошибки и их решения

Официальная документация Microsoft по WSL

Официальная документация на русском по WSL находится по адресу https://docs.microsoft.com/ru-ru/windows/wsl/

В официальной документации вы можете найти команды WSL и многое другое.

Установка Windows Subsystem for Linux

Подробное описание установки WSL можно найти в официальной документации, здесь я приведу краткий алгоритм. Шаги:

  1. Убедиться, что Windows 10 версии не ниже 2004 сборка 19041, если ниже, то обновитесь через центр обновления. Может встанет и на версию ниже, но гарантий не даю и поддержку не осуществляю.
  2. Включить в «Панель управления \ Все элементы панели управления \ Программы и компоненты \ Включение или отключение компонентов Windows» компонент «Подсистема Linux для Windows». Перезагрузиться.
  3. Включить в «Панель управления \ Все элементы панели управления \ Программы и компоненты \ Включение или отключение компонентов Windows» компонент «Платформа виртуальной машины». Перезагрузиться.
  4. По ссылке https://aka.ms/wsl2kernel скачиваем установщик с последней версией пакета обновления ядра Linux в WSL. Устанавливаем.
  5. Установить WSL 2 по умолчанию выполнив в PowerShell с правами администратора следующую команду wsl —set-default-version 2

Теперь можем устанавливать Linux.

Установка Linux

Открываем Microsoft Store (можете найти через поиск Windows) и в поиске Microsoft Store вводим «Linux». После этого увидим список дистрибутивов Linux, которые можно нам установить:

Страница Windows Store

К примеру, установим Ubuntu 20.04 LTS, для этого нажимаем на плитку с данной системой. В форме информации о Ubuntu нажимаем на кнопку Получить. После этого произойдёт загрузка и установка дистрибутива.

После установки у нас в меню Пуск появится иконка запуска Ubuntu.

Выбираем Ubuntu

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

Командная строка (консоль)

Перенос в WSL образа Linux с диска C на другой диск

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

  1. Скачиваем утилиту LxRunOffline https://github.com/DDoSolitary/LxRunOffline
    Утилиту я распаковал и поместил на диск C.
  2. Создаём каталог на другом диске, в который будем перемещать гостевую систему. В моём случае я создал каталог D:\Program\WCL
  3. Задаём требуемые права на каталог D:\Program\WCL, для этого выполним команду в PowerShell:
icacls D:\Program\WCL\ /grant "zaharov:(OI)(CI)(F)"

zaharov — это название вашей учётной записи в системе, в моём случае zaharov у вас другая.

  1. Запускаем PowerShell и выполняем команду wsl —list —all чтобы узнать какие гостевые системы у нас установлены и как они именуются:
Командная строка (консоль)
  1. Переносим Ubuntu-20.04 в D:\Program\WCL, для этого выполняем команду в командной строке или в PowerShell:
C:\LxRunOffline.exe move -n Ubuntu-20.04 -d D:\Program\WCL\Ubuntu-20.04

В строке с командами корректно указываем название переновимой системы.

Частые ошибки и их решения

WslRegisterDistribution failed with error: 0xc03a001a

Данная ошибка появляется, когда мы после установки Linux запускаем его и начинается его «настройка» и далее нет возможности запустить Linux. Решение есть. После первичного запуска «гостевой» операционной системы у нас возникает ошибка:

Командная строка (консоль)

Закрываем данное окно и делаем следующее. Идём по пути:

%LOCALAPPDATA%/packages

В данном каталоге у нас находятся как раз пакеты для установки. Находим необходимый нам пакет. К примеру, если мы устанавливаем Ubuntu, то ищем пакет в названии которого будет присутствовать Ubuntu:

Список каталогов Windows

Нам необходимо отключить сжатие у этого каталога, т.е. отключить настройку «Сжимать содержимое для экономии места на диске» (убедиться, что галочка отжата):

Свойства каталога - Другие
Отключить Сжимать содержимое для экономии места на диске
Применить ко всем папкам

После этого проблема исчезнет.

Пропадает сеть в гостевой операционной системе WSL

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

Решается проблема просто:

  1. Заходим в настройки сетевых адаптеров.
  2. Находим адаптер с пипиской (WSL).
  3. Отключаем его и снова включаем.
Отключаем сеть и снова включаем

Проблема решена. Где-то на уровне Windows есть ошибка приводящая к этому.

Статья-заметка будет периодически дополняться. Может быть 🙂