WINE@Etersoft/Среда для запуска приложений Windows
Среда для запуска приложений Windows
Почему вообще существует необходимость в WINE? Различные программы созданы для различных операционных систем, и большинство из них не будут работать на системах, для которых они не предназначены. Программы, предназначенные для Windows, не смогут работать в Линуксе, потому что не обнаружат привычного окружения (диска C:
, системных библиотек (DLL)).
Для того, кто желает пользоваться Windows и Линукс программами вместе, такая ситуация представляет собой фундаментальную проблему. Обычно проблема решается установкой и Windows и Линукс на один и тот же компьютер, что получило название двойная загрузка
. Когда нужна Windows программа, пользователь загружает компьютер в Windows и запускает программу; Когда нужна Линукс программа, пользователь перезагружает компьютер в Линукс. Эта практика весьма неудобна: пользователь вынужден терпеть неудобство частой перезагрузки машины, при этом программы с разных платформ не могут работать одновременно. Кроме того, наличие Windows в числе операционных систем на компьютере создает дополнительные трудности: программное обеспечение дорого, системе требует наблюдения (например, установки антивируса), требуется отдельный раздел жесткого диска, в том числе и для обмена данными между системами.
Тут нам и приходит на помощь WINE, позволяющий исполнять Windows-программы в Unix-системах.
Терминология
Поскольку речь идёт об использовании технологии, предоставляющей прослойку совместимости для запуска программ, разработанных для ОС Windows, на платформе GNU/Linux или другой Unix-подобной системе, возможна путаница в терминологии. Чтобы не путаться в том, какая именно система имеется в виду, мы будем придерживаться строго последовательного употребления терминов.
'host-система'
OC GNU/Linux или другая Unix-подобная система, в которой установлен и выполняется WINE.
'win-окружение'
Cреда, сформированная WINE, и фактически расположенная в host-системе.
'win-приложение'
Программа, разработанная для ОС Windows, которая выполняется в win-окружении.
'Windows'
Какая-либо операционная система семейства Windows. Упоминается только для сравнения.
Надеемся, что теперь читатель никогда не засомневается, о какой среде идёт речь, а если всё-таки это произойдёт, то он ещё раз заглянет в это краткое предисловие. Более полный глоссарий терминов приведён в последнем разделе.
Технология
Благодаря распространённости ОС Windows на сегодняшнем рынке очень многочисленны приложения, разработанные для этой платформы <ref>Здесь и далее мы будем называть такие приложения win-приложениями.</ref>. Однако зависимость коммерческого приложения от определённой платформы (ОС) может быть не всегда удобной или выгодной. На этот случай существуют средства, позволяющие программам, разработанным для ОС Windows, работать в другой операционной системе. Одним из наиболее развитых среди подобных средств является WINE.
WINE (Wine Is Not Emulator) не является эмулятором операционной системы: то есть он не создаёт изолированной среды для выполнения и не обеспечивает доступ к низкоуровневым системным ресурсам, таким как непосредственный доступ к оборудованию. Задача WINE состоит в том, чтобы, с одной стороны, предоставить win-приложению Win API -- стандартный системный интерфейс операционных систем Windows, а с другой стороны, транслировать запросы win-приложения в соответствующие системные вызовы (Unix API). WINE работает на различных Unix-системах, в том числе на GNU/Linux, FreeBSD, Sun Solaris, MacOS. Таким образом, WINE -- это своеобразная "прослойка" совместимости между win-приложениями и host-системой.
Хотелось бы отметить, что любые программы WINE выполняются в непривилегированном режиме и не требует никакой модификации ядра операционной системы (в том числе динамически загружаемых модулей). Отсюда следует простой вывод относительно безопасности: любые проблемы, которые могут быть вызваны запуском win-приложений, будут ограничены правами доступа того пользователя, который запустил WINE. В результате win-приложения будут подчиняться политике доступа UNIX-системы и не смогут её нарушать. В дальнейшем ядро WINE может быть оформлено в виде модуля ядра Linux, и уровень теоретически доступных привилегий может измениться.
У данного ограничения есть и другая практическая сторона: в WINE нет поддержки низкоуровневого обращения к оборудованию (драйверов оборудования, прямой работы с USB-устройствами). Всё периферийное оборудование следует подключать и настраивать в host-системе: для win-приложений эти устройства могут быть доступны стандартным способом через файловую систему или другие стандартные интерфейсы (например, TWAIN для сканеров, который реализован в WINE как обёртка над библиотекой SANE). Ключи защиты, работающие через USB, используют предложенную в Windows шину USB, которая в WINE реализована через обращение к системной библиотеке libusb.
Наиболее распространённый способ применения WINE -- запуск двоичных win-приложений в Unix-среде. Удобство для пользователей и разработчиков заключается в том, что при этом не требуется никак изменять приложение -- один и тот же вариант годится и для Windows, и для WINE.
Другое, на сегодняшний день пользующееся незаслуженно меньшей популярностью применение -- с помощью WINE разработчики ПО могут компилировать свои win-приложения из исходных текстов непосредственно в двоичные исполняемые файлы для Unix. Опять-таки, это те же самые исходные тексты, из которых компилируются двоичные файлы для Windows.
Инструментарий, предоставляемый WINE, позволяет вести полный цикл разработки win-приложений в среде Linux, обучать программированию. Для создания исполняемых EXE-файлов, запускаемых как в WINE, так и в Windows, используется проект mingw.
WINE состоит из нескольких компонент:
libwine
Библиотека, предоставляющая все функции Win API для win-приложений. По количеству предоставляемых функций её можно сравнить с Qt -- столь широк спектр предлагаемых вызовов: от операций с файлами до построения графического интерфейса и обращения к базам данных.
wine
Среда для исполнения двоичных win-приложений, предоставляет программам окружение, неотличимое от Windows. Это окружение помимо Win API включает реестр, стандартные каталоги и файлы. Реестр является единственной изменяемой информацией, необходимой для работы WINE и win-приложений в нём.
стандартные программы
Некоторые типичные win-приложения: текстовый редактор (блокнот), файловый браузер и т. п.
средства разработки
Средства компиляции и отладки: имеются заголовочные файлы, которые описывают доступное API, компилятор winegcc, представляющий собой обёртку над gcc, отладчик winedbg и прочие вспомогательные утилиты.