The actual answer to the question query is: The user exists with Ubuntu already installed. But WSL command does not find anything in CMD.exe «Command Line» «System does not find distribution.»
You need to start the below WSL command from Windows Start Menu. And then the old Linux System will show up on WSL in the command line as found.
If this doesn’t work for you? Just start up PowerShell with Administrator and:
WSL --help
WSL "only this command, will start the Linux default distro selected"
You can then start up using this command with CMD.exe Administrator in Windows:
lxrunoffline l "This will now list all your distros"
With an option to remove old distros copied to Windows folders are with perhaps Ubuntu18.04 such way that you will have to use Linux to remove older folders, do not try to copy or edit files in a distro with Windows Apps. You risk integrity problems as well as many errors followed by huge processing time. Use folder /mnt to find your drive with Linux and use commands there to further finish your work as perhaps copying the home directory into a new distro.
My solution to move «not copy» my distro then was: «to give space for C:»
lxrunoffline m -n Ubuntu-18.04 -d d:wslinstalledUbuntu-18.04 "remember folder names"
«Remember folder name such as Ubuntu-18.04 for a specific movement. Unless you will overwrite everything on that folder name with also the lxrunoffline files and you risk losing older copies if you use one folder name. You might end up with a strange name to your project if you just use one directory.»
Lxrunoffline has several other commands if you need help just run:
lxrunoffline
The actual answer to the question query is: The user exists with Ubuntu already installed. But WSL command does not find anything in CMD.exe «Command Line» «System does not find distribution.»
You need to start the below WSL command from Windows Start Menu. And then the old Linux System will show up on WSL in the command line as found.
If this doesn’t work for you? Just start up PowerShell with Administrator and:
WSL --help
WSL "only this command, will start the Linux default distro selected"
You can then start up using this command with CMD.exe Administrator in Windows:
lxrunoffline l "This will now list all your distros"
With an option to remove old distros copied to Windows folders are with perhaps Ubuntu18.04 such way that you will have to use Linux to remove older folders, do not try to copy or edit files in a distro with Windows Apps. You risk integrity problems as well as many errors followed by huge processing time. Use folder /mnt to find your drive with Linux and use commands there to further finish your work as perhaps copying the home directory into a new distro.
My solution to move «not copy» my distro then was: «to give space for C:»
lxrunoffline m -n Ubuntu-18.04 -d d:wslinstalledUbuntu-18.04 "remember folder names"
«Remember folder name such as Ubuntu-18.04 for a specific movement. Unless you will overwrite everything on that folder name with also the lxrunoffline files and you risk losing older copies if you use one folder name. You might end up with a strange name to your project if you just use one directory.»
Lxrunoffline has several other commands if you need help just run:
lxrunoffline
В прошлой статье мы рассмотрели установку WSL2 под Windows 10, подробности читайте здесь.
На одном из ПК, после установки WSL2, отказался запускаться linux.
Даже если установка прошла успешно, при запуске консоли linux вы можете получить ошибку:
Windows не удается получить доступ к указанному устройству, пути или файлу. Возможно, у вас нет нужных разрешений для доступа к этому объекту.
В этой статье мы рассмотрим способ её исправления.
Даже если вы уже установили дистрибутив linux, при запуске из консоли, вы обнаружите, что wsl не находит установленные дистрибутивы:
C:>wsl
Нет установленных дистрибутивов подсистемы Windows для Linux.
Дистрибутивы можно установить из Microsoft Store:
https://aka.ms/wslstore
Решение довольно простое – установить linux из приложения Microsoft Strore!
Для начала удалим старый пакет, получим список всех установленных Appx
Get-AppxPackage
В самом конце вы найдете блок с вашим дистрибутивом
Name : TheDebianProject.DebianGNULinux
Publisher : CN=51C4C664-ED6E-40E8-A008-10EFD2F72288
Architecture : X64
ResourceId :
Version : 1.1.3.0
PackageFullName : TheDebianProject.DebianGNULinux_1.1.3.0_x64__76v4gfsz19hv4
InstallLocation : C:Program FilesWindowsAppsTheDebianProject.DebianGNULinux_1.1.3.0_x64__76v4gfsz19hv4
IsFramework : False
PackageFamilyName : TheDebianProject.DebianGNULinux_76v4gfsz19hv4
PublisherId : 76v4gfsz19hv4
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
NonRemovable : False
IsPartiallyStaged : False
SignatureKind : Store
Status : Ok
Нам потребуется PackageFullName, запускаем
Remover-AppxPackage TheDebianProject.DebianGNULinux_1.1.3.0_x64__76v4gfsz19hv4
Теперь запускаем Miscrosoft Store и? в поиск вводим, например, Ubuntu, так как Debian у меня уже установлен
Выбираем нужный нам образ
Нажимаем Получить
И ждем окончания установки
Если установка не началась, просто нажмите на указанную кнопку, возможно сейчас скачивается другое обновление
После установки программа появится в меню пуск
Теперь вы сможете запустить консоль linux
Заключение
Мы рассмотрели решение проблемы с запуском, после установки WSL2 под Windows 10. В
Скорее всего у вас не возникнет проблем, но если ошибка появится, вы знаете как её исправить.
Недавно мы говорили о том, как выполнять различные Linux утилиты в Windows. Но для Windows 10 это, похоже, уже неактуально. Уже давно в Windows 10 появилась нативная поддержка оболочки Bash, в окружении дистрибутива Ubuntu благодаря подсистеме Linux для Windows 10.
Вы можете запускать различные дистрибутивы Linux в Windows без виртуализации, а с недавних пор, можно даже полноценно заставить работать графический интерфейс, правда для этого уже нужна вторая версия WSL. В этой статье мы рассмотрим как установить Linux в Windows 10.
Что такое WSL?
В начале цикла разработки Windows 10, Microsoft открыла страницу обсуждения и голосования за новые функции. Там зашел разговор о командной строке Windows. Разработчики спросили сообщество, что им не нравится в командной строке Windows и какие функции они хотели бы увидеть в новой версии.
Многие пользователи заявили что им нужны небольшие улучшения командной строки, другие же сказали что неплохо было бы иметь возможность использовать инструменты Linux / Unix и Bash в Windows 10. Много пользователей согласились с тем, что нужно сделать проще использование этих инструментов в Windows.
Прислушиваясь к голосу сообщества, в Microsoft первым делом улучшили CMD, PowerShell и другие инструменты командной строки. А во-вторых, они сделали, то что казалось невероятным несколько лет назад, они добавили реальный, нативный Bash вместе с поддержкой всех необходимых инструментов командной строки, работающих непосредственно на Windows, в среде, которая ведет себя как Linux. Это не какая-нибудь виртуальная машина, это реальный Linux в Windows.
Для реализации этого Microsoft построили новую инфраструктуру в Windows, это Windows Subsystem for Linux или WSL, на основе которой работает образ окружения Ubuntu, поставляемый партнером Canonical. Эта функция позволит разработчикам более эффективно использовать инструменты Linux. Инфраструктура основана на уже заброшенном проекте, Project Astoria, который должен был использоваться для запуска Android-приложений в Windows. Ее можно расценивать как противоположность Wine, только Wine запускает приложения Windows в Linux, подсистема Linux позволяет выполнять приложения Linux в Windows, точнее, только консольные приложения Bash в Windows 10.
С технической точки зрения, это вообще не Линукс. Каждая система GNU Linux должна быть основана на ядре Linux, здесь же просто есть возможность выполнять двоичные файлы, которые работают в Ubuntu.
С каждой новой версией в WSL всё меньше ограничений, вы уже можете использовать сервисы, а также с WSL 2 стали доступны графические приложения. Решение предназначено для разработчиков, которые хотят запускать linux-утилиты из командной строки Windows. Да, эти команды имеют доступ к файловой системе Windows, но вы не можете использовать их для автоматизации своих задач или в стандартной командной строке Windows. Теперь давайте разберемся как установить WSL в Windows 10.
1. Проверка версии системы
Вы можете установить WSL в Windows 10 начиная с версии Windows 10 Insider Preview 14316, а для WSL версии 2, которая принесла много улучшений нужно обновление Windows 10 19041 или новее. Сначала убедитесь, что у вас правильная версия Windows. Для этого октройте PowerShell кликнув правой кнопкой по иконке пуск:
Затем выполните команду:
[environment]::osversion
Если отображается версия как на снимке экрана или выше, значит всё хорошо. Иначе идите обновлять систему.
2. Активация WSL и виртуализации
Чтобы активировать компонент Windows Subsystem for Linux можно использовать уже открытую командную строку PowerShell. Для этого выполните:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Затем выполните ещё одну команду чтобы включить компонент виртуализации Hyper-V:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Когда эта работа будет выполнена перезапустите компьютер, чтобы все компоненты установились.
3. Активация WSL 2
Чтобы установить WSL 2 необходимо скачать пакет с новым ядром с официального сайта Microsoft. Кликните по ссылке download the latest WSL2 Linux kernel:
Затем установите загруженный файл:
Чтобы всегда по умолчанию использовалась версия WSL 2 необходимо выполнить такую команду:
wsl --set-default-version 2
Если вы всё же получаете ошибку, с сообщением о том, что такой опции у этой команды нет, значит у вас старая версия Windows, обновляйте. Если команда не выдала ошибки — значит настройка WSL завершена успешно.
4. Установка Linux
Далее вам надо установить какой-либо дистрибутив Linux из магазина Microsoft. Достаточно просто открыть магазин и набарть в поиске имя дистрибутива, например Ubuntu, затем нажмите кнопку Get:
Дождитесь завершения установки и запустите загруженный дистрибутив из главного меню:
5. Настройка дистрибутива
При первом запуске будет выполняться настройка окружения. Вам необходимо указать имя пользователя:
Затем два раза пароль:
После этого вы сможете пользоваться оболочкой Bash в Windows 10:
6. Установка X сервера
Если вы хотите запускать графические приложения из WSL Windows, то вам понадобится установить в систему X сервер. Скачать его можно здесь.
Затем просто установите.
7. Запуск X сервера
После завершения установки на рабочем столе появится ярлык. В первом окне выберите Multipe windows чтобы окна программ, выполняемых на X сервере интегрировались в систему:
Затем выберите, что клиентов запускать не надо — Start no client:
Поставьте все галочки, затем нажмите кнопку Next, а потом Finish для завершения установки.
Брандмауэр Windows тоже попросит разрешить доступ этому приложению в сеть. Надо разрешить.
8. Настройка подключения
Чтобы настроить подключение к X серверу из WSL нужно узнать какой адрес система Windows присвоила WSL окружению, для этого вернитесь к PowerShell и выполните:
ipconfig
В данном случае это 172.25.224.1. Выполните в окружении дистрибутива такую команду:
export DISPLAY=172.25.224.1:0
Шаг 9. Установка и запуск приложений
Для установки приложений в дистрибутив необходимо сначала обновить списки репозиториев:
sudo apt update
Затем установите графическое приложение, например, Firefox:
sudo apt install firefox
После этого его можно запустить:
firefox
На снимке вы видите графический интерфейс WSL для браузера Firefox, запущенного в Linux:
Использование WSL
Установка WSL Windows 10 завершена. Теперь у вас есть полноценная командная строка Ubuntu в Windows с оболочкой Bash. Поскольку используются одни и те же двоичные файлы, вы можете устанавливать программное обеспечение с помощью apt из репозиториев Ubuntu. Можно установить любое приложение, но не все будут работать.
Если вы раньше уже пользовались Bash в Linux или MacOS, то будете чувствовать себя здесь как дома. Здесь не нужно использовать команду sudo, поскольку у оболочки уже есть права администратора. Ваша файловая система Windows доступна в /mnt/c.
Для управления и перемещения по каталогам используйте те же команды что и в Linux. Если вы привыкли к стандартной оболочке Windows, то вот основные команды, которые вам могут понадобится:
- cd — изменить текущий каталог;
- ls — посмотреть содержимое каталога;
- mv — переместить или переименовать файл;
- cp — скопировать файл;
- rm — удалить файл;
- mkdir — создать папку;
- vi или nano — открыть файл для редактирования.
Важно также понимать, что в отличии от WIndows, оболочка Bash и ее окружение чувствительны к регистру. Другими словами, file.txt и File.txt, это совсем разные файлы.
Для установки и обновления программ необходимо использовать команду apt-get. Вот небольшой список ее параметров:
- apt update — скачать списки программного обеспечения из репозиториев;
- apt install пакет — установить пакет;
- apt search слово — поиск пакета по слову;
- apt upgrade — загрузка и установка последних обновлений дистрибутива.
Не забудьте, что устанавливаемые в этой оболочке программы, ограничиваются по области действия оболочкой. Вы не можете получить доступ к ним из обычной командной строки PowerShell, CMD или в любом другом месте Windows. Также WSL не может напрямую взаимодействовать с исполняемыми файлами Windows, хотя обе среды имеют доступ к одним и тем же файлам на компьютере.
Выводы
Использование Linux в Windows как нельзя лучше подойдёт для разработчиков, но может понадобиться и начинающим пользователям, которые хотят познакомиться с системой. А что вы обо всём этом думаете? Использовали ли когда-нибудь WSL? Напишите в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
В Windows 10 появилась новая возможность для разработчиков — оболочка Ubuntu Bash, позволяющая запускать, устанавливать приложения Linux, использовать скрипты bash прямо в Windows 10, все это называется «Подсистема Windows для Linux». В версии Windows 10 1709 Fall Creators Update доступны уже три дистрибутива Linux для установки. Во всех случаях требуется 64-разрядная система для установки.
В этой инструкции — о том, как установить Ubuntu, OpenSUSE или SUSE Linux Enterprise Server в Windows 10 и некоторые примеры использования в конце статьи. Следует также учитывать, что есть некоторые ограничения при использовании bash в Windows: например, нельзя запускать GUI приложения (правда, сообщают об обходных путях с помощью X server). Кроме этого, командами bash нельзя запустить Windows-программы, несмотря на наличие полного доступа к файловой системе ОС.
Установка Ubuntu, OpenSUSE или SUSE Linux Enterprise Server в Windows 10
Начиная с версии Windows 10 Fall Creators Update (версия 1709) установка подсистемы Linux для Windows несколько изменилась по сравнению с тем, что было в предыдущих версиях (для предыдущих версий, начиная с 1607, когда функция была представлена в бета-версии, инструкция — во второй части этой статьи). Также обратите внимание, что в Windows 10 2004 можно установить Kali Linux с графическим интерфейсом.
Теперь необходимые шаги выглядят следующим образом:
- Прежде всего, необходимо включить компонент «Подсистема Windows для Linux» в «Панель управления» — «Программы и компоненты» — «Включение и отключение компонентов Windows».
- После установки компонентов и перезагрузки компьютера, зайдите в Магазин приложений Windows 10 и загрузите оттуда Ubuntu, OpenSUSE или SUSE Linux ES (да, теперь доступно три дистрибутива). При загрузке возможны некоторые нюансы, о которых далее в примечаниях.
- Запустите загруженный дистрибутив как обычное приложение Windows 10 и выполните первоначальную настройку (имя пользователя и пароль).
Для включения компонента «Подсистема Windows для Linux» (первый шаг) можно использовать команду PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Теперь несколько примечаний, которые могут быть полезны при установке:
- Вы можете установить сразу несколько дистрибутивов Linux.
- При загрузке дистрибутивов Ubuntu, OpenSUSE и SUSE Linux Enterprise Server в русскоязычном магазине Windows 10 заметил следующий нюанс: если просто ввести название и нажать Enter, то нужных результатов в поиске не оказывается, но если начать вводить и затем нажать по появляющейся подсказке, автоматически попадаешь на нужную страницу. На всякий случай прямые ссылки на дистрибутивы в магазине: Ubuntu, OpenSUSE, SUSE LES.
- Запускать Linux можно и из командной строки (не только с плитки в меню Пуск): ubuntu, opensuse-42 или sles-12
Установка Bash в Windows 10 1607 и 1703
Для того, чтобы установить оболочку bash, выполните следующие простые действия.
- Зайдите в параметры Windows 10 — Обновление и безопасность — Для разработчиков. Включите режим разработчика (должен быть подключен Интернет для загрузки необходимых компонентов).
- Зайдите в панель управления — Программы и компоненты — Включение или отключение компонентов Windows, отметьте пункт «Подсистема Windows для Linux».
- После установки компонентов, введите в поиске Windows 10 «bash», запустите предлагаемый вариант приложения и выполните установку. Вы можете задать свое имя пользователя и пароль для bash, либо использовать пользователя root без пароля.
По завершении установки вы можете запускать Ubuntu Bash на Windows 10 через поиск, или создав ярлык для оболочки там, где вам требуется.
Примеры использования Ubuntu Shell в Windows
Для начала отмечу, что автор не является специалистом по bash, Linux и разработке, а примеры ниже — просто демонстрация того, что в Windows 10 bash работает с ожидаемыми результатами для тех, кто разбирается в этом.
Приложения Linux
Приложения в Windows 10 Bash можно устанавливать, удалять и обновлять с помощью apt-get (sudo apt-get) из репозитория Ubuntu.
Использование приложений с текстовым интерфейсом ничем не отличается от такового на Ubuntu, например, вы можете установить Git в Bash и использовать его привычным образом.
Скрипты bash
Вы можете запускать скрипты bash в Windows 10, создать их можно в имеющемся в оболочке текстовом редакторе Nano.
Скрипты bash не могут вызвать программы и команды Windows, но возможен запуск скриптов и команд bash из bat файлов и сценариев PowerShell:
bash -c "команда"
Также вы можете попробовать запускать приложения с графическим интерфейсом в Ubuntu Shell в Windows 10, на этот счет в Интернете уже имеется не одна инструкция и суть способа сводится к использованию Xming X Server для вывода GUI приложения. Хотя официально возможность работы с такими приложениями Майкрософт не заявлена.
Как было написано выше, я не тот человек, который может в полной степени оценить ценность и функциональность нововведения, но вижу как минимум одно применение для себя: различные курсы Udacity, edX и другие, связанные с разработкой проходить будет куда проще, работая с необходимыми инструментами прямо в bash (а в этих курсах обычно демонстрируется работа именно в терминале MacOS и Linux bash).
СОВЕТУЕМ: Нажмите здесь, чтобы исправить ошибки Windows и оптимизировать производительность системы
Bash — это оболочка Unix и форма командного языка, впервые появившаяся в 1989 году. Она широко распространялась как оболочка входа по умолчанию для Linux и MacOS. Хотя это в основном наблюдается в Linux и Marcos, существует версия, которую можно установить в Windows 10. Однако поступает много жалоб от пользователей, которые не могут использовать Bash в Windows 10 и « Подсистема Windows для Linux». не имеет установленных дистрибутивов »ошибка при попытке сделать это.
«Подсистема Windows для Linux не имеет установленных дистрибутивов» Сообщение об ошибке
Что вызывает ошибку «Подсистема Windows для Linux не имеет установленных дистрибутивов»?
После получения многочисленных жалоб от нескольких пользователей, мы решили исследовать проблему и разработали набор решений, которые исправили ошибку для большинства наших пользователей. Кроме того, мы рассмотрели причины, по которым эта ошибка вызвана, и перечислили их ниже.
- Отсутствующие дистрибутивы: после установки bash для Windows существуют определенные дополнительные файлы, которые необходимо установить для подсистемы Windows. Если эти файлы не могут быть автоматически загружены из Магазина Microsoft, эта ошибка срабатывает.
- Отключенная служба: в некоторых случаях служба LxssManager, которая обычно работает в фоновом режиме, может быть заблокирована после недавнего обновления. Это может помешать операционной системе получить все необходимые файлы для запуска оболочки bash, которая может вызвать ошибку.
- Выбран неправильный дистрибутив по умолчанию: Если Ubuntu не был выбран в качестве дистрибутива по умолчанию для операционной системы, это может вызвать эту ошибку. Потому что Ubuntu — это необходимый дистрибутив для запуска оболочки bash.
Теперь, когда у вас есть общее представление о природе проблемы, мы будем двигаться к ее решению. Убедитесь, что реализовали их в определенном порядке, в котором они представлены, чтобы избежать конфликта.
Решение 1. Установка дистрибутивов вручную
Если некоторые дистрибутивы не могут быть загружены и установлены автоматически, мы можем попытаться установить их вручную через командную строку. Поэтому на этом этапе мы будем запускать команду для установки необходимых дистрибутивов. Для этого:
- Нажмите одновременно кнопки « Windows » + « R », чтобы открыть окно «Выполнить».
- Введите « cmd » и нажмите « Shift » + « Ctrl » + « Enter », чтобы предоставить административные привилегии.
Введите cmd в командной строке и нажмите Shift + Alt + Enter, чтобы открыть командную строку с повышенными правами.
- Введите следующую команду и нажмите ввод.
lxrun / install
Инициирование команды Lxrun / install
- Это запустит загрузку из Microsoft Store, нажмите « Y », чтобы начать процесс загрузки, если это будет запрошено в командной строке.
- Проверьте, сохраняется ли проблема.
Примечание. Эту команду также можно выполнить в Power Shell (администратор).
Решение 2: подождите 10 минут
У некоторых пользователей проблема исправлялась через 5-10 минут. Часто после перезагрузки некоторым процессам и службам требуется некоторое время для запуска. Из-за этого ошибка может быть вызвана, если вы попытаетесь запустить bash слишком рано после запуска. Поэтому перед загрузкой компьютера рекомендуется подождать не менее 10 минут после загрузки компьютера.
Решение 3. Установка Ubuntu
Если Ubuntu не был установлен на вашем компьютере, он может вызвать эту ошибку, потому что это очень важный дистрибутив, необходимый для запуска bash. Чтобы скачать и установить Ubuntu, выполните следующие действия.
- Перезагрузите компьютер и войдите в свою учетную запись.
- Нажмите на эту ссылку, чтобы открыть страницу загрузки.
- Нажмите « Получить » и выберите «Открыть Microsoft Store ».
Нажав на кнопку «Получить»
- После загрузки Microsoft Store нажмите « Получить », чтобы начать загрузку дистрибутива Ubuntu.
- Когда процесс загрузки завершится, нажмите « Установить », который появляется вместо « Получить ».
Нажав на кнопку «Установить»
- Ubuntu теперь будет установлен на компьютер.
- Проверьте, сохраняется ли проблема.
Решение 4. Запуск службы LxssManager
Возможно, служба LxssManager была отключена, из-за чего эта ошибка вызвана. Поэтому на этом этапе мы будем вручную запускать службу LxssManager. Для этого:
- Нажмите одновременно клавиши « Windows » + « R », чтобы открыть окно «Выполнить».
- Введите « Услуги . мск »и нажмите« Enter ».
Введите «Services.msc» и нажмите Enter
- Прокрутите вниз и дважды щелкните сервис « LxssManager ».
- Нажмите на выпадающий тип запуска и выберите « Автоматически ».
- Нажмите на « Пуск » и выберите « Применить ».
Выбрав Автоматический в качестве типа запуска и нажав Enter
- Нажмите « ОК » и проверьте, сохраняется ли проблема.
Windows 10 Pro 21H2 19044
WSL 2 — это новая версия архитектуры подсистемы Windows для Linux, чтобы запускать двоичные файлы Linux ELF64 в Windows.
Т.е. можно запускать приложения Linux, в том числе c GUI, на Windows.
Однако, это не является полноценной виртуализацией, скорее контейнеризация, поэтому полноценный Linux Desktop заменить не сможет, по крайней мере на данный момент.
На сайте Microsoft довольная хорошая документация, обязательно к ознакомлению:
https://docs.microsoft.com/ru-ru/windows/wsl/about
https://docs.microsoft.com/ru-ru/windows/wsl/faq
Установка WSL 2
Установка компонентов
Установку компонентов можно выполнить через GUI
Параметры → Приложения и возможности → Дополнительные компоненты → Другие компоненты Windows
Либо через консоль cmd или PowerShell (запустить от имени Администратора)
# cmd dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /norestart # PowerShell Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart
Выполнить перезагрузку
WSL 2 использует архитектуру Hyper-V для включения виртуализации. Эта архитектура будет доступна в качестве дополнительного компонента Virtual Machine Platform (Платформа виртуальной машины)
Если этот компонент не установлен, то будет работать WSL 1, а при попытке использовать WSL 2 выдаст сообщение:
Включите функцию Windows для платформы виртуальной машины и убедитесь в том, что в BIOS включена виртуализация. Дополнительные сведения см. на странице https://aka.ms/wsl2-install
Настройка WSL
Выбор WSL 2 в качестве версии по умолчанию
> wsl --set-default-version 2 Для получения сведений о ключевых различиях с WSL 2 перейдите на страницу https://aka.ms/wsl2 Операция успешно завершена.
Скачать (если выполняется первый раз) и/или обновить Linux ядро для WSL 2
> wsl --update Проверяется наличие обновлений... Скачивание обновлений... Выполняется установка обновлений... Это изменение вступит в силу при следующем полном перезапуске WSL. Чтобы выполнить перезапуск, выполните команду "wsl --shutdown". Версия ядра: 5.10.102.1
Посмотреть статус
> wsl --status Версия по умолчанию: 2 Подсистема Windows для Linux в последний раз обновлена 06.07.2022 Включены автоматические обновления WSL. Версия ядра: 5.10.102.1
Можно создать файл .wslconfig для глобальной настройки параметров WSL 2
%USERPROFILE%.wslconfig
[wsl2] kernel=<path> # An absolute Windows path to a custom Linux kernel. memory=<size> # How much memory to assign to the WSL2 VM. processors=<number> # How many processors to assign to the WSL2 VM. swap=<size> # How much swap space to add to the WSL2 VM. 0 for no swap file. swapFile=<path> # An absolute Windows path to the swap vhd. localhostForwarding=<bool> # Boolean specifying if ports bound to wildcard or localhost in the WSL2 VM should be connectable from the host via localhost:port (default true). # <path> entries must be absolute Windows paths with escaped backslashes, for example C:\Users\Ben\kernel # <size> entries must be size followed by unit, for example 8GB or 512MB
Например у меня много памяти и я хочу сберечь свой SSD отключив SWAP
По умолчанию SWAP file расположен
%USERPROFILE%AppDataLocalTempswap.vhdx
После изменения в .wslconfig требуется перезагрузка
wsl --shutdown
После команды shutdown все запущенные Linux контейнеры будут остановлены.
Или можно перезагрузить службу LxssManager, что будет иметь такой же эффект
# PowerShell Restart-Service LxssManager
Установка дистрибутива
Посмотреть текущие дистрибутивы
> wsl --list --verbose Нет установленных дистрибутивов подсистемы Windows для Linux. Дистрибутивы можно установить из Microsoft Store: https://aka.ms/wslstore
Посмотреть доступные дистрибутивы
> wsl --list --online Ниже приведен список допустимых распределений, которые можно установить. Установите с помощью команды wsl --install -d <Distro>. NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS
Дистрибутив Linux устанавливается как приложение Windows app или UWP app
На данный момент в Microsoft Store доступна Ubuntu-22.04, а через консоль нет
Установка Ubuntu-20.04 через консоль
> wsl --install -d Ubuntu-20.04 Загрузка: Ubuntu 20.04 LTS Выполняется установка: Ubuntu 20.04 LTS Установка «Ubuntu 20.04 LTS» выполнена. Запуск Ubuntu 20.04 LTS...
Если сообщение висит долго, нажмите ENTER
Такой баг я встречал и в других диалогах, так что следует это запомнить.
Вводим имя пользователя и пароль для Ubuntu, они произвольные и не как не связаны с Windows логином. Над паролем лучше не мудрить и сделать простым.
Я сразу отключу требование ввода пароля для sudo, например можно отредактировать правило в /etc/sudoers через команду
sudo sed 's/(^%sudos.*)/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/' /etc/sudoers -i
Посмотреть текущие дистрибутивы
> wsl --list --verbose NAME STATE VERSION * Ubuntu-20.04 Running 2
‘*’ отмечен дистрибутив по умолчанию, т.е. при выполнении команд wsl они будут применены к нему
Настройка дистрибутива
Можно создать файл /etc/wsl.conf для настройки дополнительных параметров внутри конкретного дистрибутива.
Под Linux я запускал VPN, поэтому мне понадобилось отключить управление файлом /etc/resolv.conf
Почему так происходит и какие подводные камни.
Открыл терминал, запустил VPN, который прописал DNS для использования внутреннего корпоративного домена.
И это работает до момента, когда открываешь еще один терминал или выполняешь команду через wsl, например даже такую
wsl ls
В этот момент WSL актуализирует resolv.conf и перетирает его, точнее это символическая ссылка, а сам файл расположен тут:
/etc/resolv.conf -> ../run/resolvconf/resolv.conf
Нужно создать конфиг
/etc/wsl.conf
[network] generateResolvConf = false
Перезагрузить
wsl --shutdown
Зайти в терминал Linux удалить ссылку, т.к. она уже будет ссылаться на несуществующий файл и создать новый файл
rm /etc/resolv.conf ip -4 route show default | awk '{print "nameserver",$3}' > /etc/resolv.conf
Однако IP адрес в WSL не статический и поменяется после перезагрузки Windows, что же делать в таком случае.
Все зависит от вашего сценария использования, например можно добавить задачу в Планировщик заданий (Task Scheduler) , что бы выполняла настройку после загрузки Windows.
Параметр [boot], для выполнения команд при первой загрузке доступен только в Windows 11.
Импорт дистрибутива
Можно установить любой другой дистрибутив, создать самому или клонировать существующий.
wsl --import <Distro> <Расположение установки> <Имя файла> [Параметры] Импортирует указанный tar-файл как новое распределение. Для стандартной загрузки имя файла может быть «-».
В рамках этой статьи я не буду рассматривать этот функционал см. https://docs.microsoft.com/ru-ru/windows/wsl/use-custom-distro
Удаление дистрибутива
Выполняется очень просто
> wsl --unregister Ubuntu-20.04 Отмена регистрации...
Файловая система
Файловая система WSL дистрибутива Linux хранится в VHD файле в каталоге
%USERPROFILE%AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalStateext4.vhdx
Доступ есть через проводник по адресу
\wsl$
Из Linux так же есть доступ в дискам Windows
ls -la /mnt/c/ ls -la /mnt/d/
Статический IP адрес
По мере использования WSL, можно столкнуться с этим вопросом.
Обсуждение https://github.com/microsoft/WSL/issues/4210
При первом запуске WSL создается интерфейс «vEthernet (WSL)» с случайной подсетью из диапазона приватной сети 172.16.0.0/12
т.е. после перезагрузки Windows сеть поменяется.
По итогу без костылей обойтись не получится.
Можно использовать скрипты, где каждый раз получать ip адрес и использовать его дальше по сценарию, как пример:
.bat
FOR /F %%i IN ('wsl -d Ubuntu-20.04 hostname -I') DO set WSLIP=%%i echo %WSLIP% netsh interface portproxy add v4tov4 listenport=8088 connectport=80 connectaddress=%WSLIP%
.bashrc
export DISPLAY=$(ip route list default | awk '{print $3}'):0 export LIBGL_ALWAYS_INDIRECT=1
Есть готовые скрипты, которые переконфигурируют интерфейс в Windows, а затем eth0 внутри Linux.
Например можно глянуть https://github.com/skorhone/wsl2-custom-network, https://github.com/ocroz/wsl2-boot
Запуск графических приложений
Т.к. в данной статье у нас Windows 10, то необходимо установить X-сервер для операционной системы Microsoft Window.
Например VcXsrv
Я установил Xming
Для безопасности в файле C:Program Files (x86)XmingX0.hosts указаны хосты, с которых разрешены подключения, но ip адрес у нас динамический, а указать подсеть в файле нельзя, поэтому придется запускать через ярлык XLaunch, т.к. там есть возможность выключить контроль доступа.
Выключаем проверку доступа
Конфиг XLaunch можно сохранить и в дальнейшем запускать через него.
В Linux есть мини программы, как раз подойдут для проверки, установим их
sudo apt-get install x11-apps
Выполним экспорт переменной DISPLAY, в дальнейшем эту команду можно записать в ~/.bashrc
export DISPLAY=$(ip -4 route show default | awk '{print $3}'):0.0
Запустить приложение «x-глаза» для проверки
xeyes
Отлично! Все работает.