У сисадминов и разработчиков есть повод возрадоваться! WSL становится полноценной частью Windows 10, начиная с нового Fall Creators Update.

Возможно, вас интересует использование Linux под Windows 10 с помощью подсистемы Windows Subsystem for Linux (WSL), хотя нервирует то, что эта функция пребывает в статусе бета-версии и вдобавок доступна лишь при активации режима для разработчиков (Windows 10 Developer Mode). Причин для тревог теперь уже нет. В обновлении Windows 10 Fall Creators Update (WinFCU) WSL перешла в разряд официальной функции Windows 10, которую может запускать любой пользователь.

WSL на WinFCU, тестировавшаяся в течении более года, привносит в эту комбинацию оболочки Linux Bash и Windows немало новых функций.

Кроме того, что WSL уже не бета-версия и не требует от пользователя перехода в режим разработчика; новые функции включают следующее:

  • Linux-дистрибутивы можно инсталлировать через Windows Store;
  • WSL теперь поддерживает различные Linux-дистрибутивы;
  • WSL приходит в виртуальные машины Windows Server и Microsoft Azure;
  • WSL теперь поддерживает коммуникации через USB и последовательный порт;
  • разнообразные исправления и улучшения.

Помимо Ubuntu, поддерживаемыми в WSL дистрибутивами Linux стали openSUSE сообщества SUSE и соответствующий корпоративный SUSE Linux Enterprise Server (SLES). В Windows Store скоро появятся также Fedora и другие дистрибутивы.

Если вы инсталлировали WSL раньше, ваш существующий «унаследованный» экземпляр Ubuntu будет продолжать работать, но это официально не рекомендуется. Что продолжать получать поддержку, вам надлежит его заменить новым экземпляром из Store. Без этого поддержка Canonical или Microsoft станет для вас недоступной.

Чтобы сохранить ваши старые файлы, вам надо упаковать их в tar-архив и скопировать в вашу файловую систему Windows, например, в точку монтирования /mnt/c/temp/backups, а потом скопировать их обратно в новый экземпляр Linux.

Вдобавок к сказанному, теперь вместо того, чтобы исхитряться в установке Linux на Windows-ПК, вы спокойно можете инсталлировать на одну систему Windows 10 хоть несколько (да, это вполне возможно) разных дистрибутивов Linux из Windows Store.

Чтобы это сделать, вам сначала нужно включить функцию WSL в диалоге Turn Windows Features on or off и перезагрузиться. По умолчанию WSL все же неактивна, а после ее включения обязательна перезагрузка.

Далее вы просто отыскиваете Linux в Windows Store, выбираете для инсталляции нужную версию, и через несколько минут все готово.

Если в WSL у вас уже был установлен экземпляр Bash, вы можете начать с нуля, выполнив команду lxrun /uninstall. Она запускается из командной строки или PowerShell.

Вы можете не только инсталлировать много дистрибутивов Linux, но и параллельно запустить несколько вариантов Linux. Все дистрибутивы будут работать независимо друг от друга. Это не виртуальные машины, и не контейнеры, то есть им требуются лишь свои обычные системные ресурсы. Я бы, например, только рекомендовал, чтобы система имела не менее 2 Гб дополнительной памяти на один работающий экземпляр WSL.

Сама по себе подсистема WSL требует минимальных системных ресурсов. Рич Тернер, старший менеджер программы WSL и Windows Console, сообщил: «Мы не приводим требования по оперативной памяти, так как, откровенно говоря, тут не о чем говорить! Если WSL вы не инсталлировали, то она не занимает в ОЗУ никакого места. Если вы включаете WSL, то на короткое время загружается крошечный драйвер, занимающий 850 кб, который затем закрывается, пока вы не запустите экземпляр Linux. В этот момент загружается /init, который запускает /bin/bash. Это вызывает загрузку драйвера на 850 кб и создает Pico Processes для init и bash. Так что, по сути дела, требования WSL к ОЗУ в основном определяются тем объемом памяти, который требуется для работы каждого экземпляра Linux, плюс примерно 1 Мб на поддержку всего вместе».

Linux-дистрибутивы также могут иметь доступ к файловой системе Windows-хоста, сетевому стеку и так далее. Следовательно, надо соблюдать осторожность при изменении файлов, принадлежащих к файловой системе Windows.

Зачем может понадобиться запускать сразу несколько дистрибутивов? Microsoft поясняет: «Возможность запускать разные Linux-дистрибутивы позволит вам использовать те же инструменты, менеджер и экосистему пакетов и окружение, в которых будет работать ваш продуктивный код. Это сократит затраты времени на обнаружение трудно находимых ошибок перед развертыванием вашего кода. Вы, например, сможете использовать Edge, Chrome или Firefox под Windows, чтобы видеть веб-сайт, работающий на Apache в Ubuntu и взаимодействующий с REST-сервисом, работающим в openSUSE, ... без того, чтобы при локальном тестировании проделывать дыры в сетевом экране, поскольку все эти процессы выполняются по ближнюю сторону сетевого экрана параллельно друг с другом!»

Linux-разработчиков обрадует, что в WSL появилась поддержка коммуникаций через USB и последовательные порты. Это позволит вашим скриптам оболочки и приложениям связываться с последовательными портами.

WSL теперь поддерживает и монтирование подключенных по USB устройств хранения данных и разделяемых сетевых ресурсов. Это хорошие новости. Плохая же новость, что здесь поддерживается только инфраструктура ввода-вывода файловой системы NT. Иными словами, поддерживаются только устройства хранения данных, отформатированные в FAT, FAT32 или NTFS. Вас интересуют *nix-файловые системы? Microsoft рекомендует вам за это проголосовать и/или высказаться в соответствующей ветке сервиса UserVoice.

При дальнейшем углублении в новшества WSL, вошедшие в WinFCU, стоит отметить следующее:

  • расширенные опции TCP-сокетов, включая IP_OPTIONS, IP_ADD_MEMBERSHIP, IP_MULTICAST и т. д.;
  • в /etc/hosts теперь будут наследоваться записи из Windows-файла hosts;
  • поддержка syscalls, связанная с xattr;
  • исправления в ряде функций и возможностей файловой системы;
  • улучшенная поддержка PTRACE;
  • улучшенная поддержка FUTEX;
  • возможность использовать команду chsh, которая позволяет заменять оболочки, то есть вы сможете напрямую задействовать вашу любимую оболочку, и при этом будет исполняться не .bashrc, а иной стартовый файл оболочки.

Впервые в цикле обновлений FCU добавлены следующие системные вызовы:

  • prlimit64;
  • getxattr, setxattr, listxattr, removexattr.

Как и ожидалось, WSL также находится на пути в Windows Server и виртуальные машины с Windows в Microsoft Azure. Это сделает WSL еще более полезной для сисадминов.

Все эти усовершенствования еще больше облегчают разработчикам и системным администраторам запуск команд оболочки Linux в Windows. Хотя это вряд ли несет особую пользу для обычных пользователей десктопов, для серьезного ИТ-персонала это реальный шаг вперед, делающий Windows более практичной в мире серверов и облаков, где все больше доминирует Linux. Даже в Azure больше трети всех виртуальных машин базируются на Linux.

WSL предоставляет в ваше распоряжение большинство команд оболочки Linux. В их числе apt, ssh, find, grep, awk, sed, gpg, wget, tar, vim, emacs, diff и patch. Вы также можете работать с популярными Open Source-языками программирования, такими как Python, Perl, Ruby, PHP и GCC. Вдобавок WSL с Bash поддерживает серверные программы, например, веб-сервер Apache и СУБД MySQL. Иными словами, вы приобретаете сильную Linux-среду разработчика, работающую в Windows.

Хотя с WSL вы можете запускать в Linux графические интерфейсы и программы, это пока что скорее фокусы, а не практическая вещь. Конечно, если еще поработать...

Как работает WSL? Как пояснил Дастин Керкланд, член управленческой команды Ubuntu Product and Strategy в Canonical, «речь идет о строго тождественных по битам и контрольным суммам двоичных ELF-файлах Ubuntu, непосредственно запускающихся в Windows. По существу WSL осуществляет в реальном времени трансляцию системных вызовов Linux в системные вызовы ОС Windows. Поклонники Linux могут это рассматривать как нечто вроде инверсии WINE — здесь наоборот двоичный код Ubuntu нативно работает в Windows».

Независимо от технических деталей того, как WSL делает то, что она делает, сегодня главное, что WSL работает очень и очень хорошо. Любите и жалуйте!

Версия для печати