WSL – запуск исполняемых файлов и конфигурирование подсистемы Windows для Linux (WSL) в Windows 10 и старше.В современных версиях операционной системы Windows 10 имеется возможность использования подсистемы Windows для Linux (WSL - Windows Subsystem for Linux), позволяющей легко и просто установить из Microsoft Store некоторые дистрибутивы Linux, в том числе Debian, Ubuntu, Kali, Suse. Подробности - Подсистема Windows для Linux в среде Windows 10. При использовании WSL, пользователь получает не изолированную виртуальную машину с Linux, а интегрированную в Windows подсистему с возможностью выполнения утилит командной строки из обеих ОС, запуск программ одной ОС из среды другой и т.п. Кроме того, WSL предоставляет пользователю Windows 10 возможность использования нескольких дистрибутивов Linux одновременно. Добавлю, что многие пользователи тратят огромные усилия на установку графической оболочки Linux в WSL, что не имеет смысла - в современных версиях Windows можно создать виртуальную машину и установить в ней любую операционную систему Linux при использовании стандартного сервера виртуализации Hyper-V, являющегося компонентом системы. Пример - Установка Linux Mint на виртуальную машину Hyper-V Windows 10. После включения компонент Hyper-V, возможна установка штатными средствами нескольких операционных систем на одном физическом компьютере и использования их одновременно с основной системой. А подсистема WSL предназначена в основном для отладочных работ с минимальным использованием ресурсов системы и интеграции возможностей командной строки Linux в сценарии Windows. 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 или в сокращенном варианте - wsl –l --user, -u < UserName > - Запуск от имени указанного пользователя. Аргументы для управления подсистемой Windows для Linux: --export --import < DistributionName > < InstallLocation > < FileName > - Импорт указанного TAR-файла в качестве нового дистрибутива DistributionName в каталоге InstallLocation --list, -l [[--all] –running] - отобразить список дистрибутивов Linux, зарегистрированных в системе. При указании параметра --all отображается список всех дистрибутивов, включая те, которые сейчас устанавливаются или удаляются. При указании параметра --running отображается список выполняющихся на данный момент дистрибутивов. -setdefault, -s < DistributionName > - установить указанный дистрибутив в качестве дистрибутива по умолчанию. --terminate, -t < DistributionName > - прекратить выполнение указанного дистрибутива. --unregister < DistributionName > - отменить регистрацию (удалить) указанный дистрибутив. update - обновление WSL --upgrade < DistributionName > - дистрибутив переводится в формат файловой системы WslFs. --help - отобразить справку по использованию wsl.exe. Примеры использования wsl.exewsl –h - то же, что и в предыдущем примере, но с использованием синтаксиса укороченных параметров. wsl –list - отобразить список дистрибутивов Linux, зарегистрированных в системе. Пример отображаемой информации: Распределения подсистемы Windows для Linux: Ubuntu (по умолчанию) kali-linux SLES-15 Ubuntu-18.04 wsl –l –v - отобразить список дистрибутивов с версиями WSL. В данном случае термин ”распределение” нужно воспринимать как ”дистрибутив”. На сегодняшний день перевод сообщений утилиты wsl.exe и документации по подсистеме WSL на русский язык оставляет желать лучшего, и в некоторых случаях проще воспринимается информация на английском языке. Первым в списке зарегистрированных в 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" wsl --list --all - отобразить список установленных дистрибутивов Linux, включая те, которые устанавливаются или удаляются в данный момент времени. wsl --list –running - отобразить список выполняющихся в данный момент дистрибутивов. wsl –setdefault ubuntu2 - установить дистрибутив ubuntu2, в качестве дистрибутива по умолчанию. wsl -t Ubuntu - завершить работу дистрибутива Ubuntu wsl --unregister ubuntu - отменить регистрацию дистрибутива ubuntu (удалить дистрибутив ubuntu) wsl --upgrade Ubuntu - выполнить перевод дистрибутива Ubuntu в формат файловой системы WslFs. wsl –update - проверить наличие обновлений и обновить подсистему WSL wsl –shutdown - завершить работу подсистемы. Результат аналогичен перезагрузке компьютера с реальной ОС. Необходимо отметить, что подсистема WSL постоянно развивается и синтаксис утилиты wsl.exe также может изменяться. Кроме того, имеется две реализации подсистемы WSL - WSL и WSL 2, которые значительно различаются своими возможностями – WSL значительно уступает WSL2, но менее требовательна к оборудованию. Для использования WSL2 кроме ”Подсистемы Windows для Linux”, должен быть включен компонент ”Платформа виртуальной машины” и должна быть включена аппаратная поддержка виртуализации. Получить список установленных дистрибутивов Linux и проверить версию WSL, можно задав команду: wsl -l -v Будет отображен список установленных дистрибутивов и версия WSL: При начальном конфигурировании подсистемы WSL командой wsl –install выполняются следующие действия: - Включаются дополнительные компоненты WSL и платформы виртуальных машин; - скачивается и устанавливается последняя версия ядра Linux; - задается WSL 2 в качестве среды по умолчанию; - Скачивается и устанавливается дистрибутив Ubuntu Linux (может устанавливаться дистрибутив с длительной поддержкой Ubuntu Linux LTS ) Соответственно, все последующие дистрибутивы будут устанавливаться с поддержкой WSL2. При необходимости, С помощью команды wsl --set-version можно перейти с версии WSL 2 на WSL 1 или обновить ранее установленные дистрибутивы Linux с версии WSL 1 до WSL 2 wsl --set-version Ubuntu-23.04 2 - настроить дистрибутив Ubuntu-23.04 на использование WSL2 Настройка дистрибутива на версию WSL2 возможна, если имеется ее программно-аппаратная поддержка. Поскольку компонент ”Платформа виртуальных машин” использует архитектуру виртуализации Hyper-V, то при включенном WSL 2 могут прекратить работу другие средства виртуализации, в том числе и VMWare Workstation и Oracle VM Virtualbox старых версий. Хотя разработчики средств виртуализации постоянно работают над совместимостью своих программных продуктов, использование WSL 2 не всегда возможно как по причине несоответствия компьютера техническим требованиям, так и по невозможности совместной работы подсистемы WSL 2 с другими средствами виртуализации. В настоящее время компания Microsoft предлагает для разработчиков виртуальные машины с последними версиями Windows, пакетами SDK и примерами программ для использования в среде VMWare, Hyper-V, Virtualbox и Parallels, но пока не всегда совместимые с WSL 2 Скачать виртуальные машины для разработчиков с ограниченным периодом использования В заключение добавлю, что в Windows 10 Professional и старше реализована возможность установки и использования виртуальных машин с Linux ( и не только ) с помощью стандартного сервера виртуализации от Microsoft Hyper-V. Примеры: Установка Linux Mageia на виртуальную машину Hyper-V Windows 10. Установка Linux Mint на виртуальную машину Hyper-V Windows 10. Установка Linux Ubuntu на виртуальную машину Hyper-V Windows 10/11. |
|