Дистрибутив windows для linux систем

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Общий взгляд на подсистему Windows для Linux

Общий взгляд на подсистему Windows для Linux

Взаимоотношения Windows и Linux долгое время были натянутыми, а совместному применению обеих систем мешало большое количество разного рода барьеров, многие из которых были возведены искусственно. Но в последнее время все поменялось и Microsoft неожиданно для многих представила подсистему Windows для Linux, более известную как «Ubuntu в Windows 10». В данной статье мы расскажем, чем данная подсистема является, чем не является и для чего ее можно использовать.

Что такое подсистема Windows для Linux (Windows Subsystem for Linux, WSL)? Это не эмулятор и не виртуальная машина, а именно подсистема, основная задача которой — создать для разработчиков и тестеров привычное Linux окружение в среде Windows. Цели создать полноценную систему у разработчиков не стояло и не стоит, поэтому не следует рассматривать WSL как полноценную замену виртуальной машине, у WSL иные задачи.

Кроме предоставления пользователям Windows привычного Linux окружения разработчики WSL поставили во главу угла вопрос максимальной интеграции двух систем, чтобы вы могли без особых затруднений работать с вашими данными из любой среды. Собственно, с этим и связан ряд ограничений.

Прежде всего это коснулось файловой системы, для работы Linux подсистемы с диском используется дополнительный слой абстракции в виде Virtual File System (VFS), которая позволяет Linux работать с собственными файлами, расположенными на NTFS, и вообще вся инсталляция Linux представляет собой обычную папку, которую вы можете открыть через проводник, точно также в среде Linux вы можете перемещаться по файловой системе Windows.

Удобно? Да. Но ради этого пришлось отказаться от собственных инструментов Linux по работе с файловой системой и дисками, также вы не сможете использовать FUSE.

Второе ограничение связано с сетью, в Windows 10 1607 сетевая подсистема Linux в WSL не реализована, частично это исправлено в Windows 10 1703, но рассчитывать на полноценную работу с сетью не стоит, потому как сетевой стек Linux в WSL заменен еще одним слоем абстракции, позволяющим использовать для работы сетевые возможности Windows.

После прочтения этих строк многим может показаться, что Microsoft подсунула им какую-то урезанную версию Linux, но здесь следует остановиться и еще раз перечитать первые абзацы данной статьи: WSL — не виртуальная машина, это — подсистема.

В чем плюсы данного подхода? Во-первых — экономия ресурсов, запущенная виртуальная машина гарантированно потребляет нужный для работы ОС объем оперативной памяти, не оптимально расходует дисковое пространство, хотя бы потому что вам придется держать две копии рабочих файлов, на хосте и внутри виртуалки. Это может быть критично для слабых машин, например, для ноутбука, который, зато удобно брать с собой для демонстрации результата работы заказчику.

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

И наконец, это полноценная Linux среда, аналогичная производственной, поэтому вы можете быть уверены, что с переносом в рабочую среду проблем у вас не возникнет, особенно если там вы используете аналогичные версии ПО.

Читайте также:  Windows 10 pro ovg

Как установить подсистему Windows для Linux

Установить WSL довольно просто, для начала воспользуйтесь новой Панелью управления и включите в ней Режим разработчика.

Затем в классической Панели управления откройте оснастку Программы и компоненты — Включение и отключение компонентов Windows и установите компонент Подсистема Windows для Linux (бета-версия).

Теперь откройте командную строку и выполните команду:

затем ответьте на несколько простых вопросов.

Важно! Для успешной установки WSL вы должны осуществить вход в систему с учетной записью Microsoft.

На этом установка закончена и вас встречает командная строка Linux, можете начинать обживать систему. В этом плане WSL ничем не отличается от обычного Linux, в вашем распоряжении привычный пакетный менеджер и родные репозитории Ubuntu. В Windows 10 1607 это Ubuntu 14.04 LTS, а в выпуске 1703 — Ubuntu 16.04 LTS, которая также была доступна в инсайдерских версиях.

Подсистема установлена, это хорошо, самое время рассмотреть ее типичные применения.

Администрирование Linux-систем

Как известно, для удаленного администрирования Linux нет ничего лучше Linux. Если же ваша основная система Windows, то для работы с Linux серверами вам потребуется сразу несколько инструментов, как правило джентельменский набор составляют PuTTY и WinSCP, если вы используете аутентификацию по ключам, то к ним еще добавится Pageant. Это проверенные временем и эффективные инструменты, но постоянно переключаться между ними не совсем удобно.

Используя WSL, вы окунаетесь в родную среду и вам не нужно постоянно скакать между окнами. Тем более что SSH позволяет делать много интересных вещей. Например, удаленно выполнять команды и скрипты, получая результат на свой ПК. Допустим вы хотите скопировать с рабочего сервера свой конфиг Squid, чтобы разместить его на форуме. Нет ничего проще, выполните что-то вроде:

Первая часть команды соединяется по SSH с удаленным сервером example.com под учетной записью user и выводит в стандартный поток локальной системы содержимое squid.conf. Затем мы выбираем все строки, кроме комментариев, удаляем пустые, и выводим то, что осталось в файл на рабочем столе Windows-системы.

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

Также вы можете легко выполнять на удаленном сервере локальные скрипты, особенно если их размещение в удаленной системе нежелательно (потенциально небезопасны, содержат приватные данные и т.д.). Для этого выполните:

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

Разработка

Если вы занимаетесь разработкой на PHP, Python и т.п. языках, то вы можете отлаживать собственные проекты сразу в родной среде, продолжая при этом использовать привычные инструменты разработки. Достаточно разместить проект в контейнере WSL и одновременно работать с ним из Windows-приложений, так как все данные внутри WSL доступны через обычный проводник.

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

Кроме того, можно и наоборот использовать Linux-инструменты для работы с Windows проектами, например, git. Да, он существует и под Windows, но более удобно работать с ним в его родной среде.

Чтобы создать git-репозиторий, скажем, проекта Visual Studio, достаточно перейти в в его каталог и инициализировать новый репозиторий:

Читайте также:  Options key mac os

Собственно, данная задача — одно из основных предназначений WSL — предоставить разработчикам удобную мультиплатформенную среду. Следует признать, что это у Microsoft получилось.

Сайтостроение

Мы сознательно не стали включать этот вид деятельности в разработку, так как при всей схожести они имеют и достаточно различий. Если разработка подразумевает написание собственного веб-приложения или серьезную доработку существующего, то сайтостроение чаще подразумевает работу с готовыми решениями, а основные изменения как правило касаются внешнего вида и вносятся на уровне шаблона или CSS.

В качестве тестового сервера для такой работы обычно используется что-то вроде XAMMP/Денвер/Open Server и т.д. Нисколько не умаляя достоинств этих пакетов следует признать и их серьезные недостатки. Главный из которых — существенное отличие тестовой среды от производственной, что может породить проблемы при переносе проекта. Это могут быть как ошибки в путях, так и более серьезные проблемы, связанные с неправильным конфигурированием веб-сервера (например, через директивы htaccess), либо отсутствием каких-либо модулей.

Кроме того данные пакеты не позволяют выполнить еще одну важную задачу — проверку производительности и ее тонкую настройку, которую придется выполнять уже в производственной среде.

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

Кроме того, вы можете использовать все богатство инструментов Linux для отладки вашего сайта, например, curl для работы c HTTP-запросами. Да, curl есть и под Windows, но в Linux мы легко можем передать результат по конвейеру и обработать его нужным нам образом. Довольно распространенной задачей при переходе на HTTPS является поиск небезопасного содержимого, обычно это картинки или скрипты подключенные в коде страницы по небезопасному протоколу, эту задачу легко решить, скомбинировав работу двух команд:

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

Работа с файлами и данными Windows

Мы думаем, что каждый, кто работал в Linux отмечал все богатство и широкие возможности консольных утилит в плане обработки и изменения данных. Быстро найти и отобрать по фильтру, произвести замену одного значения на другое, причем все это одновременно и с выводом результата в нужное место. Теперь все это доступно вам и в Windows.

Многие задачи, которые в Windows требуют применения стороннего софта или написания пакетных файлов в Linux часто решаются в одну строку. Например, пакетное переименование по маске:

Приведенная выше команда переименует в текущей директории все файлы JPG с именем типа DSCN1023.JPG в файлы вида My_Photo1023.JPG. Другая распространенная задача — заменить пробелы в именах файлов на подчеркивание. Тоже очень просто:

Задача посложнее. Есть некая база в формате CSV, которая содержит ФИО, телефон и еще некоторую информацию, допустим нам надо отобрать из нее записи по каждому из мобильных операторов. Отлично, набираем в консоли:

После ее выполнения получим новый файл, который содержит записи только с телефонами оператора МТС, коды которого мы указали как условие для утилиты egrep.

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

Читайте также:  Sleep in bash linux

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Что такое подсистема Windows для Linux What is the Windows Subsystem for Linux?

Подсистема Windows для Linux позволяет разработчикам запускать среду GNU/Linux с большинством программ командной строки, служебных программ и приложений непосредственно в Windows без каких-либо изменений и необходимости использовать традиционную виртуальную машину или двойную загрузку. The Windows Subsystem for Linux lets developers run a GNU/Linux environment — including most command-line tools, utilities, and applications — directly on Windows, unmodified, without the overhead of a traditional virtual machine or dualboot setup.

Можно сделать следующее. You can:

  • Выберите предпочтительные дистрибутивы GNU/Linux из Microsoft Store. Choose your favorite GNU/Linux distributions from the Microsoft Store.
  • Запускайте средства командной строки, например grep , sed , awk , или другие двоичные файлы ELF-64. Run common command-line tools such as grep , sed , awk , or other ELF-64 binaries.
  • Запускайте сценарии Bash Shell и приложения командной строки GNU/Linux, включая: Run Bash shell scripts and GNU/Linux command-line applications including:
    • инструменты: vim, emacs, tmux; Tools: vim, emacs, tmux
    • языки: NodeJS, Javascript, Python, Ruby, C/C++, C# и F#, Rust, Go и пр. Languages: NodeJS, Javascript, Python, Ruby, C/C++, C# & F#, Rust, Go, etc.
    • Службы. SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL. Services: SSHD, MySQL, Apache, lighttpd, MongoDB, PostgreSQL.
  • Установите дополнительное программное обеспечение с помощью своего собственного диспетчера пакетов дистрибутивов GNU/Linux. Install additional software using your own GNU/Linux distribution package manager.
  • Вызывайте приложения Windows с помощью оболочки командной строки, похожей на UNIX. Invoke Windows applications using a Unix-like command-line shell.
  • Вызывайте приложения GNU/Linux в Windows. Invoke GNU/Linux applications on Windows.

Что такое WSL 2? What is WSL 2?

WSL 2 — это новая версия архитектуры подсистемы Windows для Linux, которая поддерживает подсистему Windows для Linux, чтобы запускать двоичные файлы Linux ELF64 в Windows. WSL 2 is a new version of the Windows Subsystem for Linux architecture that powers the Windows Subsystem for Linux to run ELF64 Linux binaries on Windows. Ее основными приоритетами является увеличение производительности файловой системы и добавление полной совместимости системных вызовов. Its primary goals are to increase file system performance, as well as adding full system call compatibility.

Эта новая архитектура изменяет способ взаимодействия этих двоичных файлов Linux с Windows и с оборудованием компьютера, но по-прежнему предоставляет то же взаимодействие с пользователем, что и WSL 1 (текущая общедоступная версия). This new architecture changes how these Linux binaries interact with Windows and your computer’s hardware, but still provides the same user experience as in WSL 1 (the current widely available version).

Отдельные дистрибутивы Linux можно запускать с архитектурой WSL 1 или WSL 2. Individual Linux distributions can be run with either the WSL 1 or WSL 2 architecture. Каждый дистрибутив можно обновить или использовать на более старой версии в любое время, кроме того вы можете запустить дистрибутивы WSL 1 и WSL 2 параллельно. Each distribution can be upgraded or downgraded at any time and you can run WSL 1 and WSL 2 distributions side by side. WSL 2 использует совершенно новую архитектуру, которая дает преимущества от работы с реальным ядром Linux. WSL 2 uses an entirely new architecture that benefits from running a real Linux kernel.

Оцените статью