Як включити підсистему Linux в Windows Server 2016

Одним з нововведень Windows Server 2016 версії RedStone 3 (1 709) є вбудована підтримка запуску нативних бінарних файлів 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

Щоб включити підтримку підсистеми Linuх, виконайте команду:

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

Після чого сервер потрібно перезавантажити.

Далі необхідно Скачть архів з адаптованим дистрибутивом Linux. На даний момент Microsoft пропонує підтримку наступних дистрибутивів:

  • Ubuntu - https://aka.ms/wsl-ubuntu-1604
  • OpenSUSE - https://aka.ms/wsl-opensuse-42
  • SLES - https://aka.ms/wsl-sles-12 - корпоративний варіант SUSE

У найближчому майбутньому планується додати дистрибутиви CentOS і Fedora.

Наприклад, за допомогою PowerShell по HTTP протоколу, скачати архів з дистрибутивом Ubuntu:

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

Розмір архіву близько 200 Мб. Розпакуємо його:

Expand-Archive ~ / Ubuntu.zip ~ / Ubuntu

Вихідний архів можна видалити:

Remove-Item Ubuntu.zip

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

Ubuntu.exe

Запуститься майстер установки, який в тому числі попросить вказати ім'я користувача і пароль, який ви будете використовувати для доступу до Середі Linux (ця обліковий запис не пов'язана з Windows і входить до групи sudoers, таким чином їй дозволено використовувати команду sudo для установки пакетів)

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

sudo apt-get update
sudo apt-get upgrade

Щоб вийти з командою оболонки Linux і повернутися в PowerShell, наберіть:

Exit

Відкрити shell в будь-який момент можна командою:

bash

Є можливість запускати команди Linux з консолі Windows і навпаки. Наприклад, в консолі PowerShell можна вивести список файлів в каталозі командою ls. Формат команди повинен бути такий:

bash -c "ls -la"

Щоб з Linux викликати команду Windows, формат повинен бути такий:

cmd.exe / c dir

Примітка. Зверніть увагу, що при запуску виконуваних файлів Windows потрібно обов'язково вказувати розширення і дотримуватися регістр імені оригінального файлу.

Потрібно відзначити, що з Linux можна запускати тільки ті виконувані файли Windows, які описані в спеціальній змінній оточення. Щоб додати в змінну оточення новий шлях, виконайте команду:

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

Тепер можна викликати будь-який файл з каталогу% WinDir% \ system32.

Щоб передати параметр на вхід виконуваного файлу, потрібно скористатися такими конструкціями:

$ Notepad.exe "C: \ temp \ test.txt"
$ Notepad.exe C: \\ temp \\ test.txt

Всі виконувані файли в цьому випадку запускаються в контексті облікового запису, яка запустила bash.exe.

Отже, підсистему WSL можна використовувати для тестування, розробки і запуску утиліт Linux, недоступних в Windows оточенні без необхідності розгортати і настрівать окрему віртуальну машини з Linux.