Как включить подсистему Linux в Windows Server 2016

Как включить подсистему Linux в Windows Server 2016

Одним из новшеств Windows Server 2016 версии RedStone 3 (1709) является встроенная поддержка запуска нативных бинарных файлов Linux ELF64. Данный функционал реализуется за счет отдельного компонента Windows Subsystem for Linux (WSL), который обеспечивает нужный слой совместимости. В этой обзорной статье мы покажем, как включить подсистему Windows для Linux в Windows Server 2016 и использовать ее для запуска Linux приложений.

Возможность запуска Linux приложений в Windows ранее была представлена в Windows 10. Эта функция носила название Bash on Windows. Начиная с Windows 10 Fall Creators Update это название более не используется и официально эта подсистема теперь называется WSL — Windows Subsystem for Linux. Кроме того, для ее использования более не нужно переключать ОС в режим разработчика (Developer Mode). WSL доступна как Windows Server, так и в виртуальных машинах Microsoft Azure

Предполагаем, что вы уже скачали и установили релиз Windows Server >= 1709. Это может быть сервер с полноценным GUI или в Core режиме.

Проверить текущую версию ОС можно так:

systeminfo | Select-String "^OS Name","^OS Version"

Чтобы проверить, что в вашей версии Windows Server имеется функционал WSL, выполните следующую команду:

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

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

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

После чего сервер нужно перезагрузить.

Далее необходимо скачть архив с адаптированным дистрибутивом Linux. На данный момент Microsoft предлагает поддержку следующих дистрибутивов:

В ближайшем будущем планируется добавить дистрибутивы CentOS и Fedora.

К примеру, с помощью PowerShell по HTTP протоколу, скачаем архив с дистрибутивом Ubuntu:

Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile ~/Ubuntu.zip -UseBasicParsing

Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604

Размер архива около 200 Мб. Распакуем его:

Expand-Archive ~/Ubuntu.zip ~/Ubuntu

Expand-Archive ~/Ubuntu.zip ~/Ubuntu

Исходный архив можно удалить:

Remove-Item Ubuntu.zip

Для запуска установки дистрибутива достаточно запустить файл:

Ubuntu.exe

Запустится мастер установки, который в том числе попросит указать имя пользователя и пароль, который вы будете использовать для доступа к середе Linux (эта учетная запись не связана с Windows и входит в группу sudoers, таким образом ей разрешено использовать команду sudo для установки пакетов)

Ubuntu.exe

Запустим обновление дистрибутива:

sudo apt-get update
sudo apt-get upgrade

Чтобы выйти из командой оболочки Linux и вернуться в PowerShell, наберите:

Exit

Открыть shell в любой момент можно командой:

bash

Имеется возможность запускать команды Linux из консоли Windows и наоборот. К примеру, в консоли PowerShell можно вывести список файлов в каталоге командой ls. Формат команды должен быть такой:

bash -c “ls -la”

Запуск команд Linux из Windows

Чтобы из Linux вызвать команду Windows, формат должен быть такой:

cmd.exe /c dir

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

Запуск команд Windows из Linux

Нужно отметить, что из Linux можно запускать только те исполняемые файлы Windows, которые описаны в специальной переменной окружения. Чтобы добавить в переменную окружения новый путь, выполните команду:

export PATH=$PATH:/mnt/c/Windows/System32

Теперь можно вызвать любой файл из каталога %WinDir%system32.

run notepad.exe from linux

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

$notepad.exe “C:temptest.txt”
$notepad.exe C:temptest.txt

Все исполняемые файлы в этом случае запускаются в контексте учетной записи, запустившей bash.exe.

d0bad0b0d0ba d0b2d0bad0bbd18ed187d0b8d182d18c d0bfd0bed0b4d181d0b8d181d182d0b5d0bcd183 linux d0b2 windows server 2016 65d23174354ce

Итак, подсистему WSL можно использовать для тестирования, разработки и запуска утилит Linux, недоступных в Windows окружении без необходимости развертывать и настривать отдельную виртуальную машины с Linux.

Windows Server 2016
Как включить подсистему Linux в Windows Server 2016