Вход:  Пароль:  
FreeSource: WINE/Тезисы ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

WINE как свободная реализация WinAPI: настоящее и будущее


Текст забран для документации и изменению не подлежит.


Отражение доклада на конференции в Обнинске.

Вступление

На сегодня WINE – это единственный способ использовать Windows-программы на рабочих местах без оплачивания лицензий. Другим активно используемым вариантом принести Windows-программу в Linux-систему является подключение по протоколу RDP к Windows, работающему в терминальном режиме.

Что такое WINE

Что такое WINE? Как известно, это не эмулятор, а скорее просто прослойка совместимости между Windows-приложениями и хост-системой (далее рассматривается Linux, но вообще WINE тестируется на различных Unix-системах, в том числе и проприетарных). WINE – свободный проект, выпускаемый под лицензией LGPL.
WINE состоит из нескольких компонент, которые условно можно поделить на три части:

libwine

Библиотека, предоставляющая для Unix-приложений API Win 32?. По количеству предоставляемых функций её можно сравнить с qt – столь широк спектр предлагаемых вызовов – от операций с файлами до построения GUI и обращения к БД.
Если имеется исходный код, программу, написанную для Win API?, можно пересобрать под Linux. Центром libwine является NT-подобная система, работающая со строками только в Unicode, с обвязкой для 8-мибитовых функций.

wine

Среда для исполнения двоичных Windows-программ, предоставляет программам окружение, неотличимое от Windows. Полная имитация, включая реестр, стандартные каталоги и файлы. Части ФС, которые будут дисками в WINE, указываются символическими ссылками в опред. каталоге (dosdevices). Реестр является единственной изменяемой информацией, необходимой для работы WINE и программ в нём.

wine-devel

Средства компиляции и отладки. Имеются заголовочные файлы, которые описывают доступное API, компилятор winegcc, являющийся обёрткой над gcc, отладчик winedbg и прочие вспомогательные утилиты.

Что реализовано

WINE имеет реализацию функций практически всех функций динамических библиотек (DLL), входящий в Windows: начиная от 16-разрядных, заканчивая появляющейся поддержкой 64-битного режима.
Хотелось бы отметить, что WINE всегда выполняется в непривилегированном режиме и не имеет модулей ядра. Проблемы, которые могут быть вызваны запуском Windows-программ, будут носить локальный характер.


Пример реализации одной функции:
нарисовать
user program
Create File?
ntdll
Nt Create File?
wine_server
open_fd


glibc
open
системный вызов ядро

Чего нет и не будет

Нет поддержки драйверов оборудования (поскольку нет и не может быть доступа к оборудованию в пользовательском режиме), нет поддержки USB. Вся периферия должна подключаться к host-системе, например сканер, будучи настроенным в стандартной для Linux системе поддержки сканеров SANE, будет доступен и в WINE через TWAIN-интерфейс, являющийся обёрткой над SANE.

Процесс разработки Wine

Процесс разработки WINE во многом похож на метод, применяемый при разработке ядра Linux. Все присылаемые (в специальную рассылку) патчи подвергаются рассмотрению разработчиков, которые могут высказывать свои соображения и добавления. Имеется один человек, Александр Джулиард, который принимает решение о том, включать ли патч в CVS, и при необходимости совершает в нём какие-то улучшающие изменения (например, исправляет ошибки в оформлении кода). Ведётся контроль и учёт всех отправляемых патчей и их авторства. Перед тем, как принять патч, он проходит автоматическое тестирование – WINE пересобирается с новым патчем, и выполняется регресс-тестирование: запускается тестовый код, написанный практически для каждого API, с помощью которого можно удостовериться, что добавление патча не ухудшает совместимость.


Что сейчас работает

Перечислю приложения, специфически популярные:
– 1C (MS Visual C++)
– Инфо-Бухгалтер (Delphi)
– КОМПАС (компании Аскон), который планируется включить в грядущий дистрибутив ALT Linux 3.0 Compact, как пример упаковки Windows-приложения в RPM-пакет.
– Карта города Top Plan? (питерской фирмы)
Fine Reader?

Сборка в RPM

Сборка в RPM-пакет для Windows-программы – это фактически помещение её в своеобразный chroot, доступа на запись к своим файлам программа (и запускаемая среда WINE) не имеет.
См. Разработчику/RPM.

Что нового

Перспективы

Резюме


25.07.2005, Виталий Липатов, Обнинск


Ссылок на эту страницу нет


 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]