WSL – запуск исполняемых файлов и конфигурирование подсистемы Windows для Linux (WSL) в Windows 10.



В современных версиях операционной системы Windows 10 имеется возможность использования подсистемы Windows для Linux (WSL - Windows Subsystem for Linux), позволяющей легко и просто установить из Microsoft Store некоторые дистрибутивы Linux, в том числе Debian, Ubuntu, Kali, Suse. Подробности - Linux в среде Windows 10. При использовании WSL, пользователь получает не изолированную виртуальную машину с Linux, а интегрированную в Windows подсистему с возможностью выполнения утилит командной строки из обеих ОС, запуск программ одной ОС из среды другой и т.п. Кроме того, WSL предоставляет пользователю Windows 10 возможность использования нескольких дистрибутивов Linux одновременно.

WSL.exe - утилита командной строки для выполнения программных файлов Linux и административных операций в подсистеме Windows для Linux (Windows Subsystem for Linux). Кроме функции запуска исполняемых файлов, возможности утилиты по управлению дистрибутивами Linux почти полностью соответствуют возможностям утилиты wslconfig.exe

Формат командной строки:

wsl.exe [Аргументы] [Параметры...] [командная строка]

Параметры командной строки:

Аргументы для запуска двоичного кода Linux:

- Если командная строка не указана, то wsl.exe запускает стандартную оболочку bash дистрибутива Linux, используемого по умолчанию.

- --exec, -e < командная строка > - выполнение указанной командной строки без использования стандартной оболочки Linux.

- -- - Передача оставшейся командной строки как есть.

Параметры:

--distribution, -d < DistributionName > - Запуск указанного дистрибутива Linux. Параметр DistributionName должен принимать значение имени дистрибутива Linux, присвоенное ему в подсистеме WSL, например SLES-15 для SUSE Linux Enterprise Server 15. Список зарегистрированных в системе дистрибутивов можно получить с помощью команды wsl –list



--user, -u < UserName > - Запуск от имени указанного пользователя.

Аргументы для управления подсистемой Windows для Linux:

--export - Экспорт дистрибутива DistributionName в TAR-файл FileName

--import < DistributionName > < InstallLocation > < FileName > - Импорт указанного TAR-файла в качестве нового дистрибутива DistributionName в каталоге InstallLocation

--list, -l [[--all] –running] - отобразить список дистрибутивов Linux, зарегистрированных в системе. При указании параметра --all отображается список всех дистрибутивов, включая те, которые сейчас устанавливаются или удаляются. При указании параметра --running отображается список выполняющихся на данный момент дистрибутивов.

-setdefault, -s < DistributionName > - установить указанный дистрибутив в качестве дистрибутива по умолчанию.

--terminate, -t < DistributionName > - прекратить выполнение указанного дистрибутива.

--unregister < DistributionName > - отменить регистрацию (удалить) указанный дистрибутив.

--upgrade < DistributionName > - дистрибутив переводится в формат файловой системы WslFs.

--help - отобразить справку по использованию wsl.exe.


Примеры использования WSL.EXE для запуска приложений.

wsl --help - отобразить подсказку по использованию wsl.exe.

wsl –h - то же, что и в предыдущем примере, но с использованием синтаксиса укороченных параметров.

wsl –list - отобразить список дистрибутивов Linux, зарегистрированных в системе. Пример отображаемой информации:

Распределения подсистемы Windows для Linux:

Ubuntu (по умолчанию)
kali-linux
SLES-15
Ubuntu-18.04

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

wsl.exe - если параметры командной строки не заданы, выполняется запуск дистрибутива Linux, установленного по умолчанию.

wsl -d Ubuntu - запустить дистрибутив Ubuntu. Для завершения работы в консоли Linux можно использовать команды logout или exit. После запуска дистрибутива отображается стандартный эмулятор терминала Linux с приглашением к вводу команд. Пользователю предоставляется стандартная оболочка bash.

wsl -e ls -l /etc - выполнить команду ls -l /etc для дистрибутива по умолчанию (отобразить содержимое каталога /etc в подробном формате).

wsl -d sles-15 -e ls -l /etc - то же, что и в предыдущем примере, но команда выполняется в среде дистрибутива sles-15

Для идентификации дистрибутива сценариями, можно использовать стандартную для WSL переменную окружения WSL_DISTRO_NAME.

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

wsl -e env - отобразить переменные окружения. В текущих версиях утилиты wsl.exe допускается форма командной строки без параметра -e:

wsl env

Пример отображаемой информации о переменных окружения:

HOSTTYPE=x86_64
LANG=C.UTF-8
WSL_DISTRO_NAME=Ubuntu
USER=root
PWD=/mnt/c/WINDOWS/system32
HOME=/root
NAME=Win10
SHELL=/bin/bash
TERM=xterm-256color
SHLVL=1
LOGNAME=root
PATH=/usr/local/sbin:/usr/local/bin: /usr/sbin:/usr/bin:/sbin:/bin:/usr/games: /usr/local/games:/mnt/c/WINDOWS/system32: /mnt/c/WINDOWS: /mnt/c/WINDOWS/System32/Wbem: /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/: /mnt/c/WINDOWS/System32/OpenSSH/: /mnt/c/Users/User/AppData/Local/ Microsoft/WindowsApps
WSLENV=
_=/usr/bin/env


Как видим, текущий каталог, определяемый значением переменной PWD принимает значение, соответствующее текущему каталогу на момент запуска wsl.exe, в данном случае, C:\Windows\System32, что соответствует /mnt/c/WINDOWS/system32 в Linux.

Переменную WSLENV можно применить для совместного использования сценариями Windows и Linux.

Пути поиска исполняемых файлов включают в себя как каталоги файловой системы Windows, так и каталоги Linux.

wsl -d kali-linux -u root ifconfig - отобразить конфигурацию сетевых интерфейсов дистрибутива kali-linux от имени суперпользователя root.

Одновременное применение команд разных ОС с разными переменными окружения и различным синтаксисом может вызывать некоторые трудности, Например, нужно установить и сражу же запустить в среде WSL файловый менеджер Midnight Commander ( mc). Напрашивается решение объединить установку и запуск в контейнер:

wsl apt-get install mc && mc

Но, интерпретатор команд Windows воспримет специальный символ & как предназначенный командной оболочке Windows и интерпретирует вводимую строку как 2 команды:

Wsl apt-get install mc - установить утилиту mc в среде Linux по умолчанию
mc - выполнить команду mc в среде Windows 10

Чтобы установленная программа mc выполнялась в среде Linux, она должна запускаться с помощью wsl.exe:

wsl apt-get install mc & wsl mc

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

wsl ping ya.ru - выполнение команды ping.ya.ru в среде дистрибутива Linux, установленного по умолчанию.

wsl –e /mnt/c/windows/system32/ping.exe ya.ru - выполнение команды ping.ya.ru в среде Windows 10.

Примеры использования WSL.EXE для администрирования дистрибутивов Linux.



wsl --export kali-linux D:\kali-linux.tar - экспорт дистрибутива kali-linux в TAR-файл D:\kali-linux.tar

wsl --import ubuntu2 D:\linux\ubuntu2 D:\ubuntu.tar - импорт указанного TAR-файла D:\ubuntu.tar в качестве нового дистрибутива ubuntu2, размещаемого в каталоге D:\linux\ubuntu2. При стандартной установке дистрибутивы Linux устанавливаются в каталог "C:\Users\имя пользователя\Local Settings\Packages"
BR> wsl --list --all - отобразить список установленных дистрибутивов Linux, включая те, которые устанавливаются или удаляются в данный момент времени.

wsl --list –running - отобразить список выполняющихся в данный момент дистрибутивов.

wsl –setdefault ubuntu2 - установить дистрибутив ubuntu2, в качестве дистрибутива по умолчанию.

wsl -t Ubuntu - завершить работу дистрибутива Ubuntu

wsl --unregister ubuntu - отменить регистрацию дистрибутива Ubuntu

wsl --upgrade Ubuntu - выполнить перевод дистрибутива Ubuntu в формат файловой системы WslFs.


Весь список команд CMD Windows



Рейтинг@Mail.ru