Обзоры Обзоры 19.10.2004 в 21:00 comment

То ли Winix, то ли Undows…

author avatar

ITC.UAСтажер

Репутація Наднизька

Неделя ИИ на ITC.ua при поддержке

На ITC.ua Неделя ИИ. Мы исследуем, как именно ИИ улучшает жизнь миллионов людей прямо сейчас и что ждет нас в будущем. Партнер проекта – компания Favbet Tech, которая активно интегрирует ИИ в свои продукты.


Использовать лучшее, что есть в двух операционных системах… Если речь идет о Unix-совместимой ОС, то здесь желающему последовать такому достойному призыву приходят на помощь различные эмуляторы платформы Windows. Да и пользователи самой ОС Windows не обойдены вниманием "эмуляторостроителей".



Не маргинальности ради…

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

Итак, прежде чем поспешить установить на свой компьютер что-то из кратко рассмотренного в последующих разделах, постарайтесь сами себе ответить на очень неприятный, но важный вопрос "Зачем мне это надо?". Дело в том, что современные пользовательские операционные системы, прошедшие долгую эволюцию (да-да, речь идет именно о пресловутых ОС семейства Windows, достигших уровня исключительно сложных систем, поддерживающих, например, бинарную совместимость со своими предшественницами) вполне самодостаточны. Для них создано и портировано столько программного обеспечения, что говорить о нехватке чего-либо трудно (единственное, пожалуй, чего не хватает, — это времени, чтобы просто ознакомиться хоть с незначительной толикой уже имеющихся программ). И если вам нужны возможности ОС Unix в Windows просто для того, чтобы "отличаться", лучше сразу оставить это пустое занятие. Также не очень хорош такой подход для знакомства даже с утилитарным инструментальным набором Unix-совместимых ОС: все-таки платформа, даже тщательно упрятанная за самыми мощными надстройками над ядром ОС Windows, дает о себе знать. Поэтому для изучения подходит только установленная Unix-совместимая операционная система. Для автоматизации повседневной работы в ОС Windows более чем достаточна, к примеру, входящая в ее комплект подсистема WSH (ну а многочисленные "родные" и портированные развитые средства скриптинга смело можно назвать даже избыточными). И все-таки есть области применения, где Unix-эмуляция вполне разумна и полезна. Это, в частности, рабочие станции и системных администраторов гетерогенных сетей, и инженеров (научных работников), использующих отработанные бесплатные инструментальные средства GNU.

Microsoft Windows SFU

Об этой разработке мы уже говорили, но без нее наш обзор был бы неполным.
Более того, с нее мы начинаем — не из-за прихоти автора или действия на него
каких-то загадочных сил, а ввиду исключительности SFU. В отличие от конкурирующих
продуктов, SFU — надстройка непосредственно над ядром ОС Windows, во многом аналогичная,
скажем, Unix-совместимой подсистеме Mac OS X — Darwin, надстроенной над ядром
Mach. Что означает: после установки Windows Services For Unix ваш компьютер превращается
в гибрид рабочей станции Windows и "почти совсем Unix". SFU, в свое
время приобретенная Microsoft у компании Interix (более точно можно говорить о
слиянии Interix и Microsoft), на сегодняшний день бесплатна — установочный файл
системы размером почти 228 MB загружается по адресу www.microsoft.com/windows/sfu/.
Для SFU портировано большое количество GNU- и BSD-утилит, доступных с сайта Tool
Warehouse сообщества пользователей этой системы,
здесь же на форумах можно получить квалифицированную помощь по вопросам адаптации
исходных текстов для сборки Unix-программ в SFU. Немалый размер дистрибутива системы
— расплата за полноту SFU, которой для превращения Windows-компьютера в полноценную
рабочую станцию Unix не хватает разве что сервера X Window. Но у "Unix-полноценности"
SFU есть неожиданная обратная сторона. Так, пользователи Unix-совместимых ОС не
найдут в SFU, например, привычные командные интерпретаторы — вместо модных bash
и tcsh здесь использован настоящий классический Korn Shell — ksh, который нечасто
встречается в качестве основного shell в дистрибутивах легально бесплатных ОС.
Естественно, иерархия системных каталогов SFU отражает специфику именно ОС Windows
и ни в коей мере не соответствует никаким спецификациям или стандартам мира Unix.
Кроме того, SFU исключительно тесно интегрирована с Windows, что особенно ярко
проявляется в сетевых аспектах применения рабочей станции под управлением этой
ОС (так, стандартная в Unix сетевая файловая система NFS в SFU допускает аутентификацию
службой Active Directory). Все сказанное означает, что SFU — отличное подспорье
для тех пользователей и администраторов, кто одинаково хорошо знает две платформы
— Unix и Windows и кому они действительно нужны одновременно. Неопытным Unix-пользователям
начинать с SFU не стоит, даже несмотря на отличную сопровождающую документацию:
эта система сложна и требует тщательного изучения всех нюансов как ее инсталляции,
так и эксплуатации.


U/WIN

К сожалению, эта система, относящаяся к условному классу "надстроек
над пользовательской библиотекой", доступна не всем нашим читателям. Ее 90-дневную
пробную версию (работающую без ограничений) можно получить со страницы проекта
на сайте AT&T.
Бесплатную лицензию на право использования U/WIN могут иметь учебные заведения
и исследовательские организации (процесс получения лицензии в этом случае приятен
еще и тем, что дает возможность пообщаться по электронной почте с легендарным
Unix-гуру — самим Дэвидом Корном).

В основе U/WIN лежит библиотека подпрограмм, разработанная с применением стандартного
для Windows Win32 API и библиотек С от Microsoft. По сути, эта библиотека представляет
собой виртуальный системный программный интерфейс POSIX-совместимой операционной
системы (реализованный двумя динамически загружаемыми библиотеками — posix.dll
и ast.dll). Такой подход, принятый командой разработчиков под руководством Д.
Корна, позволяет использовать U/WIN во всех ОС семейства Windows — начиная от
Windows 3.1 и заканчивая Windows 2003 Server. U/WIN содержит почти 200 стандартных
Unix-утилит, есть для этой системы и небольшое количество портированных
приложений
.

Следует заметить, что U/WIN — проект, застывший в своем развитии. Последние изменения в дистрибутиве произошли более чем год назад, коммерческая поддержка системы прекращена. Возможно, кому-то покажется, что немаловажную роль в этом сыграли "освобождение" SFU и наличие еще одного бесплатного конкурента такого класса… Однако Microsoft приняла решение о бесплатном распространении SFU намного позже того, как динамика развития U/WIN уже оставляла желать лучшего, а с прочими конкурентами данная система сосуществовала вполне мирно благодаря более высокому качеству реализации.

Cygwin (и не только)

В принципе, если в описании (да и названии) U/WIN заменить "Unix" на "Linux", можно получить с приемлемой для журнальной статьи точностью общую характеристику этой системы. В ее основе также лежит эмулирующая системные вызовы POSIX-совместимой ОС библиотека (cygwin1.dll). И разработана эта библиотека с применением Win32 API — также, как и ее аналоги в U/WIN. Поскольку мы второй раз об этом говорим, стоит заметить — в принципе, не очень важный с точки зрения пользователя нюанс "происхождения" главного компонента системы позволяет отделить полноценные ОС типа SFU от эмуляторов — системообразующие компоненты SFU применяют только вызовы ядра ОС Windows (справедливости ради следует сказать и о том, что "полноценность" SFU имеет и свои недостатки — хотя бы то, что для работоспособности подобной системы требуется "базовая" ОС определенного класса, например из семейства Windows NT).

Естественно, "Linux-происходжение" Cygwin в первую очередь сказывается на простоте освоения этой системы пользователем, прошедшим школу Unix-совместимых ОС на основе ядра Linux. В отличие и от SFU, и, тем более, от U/WIN, Cygwin — проект достаточно динамично развивающийся. На момент написания статьи версия 1.5.11 (номер версии всей системы в Cygwin "привязан" к версии основной ситемообразующей динамической библиотеки) включает в себя и все необходимое для эмуляции в ОС Windows графической рабочей станции Unix (X-сервер и библиотеки Xlib), и огромное количество портированных пакетов.

В отличие от SFU, где используется традиционный для ОС Windows способ инсталляции, Cygwin предлагает пользователю более привычный для ОС Unix механизм установки небольшого инсталлятора, позволяющего определить перечень необходимых пакетов с последующей автоматической их загрузкой с одного из серверов проекта. После этой процедуры следует уже собственно установка, допускающая вторичный выбор конфигурации. Такой подход дает возможность, например, пользователям с dialup-соединением не тратить слишком много времени и средств на получение минимального, но вполне работоспособного и полезного набора программ.

По качеству сопровождающей документации Cygwin, к сожалению, далеко до своих конкурентов.
Если вы сконфигурировали и установили систему, это вовсе не означает, что для
каждой установленной утилиты найдется справочная страница. С этим можно было бы
мириться, если бы не одно "но" — отсутствие man-страниц для специфических
("ни рыба ни мясо" — "ни Windows, ни Unix") утилит — малоприятный
недостаток. Кроме того, вполне сносная онлайн-документация на эту систему не входит
в базовый дистрибутив и недоступна с помощью программы-установщика, поэтому инсталляцию
Cygwin стоит предварить именно тщательным изучением локальной копии руководства
пользователя (доступной в PDF-формате, например по этому адресу: cygwin.com/cygwinugnet/cygwinugnet.pdf.gz).

Кроме Cygwin существует еще одна, правда, фактически не выделенная в самостоятельную подсистему Unix-эмуляции, разработка. Это "минимальная система", MSYS, окружение, на базе которого строится инструментальный набор MinGW (Minimalistic GNU for Windows, "минималистский набор GNU-утилит для Windows"). На самом деле MSYS — давнее ответвление проекта Cygwin, создатели которого пошли своим путем. В основе системы — также библиотека POSIX-эмуляции, использующая Win32 API. На сегодняшний день MSYS содержит практически все утилиты GNU, и единственным серьезным ее отличием от Cygwin можно, пожалуй, считать ориентированность сообщества разработчиков и пользователей MSYS более на создание программного обеспечения в ОС Windows с применением инструментального набора GNU, чем на создание "полноценного эмулятора Unix". Соответственно, в комплекте MSYS нет реализации X Window.

Самые маленькие…

Перечисленные системы — порождения весьма солидных проектов. Но кроме них есть и созданные разработчиками-индивидуалами маленькие инструментальные наборы, позволяющие добиться приемлемой функциональности с минимумом затрат. Более того, эти разработки формируют третий класс систем, дающих в распоряжение пользователю ОС Windows базовую функциональность инструментального набора Unix. Их можно назвать "естественными для Windows Unix-утилитами" (вот так сложно прозвучит перевод слова native). Программы этого класса не требуют инсталляции, не модифицируют ни реестра, ни системных файлов ОС Windows, используют только штатные библиотеки ОС Windows и работают при установке в любой каталог на любом (в том числе, сменном) носителе.

Главным в перечне таких полезных программ будет, несомненно, обширный инструментальный
набор, предлагаемый проектом GnuWin32.
Он состоит из нескольких десятков наиболее часто употребляемых Unix-утилит, ориентирован
на использование в комплекте со стандартным командным процессором ОС Windows (cmd.exe)
и не располагает "естественной" версией shell, заимствованной из мира
Unix. Любителей пробовать все и вся и при этом не вчитываться в документацию следует
предупредить — ни в коем случае не допускайте подобной "смеси" между
Cygwin и GnuWin32, при которой разделяемые библиотеки двух инсталляций попадут
в один каталог. В таком случае возможны различные нарушения работоспособности
обеих систем.

На основе GnuWin32 энтузиастами создано несколько полезных "самоделок",
основное отличие которых от базовой разработки — введение в состав дистрибутива
командного процессора. Так, небольшой набор UnixUtils
и собранный на его основе дистрибутив UnixKit
предлагают пользователю известную командную оболочку zsh. Оба комплекта включают
в себя минимальные средства интеграции с ОС Windows (примитивные утилиты манипуляции
системным буфером копирования). К сожалению, об уровне документирования этих "самоделок"
говорить вообще не приходится, потому как с ними даже не поставляются man-страницы
к входящим в комплект утилитам. И все-таки иногда готовое изделие стоит того,
чтобы поработать над заготовкой с напильником. Тем более что для пользователя,
имеющего работающую Unix-совместимую ОС, не составит труда "вытащить"
из нее недостающее в UnixUtils. А начинающим пользователям, не желающим по каким-то
причинам связываться с SFU или Cygwin, можно порекомендовать устанавливать отдельно
— документированные порты утилит проекта GnuWin32, "естественную" Windows-версию
командного интерпретатора zsh из одного из приведенных комплектов и руководство
по zsh — с сайта www.zsh.org.

Интерпретируя все

В отличие от всех перечисленных выше программных систем и инструментальных
наборов, среда кросс-платформенного скриптинга Ch компании SoftIntegration
использует в качестве ситемообразующего компонента не библиотеки, а… интерпретатор
языка, очень близкого к стандартному С (точнее, фактически почти ISO C99 стандартного
С). Что, впрочем, совершенно не мешает распространяемой легально бесплатно стандартной
версии Ch размером почти 25 MB обеспечивать пользователя более чем сотней популярных
Unix-утилит и собственным командным интерпретатором (не путать со знаменитым csh
из мира Unix!), язык которого одновременно совместим, естественно, со стандартным
С и оптимизирован для интерактивных применений за счет многочисленных конструкций
и встроенных функций сверхвысокого уровня. При этом Ch можно считать одним из
самых быстрых в приведенном списке эмуляторов. Качество сопроводительной документации
Ch заслуживает "отлично", равно как и его программная реализация. Как
это ни странно, но именно Ch стоит рекомендовать начинающим в качестве наименее
болезненного и затратного способа освоения Unix-подобных систем. По крайней мере,
в среде Ch можно совершенно безопасно и безнаказанно "порезвиться" и
на утилитарном уровне ОС Unix, и на уровне С-программ с их подводными камнями
указателей. "В нагрузку" к этим удовольствиям Ch предлагает весьма развитые
механизмы построения интерактивных скриптов с графическим пользовательским интерфейсом
(при этом скрипты будут кросс-платформенными).

"Мелочи", без которых трудно обойтись

В авторском списке таких "мелочей" первое место занимает очень
симпатичный и полезный набор утилит под названием Outwit.
Эти крохотные программки, "родные" для ОС Windows, созданы на основе
Unix-идеологии — каждая из них выполняет крайне ограниченный перечень функций.
Так, утилита winclip, осуществляющая доступ к системному буферу копирования (clipboard)
ОС Windows, позволяет читать или изменять его содержимое, записывать результат
операции в файл или на вход другой программы с использованием стандартного в ОС
Unix синтаксиса. Программа отлично работает как с Unicode-текстом, так и с растровыми
картинками, помещенными в clipboard. Утилита winreg дает возможность получить
доступ по чтению и записи к реестру ОС Windows как локальной, так и удаленной
машины, команда docprop "вытаскивает" из структурированных OLE-документов
всю метаинформацию (можно ее считать этаким сверханалогом Unix-утилиты file, несмотря
на совершенно различные принципы работы и выдаваемое количество информации), readlink
используется для разрешения имен, на которые ссылаются объекты пользовательской
оболочки Windows.

Хотя во всех перечисленных пакетах есть консольные версии знаменитых Unix-инструментов
"на каждый день", стоит присмотреться и к их более интерактивным аналогам.
Утилита baregrep
представляет собой GUI-вариацию на тему своего аналога командной строки — grep
и красиво "интегрируется" в окружение, сформированное любым утилитарным
набором из раздела статьи "Самые маленькие…" и средствами outwit.
Способности принимать из командной строки шаблоны поиска и копировать в clipboard
его результаты, над которыми пользователь может интерактивно выполнить процедуры
сортировки по различным критериям, делают baregrep весьма привлекательным инструментом.
Равно как и особенность ее исполнения — эта программа не требует инсталляции.
Еще одним полезным дополнением, без сомнения, "растущим из Unix", является
красивая утилита поиска-замены ReplaceEm.
С ее помощью выполняются операции поиска по шаблонам, заданным регулярными и диапазонными
выражениями, с заменой найденных фрагментов текста как в единичных файлах, так
и во множествах файлов. Арсенал таких "интерактивных" исполнений классических
Unix-утилит пополнит и программа FreeDiff
— аналог знаменитой diff.

Пользователям, выбравшим Cygwin, можно порекомендовать обратить внимание на замену
стандартной консоли Windows — разработку проекта Console.
Эта программа отлично функционирует именно с утилитами Cygwin и позволяет улучшить
Unix-эмуляцию в Windows, по крайней мере внешне (шутка). С "родными"
для Windows приложениями Console ведет себя, мягко говоря, странно (в частности,
при выполнении в ОС Windows XP SP2). Если же вы предпочитаете старые "сугубо
настольные" версии Windows (95, 98, ME), можете попробовать использовать
прототип Console — программу eConsole.
Она, конечно, работает и под управлением Windows 2000, и под XP, но в этих системах
ее применение не кажется рациональным.

В завершение…

Ситуация с Unix-эмуляцией в ОС Windows складывается весьма забавная. Мощнейшая система Windows SFU стала легально бесплатной и как-то замерла в своем развитии на версии 3.5, U/WIN фактически не развивается, MSYS вообще не позиционируется создателями как самостоятельный продукт, маленькие "самоделки" и разрозненные утилиты, даже самые удачные, на таком общем фоне глаз не радуют. Единственный активно развивающийся проект — Cygwin. Эти факты могут ровным счетом ничего не значить, а могут и подтверждать соображение, высказанное в начале статьи: современные ОС семейства Windows вполне "идеологически самодостаточны", и для массового применения встроенного в них эмулятора другой ОС очень трудно найти нишу.

Favbet Tech — украинская продуктовая компания, разработчик iGaming-решений. Входит в топ-50 крупнейших IT-компаний Украины по версии DOU. Специализируется на высоконагруженных системах, облачной инфраструктуре и искусственном интеллекте. В 2025 году стала инициатором создания АИ-комитета Ассоциации «ИТ Ukrainе» — первого отраслевого объединения, занимающегося вопросами развития АИ на уровне бизнеса и государства.

Що думаєте про цю статтю?
Голосів:
Файно є
Файно є
Йой, най буде!
Йой, най буде!
Трясця!
Трясця!
Ну такої...
Ну такої...
Бісить, аж тіпає!
Бісить, аж тіпає!
Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: