Windows подсистема для unix приложений

Подсистема для UNIX-приложений в Windows 7

Отмечена вещь под названием Подсистема для UNIX-приложений в Включение и выключение Windows-функций в Windows 7. Никогда раньше этого не было, и это кажется интересным. Что это такое на самом деле? Для чего это и для чего я могу использовать?

2 ответа

Ранее известный как SFU или Сервисы для UNIX . Это подсистема среды в Windows, обеспечивающая полное соответствие требованиям POSIX и огромную нагрузку на инструменты, которые обычно поставляются с системами UNIX.

Как подсистема подсистемы , это означает, что он запускает рядом с API Windows, непосредственно поверх ядра. Таким образом, он больше не эмулируется, чем собственный API Windows, и поэтому работает намного лучше, чем cygwin, например. 1

Он предназначен в основном для создания и запуска приложений UNIX непосредственно в Windows, поэтому, если ваша любимая программа UNIX не поставляется с портом Windows, вы можете попробовать создать его в SUA:

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

Текущая версия SFU содержит:

  • Более 350 утилит Unix, таких как vi, ksh, csh, ls, cat, awk, grep, kill и т. д.
  • Компилятор GCC 3.3, включает и библиотеки (через MS libc)
  • Cc-подобная оболочка для компилятора C /C ++ для Microsoft Visual Studio
  • Отладчик GDB
  • Сервер и клиент NFS
  • Демон pcnfsd
  • Инструменты и библиотеки X11
  • Инструменты для создания точек монтирования NFS отображаются как общие папки Windows, и наоборот (услуги шлюза)
  • Возможности сервера NIS, связанные с Active Directory (AD)
  • Некоторые инструменты синхронизации информации проверки подлинности Windows /Unix

SFU не содержит следующие (но двоичные файлы доступны для отдельной установки):

  • bash, OpenSSH, sudo, CVS, ClamAV, bzip2, gmake, curl, emacs, Apache, XView, Ruby, Tcl, Python

Так как SUA не пытается быть Linux или BSD, а просто POSIX, это также может означать, что многие программы, которые полагаются на вещи, зависящие от платформы, могут не создавать или запускать. На ум приходят сценарии оболочки, которые предполагают bash вместо sh или системных вызовов, специфичных для Linux. В настоящее время написано очень мало программ, которые могут запускаться непосредственно в любой POSIX-совместимой системе. Также версия gcc, которая включена, несколько старая, что означает, что она может не поддерживать вашу самую последнюю C99 + доброту.

1 Он по-прежнему зависит от ограничений, связанных с Windows, таких как медленное время запуска процесса, поэтому экстремальное форсирование будет по-прежнему очень медленным, поэтому вы будете ждать возраста для многих ./configure или некоторые make-файлы для выполнения.

Вы можете использовать пакеты стиля BSD для установки /удаления программного обеспечения. Вы можете получить доступ к SUA через SSH, если у вас установлен OpenSSH.

Подсистема для приложений на базе UNIX

Подсистема для приложений на базе UNIX (Шаблон:Lang-en, SUA), также известная как Сервисы Microsoft Windows для UNIX (Шаблон:Lang-en, SFU) — программный пакет, разработанный компанией Microsoft, обеспечивающий подсистему UNIX и другие части среды UNIX на системах семейства Windows NT и более поздних. Расширена из ограниченной подсистемы POSIX Windows NT, и в дальнейшем заменила её.

Начиная с версии 3.0 (Windows XP, 1999 год) использует подсистему Interix [1] , которая была получена компанией Microsoft в 1999 году как часть имущества Softway Systems [2] . В Windows Server 2003 R2 было переименовано в Подсистему для приложений на базе UNIX.

Подобно подсистеме POSIX в Windows NT, Interix не эмулирует ядро UNIX, а реализует подсистему пользовательского режима, работающую напрямую на ядре Windows NT.

Содержание

Состав [ править | править код ]

Как и подсистема Microsoft POSIX в Windows NT, Interix не эмулирует работу ядра Unix, это лишь реализация на уровне пользователя, запущенная поверх ядра Windows NT.

Важно, что и Cygwin (свободная альтернатива Interix), и Windows Services for Unix предлагают заголовочные файлы и библиотеки, что упрощает перекомпиляцию приложений Unix для их использования в Windows. Естественно, форматы исполняемых файлов Windows и Unix по-прежнему остаются несовместимыми.

Текущая версия включает:

  • Более 350 утилит Unix, таких, как vi, ksh, csh, ls, cat, awk, grep, kill, и т. п.
  • компилятор GCC 3.3, в том числе заголовочные файлы и библиотеки (через Microsoft libc)
  • cc-подобный упаковщик для C/C++ компилятора командной строки Microsoft Visual Studio
  • отладчик GDB
  • сервер и клиент NFS
  • Демоны pcnfsd
  • Утилиты и библиотеки X11
  • Утилиты для монтирования ресурсов NFS как разделяемые каталоги Windows, и наоборот (гейтвеи)
  • Сервер Network Information Service, сопряжённый с Active Directory
  • Некоторые утилиты синхронизации токенов аутентификации Windows и Unix
Читайте также:  Windows installer service перевод

SFU не включает в себя (однако возможно установить отдельно):

SFU не содержит встроенного X-сервера (только утилиты и библиотеки, как упоминалось выше), но может быть использован практически любой из имеющихся, например, Cygwin/X, Xming, WeirdMind или WeirdX.

Версии [ править | править код ]

Последний релиз — 3.5 от ноября 2007 года.

Windows Server 2003 R2 содержит довольно много предустановленных компонентов SFU, в том числе сервисы Microsoft для сетевой файловой системы (NFS), подсистема для приложений UNIX (Interix) и управление аутентификацией для UNIX.

Windows Vista Enterprise и Ultimate Editions также содержат элементы SFU, переименованную в подсистему для приложений UNIX (Шаблон:Lang-en, SUA).

Microsoft не планирует далее выпускать отдельные версии данного пакета. Возможность скачать последнюю версию с официального сайта будет доступна, по крайней мере, до 2009 года, официальная общая поддержка оканчивается в 2011, расширенная поддержка — в 2014.

Поддерживаемые операционные системы (для версии 3.5) [ править | править код ]

Microsoft Windows Services for UNIX предназначен для Windows редакций Server и Professional. Потребительскими версиями Windows не поддерживается.

  • Windows 7 Enterprise/Ultimate Edition родная (native) поддержка (пакет встроен в систему)
  • Windows Server 2003
  • Windows XP Professional с Service Pack 1 или более поздним
  • Windows 2000 Server или Professional с Service Pack 3 или более поздним

Перемещаем приложения UNIX в WINDOWS с помощью SUA

Корпорация Microsoft обеспечивала поддержку приложений UNIX для своих операционных систем, начиная с выпуска Windows NT 3.1, которая имела совместимую с POSIX подсистему.

Корпорация Microsoft обеспечивала поддержку приложений UNIX для своих операционных систем, начиная с выпуска Windows NT 3.1, которая имела совместимую с POSIX подсистему. Поддержка приложений UNIX и интероперабельность постепенно расширялись, и разработчики Microsoft реализовали такие функции, как поддержка сети, демонов и даже X Window. С выпуском Windows Server 2008 и Windows Vista, вероятно, настало время предприятиям подумать о перемещении приложений для бизнес-применения из UNIX в Windows, используя подсистему Microsoft для приложений, основанных на UNIX Subsystem for UNIX-based Applications (SUA). Узнать некоторые функции этой подсистемы и установить ее легко: загрузите нужные инструменты, проверьте возможности, которые предлагает SUA для традиционных приложений UNIX, и измените приложение UNIX, чтобы запустить его на Windows.

Установка SUA

Прежде чем начать использовать SUA, который включен в Server 2008 и Vista, нужно установить и запустить этот компонент. В панели управления в модуле Programs and Features щелкните на Turn Windows features on or off в панели слева. В Vista в диалоговом окне Windows Features следует выбрать флажок SUA, как показано на экране 1, и нажать OK. Если вы используете Server 2008, запустите Server Manager, затем правой кнопкой щелкните на Features, выберите Add Features из контекстного меню и установите флажок для Subsystem for UNIX-based Applications (необходимые системные файлы были скопированы ранее, когда вы устанавливалась Windows Server 2008 или Vista).

В папке SUA, которая появляется в меню All Programs впоследствии, видим два пункта. Файл подсказки Help поможет в освоении новых функций подсистемы. Пункт Download Utilities перенаправит в Microsoft Download Center, откуда можно загружать утилиты и набор средств разработки SDK для SUA. И 32-разрядная, и 64-разрядная версия SUA доступны на Server 2008 и Vista. Загрузите и установите комбинированный пакет, содержащий утилиты и SDK, которые имеют разные размеры (от 193 до 210 Mбайт) в зависимости от версии и операционной системы. SDK доступен для любых систем, на которые вы портируете или для которых вы будете компилировать приложения для UNIX. То же самое относится к утилитам, имеющим программные оболочки в стиле UNIX. При загрузке вы получите исполняемый файл архива. Потребуется указать каталог, куда файлы будут разархивированы для последующей установки.

В процессе установки система запрашивает имя, согласие с условиями лицензионного договора и предлагает стандартный или выборочный вариант установки. Стандартный вариант предполагает размещение используемых файлов в C:WindowsSUA и соответствующую настройку системы. Однако я рекомендую указать выборочную установку и установить только те компоненты, которые действительно нужны, такие как поддержка систем BSD и UNIX, утилиты GNU, SDK и подключаемый модуль для Visual Studio. Если решено установить GNU SDK, нужно принять условия лицензионного договора, с названием GNU Lesser General Public License, копия которого устанавливается вместе с SDK.

Единственный шаг в работе мастера, на который необходимо обратить особое внимание, — это настройки системы безопасности, показанные на экране 2. Появляющиеся параметры (как в стандартной, так и в выборочной установке) зависят от ваших предпочтений в ходе установки. Параметр Enable Su To Root behavior for SUA programs позволяет приложениям выступать от имени пользователя root (это аналог учетной записи Administrator в системе Windows), когда активирована функция User Account Control (UAC). Во многих случаях системные приложения и процессы, такие как демоны в системах UNIX, требуют этой возможности; действия конечного пользователя, такие как ввод данных или пользовательские настройки программ, редко требуют подобной функциональности. Второй параметр позволяет управлять настройкой setuid, которая связана со способностью приложений UNIX выступать от имени собственника программы. Распространенный сценарий в системах UNIX — это когда данный параметр позволяет пользователям, которые обычно не имеют доступа к базам данных или файлам, запускать приложение в качестве собственника ресурса и получать доступ, контролируемый приложением. Всякий раз по возможности отключайте эту функцию.

Читайте также:  Palo alto global protect linux

Третий параметр — включать ли в Windows чувствительность к регистру вводимых символов. По умолчанию в Windows этого нет, и можно получить доступ к файлу README. TXT, открыв readme.txt. Делая Windows чувствительным к регистру вводимых символов, вы можете разместить разные файлы в той же папке, и их имена будут отличаться только регистром ввода, например README. TXT, Readme.Txt и readme.txt. Взломщик, знающий о том, как получают доступ к таким файлам, может использовать это. Я рекомендую вам не делать Windows чувствительным к регистру, а заняться проблемами с регистром символов при портировании приложений. Описание проблем с безопасностью для всех параметров можно найти в файле Install.htm в C:WindowsSUA.

Исследуем SUA

После того, как вы установите утилиты и SDK для подсистемы, дополнительные пункты меню присоединятся к группе программ SUA, включая (зависит от вариантов установки) программные оболочки C и Korn, файл с последними изменениями и ссылку для проверки критических обновлений. Самый простой способ исследовать подсистему — это запустить новый продукт в одной из установленных командных оболочек. Тогда вы сможете исследовать файловую систему подсистемы, используя cd и ls — команды UNIX, как показано на экране 3.

Корневой каталог файловой системы смонтирован к каталогу установки SUA, как показано на экране 4. Чтобы раскрыть файловую систему и получить доступ к локальным и сетевым дисководам Windows, используйте устройства файловой системы, расположенные в /dev/fs. Например, dev/fs/C позволяет получить доступ к корневому каталогу или диску C;/dev/fs/Z дает доступ к сетевому диску, смонтированному как диск Z; а /dev/fs/C/Windows предоставляет доступ к папке Windows.

При использовании команды cd или написании пути к этой команде следует помнить, что в UNIX нужно использовать прямой слэш (/), а не обратный (), как в Windows. Просмотр известных каталогов для исполнимых файлов, таких как/bin,/usr/bin (который является символической ссылкой к /bin),/usr/local/bin и /usr/sbin, открывает много утилит командной строки, известных пользователям UNIX (например, cp, rm, mkdir, find, size, join, sort). В других каталогах можно найти поддержку подсистемы X Window, sendmail и служб сети, а также демонов. Последнее я опишу позже.

Можно просмотреть запущенные процессы подсистемы, используя команду ps. Изначально команда Ps возвращает только процессы, запущенные пользователем из оболочки. Если вы применяете сложные программные оболочки или хотите осмотреть процессы подсистемы и всей Windows, которые запущены, можете использовать команду ps с ключом х (для информации обо всех процессах, принадлежащих пользователю) или с ключом А (для информации обо всех процессах в системе).

Чтобы получить информацию о ключах, поддерживаемых каждой командой, можно использовать команду man оболочки. Сами программные оболочки богаты возможностями, и вы можете использовать их, как при работе в системе UNIX. На экране 5 показан сценарий программной оболочки Korn, используемый для распаковки с помощью zip и tar дистрибутива XFree86 UNIX, который поставляется в виде нескольких файлов. Программная оболочка Korn — это интерпретатор командной строки UNIX, аналог cmd.exe в Windows, но более гибкий. Tar — это команда, которая используется для создания архивов файлов и извлечения файлов из имеющихся архивов.

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

Запуск SUA, демонов и сетевых служб

Запуская Vista, вы запускаете и подсистему UNIX. Как и UNIX, наша подсистема имеет процесс init, который читает файлы запуска из папки/etc/rc2.d, содержащей символические ссылки на файлы в каталоге/etc/init.d. В системе UNIX у вас были бы дополнительные папки, такие как rc3.d и rc4.d, представляющие каждый уровень исполнения и состояние, в котором может быть система, такое как «однопользовательская», «без поддержки сети», «в нормальном режиме и запущена». В отличие от систем UNIX, SUA работает только с уровнем исполнения 2. Названия сценариев в rc2.d начинаются с Snn (для сценариев, вызванных при запуске) или с Knn (для сценариев, вызванных при завершении), где nn — двузначное число, используемое для указания порядка, в котором вызываются сценарии. Сценарий, который заканчивается на 00, вызывается первым; тот, который заканчивается на 99, — последним. Такая поддержка запуска и завершения демонов упрощает их подсоединение к Windows Vista.

Подсистема обеспечивает поддержку служб, запущенных inetd (диспетчером служб, который управляет службами Internet), таких как серверы Telnet, FTP, и TFTP. SUA поддерживает IPv4 и IPv6. Чтобы активировать сетевые службы, отредактируйте файл/etc/inetd.conf и снимите символ комментария у стандартной службы или добавьте собственную. Если у вас есть сетевая служба UNIX, запущенная inetd, SUA будет поддерживать службу после ее портирования.

Читайте также:  Microsoft windows 10 timing

Поддержка X Window

Как уже упоминалось выше, SUA поддерживает X Window. Однако подсистема нt включает в себя X Server, поэтому необходимо либо приобрести и установить коммерческую версию сервера Х Window, такого как Exceed jn Hummingbird (www.hummingbird.com), либо недорогой или бесплатный Х Server, такой как SourceForge.net (www.sourceforge.net).

С установленным и запущенным Х Server можно работать с программами X Window, которые поставляются с подсистемой SUA, в том числе такими, как xeyes, системные часы, с названием xclock, и xterm (стандартный эмулятор терминала для X Window). Подсистема также дополнена менеджером X Window: twm. Вдобавок X Window поддерживается со стороны SUA заголовочными файлами и библиотеками, необходимыми для создания приложений X Window.

Сценарии оболочки для портирования

С полностью функциональными оболочками C и Korn и привычными инструментами обработки данных, такими как sort, uniq и col, портирование большинства сценариев оболочек должно быть сравнительно легким. Здесь подходящие кандидаты — сценарии, которые преобразуют данные из файлов, например сортируют или соединяют их, удаляют копии или отфильтровывают выбранные столбцы, до того как они будут загружены или после извлечения из базы данных, а также сценарии, которые использует FTP для отправки или получения файлов данных. Клиент и сервер FTP, которые поставляются вместе с подсистемой SUA, являются более функциональными, чем их аналоги в Windows. Многие организации до сих пор полагаются на FTP, чтобы перемещать большое количество данных, и на системы UNIX, если дело касается дополнительных функций и настраиваемых клиентов FTP.

Компоновка приложений Cи и C++

SUA поддерживает портирование приложений Cи и C++ из UNIX, но необходимо учитывать некоторые моменты. Подсистема поставляется с поддержкой компиляторов Cи и C++ GNU. Однако по умолчанию для компилятора используется интерфейс среды Microsoft Visual Studio, которая должна быть установлена. Visual Studio может использоваться для компиляции приложений, написанных только в Cи, но не в C++. На экране 6 показано содержание Makefile — простого файла на Си — и пример того, что происходит, когда запускается команда make.

Если у вас нет Visual Studio, и вам нужно компилировать исходный код на C++ или вы просто предпочитаете использовать компиляторы GNU, можете сделать это, вызывая gcc или g++. Используя компиляторы GNU, обращайте внимание на расширение файла. Например, файл с исходным кодом на C++ в Windows обычно имеет расширение cpp, но компилятор g++ ожидает от файла с исходным кодом на C++ расширения .cc. Если у файла неправильное расширение, вы можете столкнуться со случайными ошибками, особенно на платформах с 64-разрядной архитектурой. Я рекомендую проверить файлы подсказок SUA и последние исправления; эти документы содержат полезную информацию, которая поможет избежать затруднений.

В каталоге/usr/examples можно найти пример исходного кода, который показывает, как использовать Oracle Call Interface (API для базы данных Oracle) и ODBC API. Пример демонстрирует, как использовать процедуру клиента Open Network Computing для вызова удаленных процедур.

При портировании пакетных приложений для SUA вам, возможно, придется менять сценарии командной оболочки, которые можно использовать для просмотра системы и создания файлов makefile, необходимых для компоновки приложений. Сценарии более старых версий, особенно config.guess и config.sub, работают в подсистеме не слишком хорошо; я рекомендую загрузить последние версии этих сценариев с сайта ftp.gnu.org до портирования приложений.

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

Другой мир

Итак, мы познакомились с подсистемой для приложений, основанных на UNIX, которые дополняют Server 2008 и Vista. Эта подсистема обеспечивает реальную альтернативу системам UNIX для многих предприятий, позволяя им исключать устаревшие системы UNIX за счет перемещения приложений на Windows Server 2008 или Vista. Функционально богатые программные оболочки подсистемы, средства управления файлами, легкий запуск демонов и сетевая поддержка действительно делают развертывание и управление некоторыми сценариями и утилитами в SUA более простым, чем в среде Windows.

Джон Хоуи (jhowie@microsoft.com) — руководитель подразделения World Wide Services and IT Technical Community for Security компании Microsoft. Имеет сертификаты CISSP, CISM и CISA

Проблема Со времени Windows NT 3.1 система Windows поддерживала приложения POSIX. Однако недостаток встроенных функций и инструментов требовал подключения приложений UNIX к Windows, так что пользователям приходилось приобретать и использовать инструменты независимых фирм.
Решение Установите подсистему для приложений, основанных на UNIX, Subsystem for UNIX-based Applications (SUA) для Server 2008 и Vista.
Что нужно Server 2008 или Vista, связь с Internet, пакет X Server (необязательно)

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