Одним з нововведень 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
Потрібно відзначити, що з 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.