Kогда речь заходит об альтернативных операционных системах, я обычно рекомендую Linux. Многие пользователи, подумывая о переходе на Linux, все же не могут отказаться от некоторых приложений Windows. Как объединить эти два мира — Linux и Microsoft, — взяв из каждого все самое лучшее? Один из способов — двухвариантная загрузка. Однако перезагружать Linux на Windows и обратно лишь для того, чтобы запустить одну-единственную программу, — далеко не лучший вариант. К счастью, существуют и другие возможности.

Такие хорошо известные продукты, как WMWare и Win4Lin, позволяют запускать приложения Microsoft Windows в системе Linux. Правда, без ОС Windows не обойтись — необходима ее полная лицензионная версия.

Продукту WINE (сокращение выражения WINE Is Not an Emulator, т. е. «WINE — это не эмулятор») для запуска программ не требуется копия ОС Microsoft Windows, что позволяет сэкономить на стоимости лицензии. WINE построен на полностью переписанном Win32 API и не содержит ни единой строчки кода Microsoft. Не стоит думать о нем как о Windows — это просто полезный программный слой для запуска некоторых приложений Windows. Более того, WINE — свободно распространяемый продукт с открытым кодом, и его цена вполне доступна. Нужно также иметь в виду, что он предназначен для архитектуры x86, поэтому его можно откомпилировать в системах на основе процессора Intel, работающих под управлением ОС Linux, FreeBSD и даже Solaris. На рабочих станциях Solaris SPARC WINE работать не будет, так как у них другая аппаратная архитектура.

Для желающих поэкспериментировать с WINE приведу адрес, по которому можно загрузить самую последнюю версию его исходного кода: http://www.winehq.com. Вам даже не придется его компилировать, поскольку на сайте имеются ссылки на уже готовые ежедневно обновляемые исполняемые файлы во многих различных форматах. Если же вы захотите получить исходный код и откомпилировать его самостоятельно, то и это сделать несложно:

gunzip Wine-20010824.tar.gz
tar -xvf Wine-20010824.tar
cd wine-20010824
./configure
make depend
make
make install

Код, полученный таким способом, быстро устаревает, отражая состояние разрабатываемого продукта лишь на некоторый момент времени. Чем новее версия WINE, тем лучше будет работать ваше приложение (например, любимая игра), вот почему уже готовые ежедневно обновляемые версии, вероятно, окажутся лучшим решением. Если вы все-таки предпочитаете самостоятельную сборку WINE (возможно, захотите произвести некоторую настройку), то стоит подумать об использовании системы управления параллельными версиями (Concurrent Versions Systems, CVS):

export CVSROOT=:pserver:
cvs@cvs.winehq.com:/ home/wine
cvs login
cvs -z 3 checkout wine

В результате каталог wine появится в каталоге, который был текущим на момент начала процедуры checkout (получение копии файлов из архива). Те, кто еще не копировал что-либо из системы CVS, должны знать, что данное действие похоже на процедуру заимствования из так называемого «тарбола» (tarball — архив структуры каталогов, созданный с помощью утилиты Unix tar(1), где содержится большое количество связанных между собой файлов. Это один из наиболее популярных методов распространения исходных текстов программ в Internet — прим. ред.). Появившееся окно будет в реальном времени отображать список файлов, копируемых один за другим в ваш каталог. После завершения этого процесса можно приступить к описанной выше сборке WINE, начав с шага ./configure. Введите команду cd для перехода из исходного каталога к программам, наберите make regapi, а затем с помощью все той же команды cd вернитесь в исходный каталог.

Для запуска WINE понадобится персональный каталог wine с находящимся в нем файлом config. Для начала этот файл по умолчанию можно скопировать из исходного дистрибутивного комплекта WINE, где он находится в каталоге documentation/samples:

cp documentation/samples
/config ~/.wine/config

Файл config содержит довольно много параметров, поэтому я остановлюсь лишь на некоторых наиболее важных. Прежде всего необходимо задать логический диск С: (выражаясь языком DOS). Это важно, так как именно на диске C: WINE создает свою иерархию каталогов. Среди прочего он определяет местоположение каталогов WINDOWS и SYSTEM. В следующем примере показан раздел файла ~/.wine/config для некоторой конфигурации с гипотетическим диском C:, созданным в /data1/dosc. Путь, соответствующий диску C:, можно выбрать по своему усмотрению:

[Drive C]
Path=/data1/dosc
Type=hd
Label=MS-DOS
Filesystem=win95

Несмотря на то что инсталляция происходит без Windows, необходимо создать некоторые основные структуры Windows. Вы обязаны завести пустые каталоги WINDOWS, SYSTEM и некоторые другие. В нашем примере мне пришлось бы сделать следующее:

cd /data1/dosc
mkdir -p windows/system
mkdir -p windows/Start Menu/Programs

Для WINE имена путей будут представлены в классической нотации MS-DOS:

c:windows
c:windowssystem
c:windowsStart Menu
c:windowsStart MenuPrograms

Чтобы посмотреть, как наши действия отразились на конфигурационном файле WINE, найдите начало раздела [wine]. Нет необходимости что-либо здесь редактировать — данный раздел лишь иллюстрирует всю важность произведенных ранее операций, включая надлежащее определение логического диска C:

[wine]
Windows=c:windows
System=c:windowssystem
Temp=e:
Path=c:windows;c:windowssystem;e:;e:	est;f:
Profile=c:windowsProfilesAdministrator
GraphicsDriver=x11drv

Дополнительные логические диски, например A: или D:, задаются аналогичным образом. Параметр Path — это путь UNIX/Linux к самому устройству. В качестве параметра Type можно задать одно из следующих: hd (для жесткого диска или каталога), cdrom (для устройства CD-ROM), floppy (для дискеты) и network. Например, следующий раздел определяет устройство CD-ROM в качестве диска D::

[Drive D]
Path=/mnt/cdrom
Type=cdrom
Label=CD-Rom
Filesystem=win95

Обратите внимание на параметр Filesystem, который определяет тип файловой системы. Идентификаторы win95 и vfat эквивалентны. Идентификатор msdos указывается при использовании старых 8-символьных имен файлов с трехбуквенными расширениями. Идентификаторы dos и fat — синонимы msdos.

Далее с помощью regapi задайте системный реестр по умолчанию. (Я исхожу из предположения, что у вас нет статуса привилегированного пользователя.) Вернитесь в каталог с исходными кодами WINE и наберите следующее:

programs/regapi/regapi
 setValue < winedefault.reg

А сейчас самое время оставить пока дальнейшее конфигурирование и попробовать что-нибудь запустить. Я собираюсь скопировать одну карточную игру из комплекта Windows в мой псевдокаталог Windows. Для запуска программы под WINE достаточно набрать wine и далее имя программы, которое можно задать несколькими способами. В предположении, что мы находимся в каталоге Windows (смонтированный раздел vfat), подойдет любая из приведенных ниже команд:

cd /data1/dosc/windows ; wine sol.exe
wine /data1/dosc/windows/sol.exe
wine "c:windowssol.exe"
Рисунок 1. Моментальный снимок карточной игры.

На Рисунке 1 показан моментальный снимок известной карточной игры, работающей под WINE.

После запуска первой программы под WINE загляните в каталог $HOME/.wine. Вы обнаружите, что WINE создал несколько файлов системного реестра, их можно идентифицировать по расширению .reg. Обратите внимание также на cachedmetrics:0.0. Впервые запустив ваше приложение с помощью WINE, вы, возможно, заметили несколько сообщений о создании метрик шрифта. Эти метрики хранятся здесь. Вопрос со шрифтами подводит нас к теме особенностей поведения приложений WINE при работе в средах UNIX и Linux.

Раздел [x11dev] позволяет определить, каким образом сеанс WINE запустится и будет взаимодействовать с менеджерами X Window. В нижеследующем примере обратите внимание на строку Managed = N (кроме этой строки данный раздел содержит также и другие строки):

[x11dev]
; Color depth to use on multi-depth screens
;;ScreenDepth = 16
; Name of X11 display to use
;;Display = :0.0
; Allow the window manager to manage
 created windows
Managed = N

Если данный параметр задан равным N, WINE создает окна независимо от текущего менеджера X Window (менеджер X Window не управляет ими). Это можно проверить, запустив какое-нибудь приложение и затем минимизировав его. Кнопки сжатия и развертывания окна являются классическими элементами управления Windows. Подготавливая данную статью, я использовал KDE в качестве рабочей экранной среды, и, когда приходилось минимизировать приложение, полученная пиктограмма свободно перемещалась по рабочей области экрана. При переключении с одной рабочей области на другую она переходила в новую рабочую область, сохраняя свое местоположение. При этом, какое бы окно я ни открывал, пиктограмма всегда оказывалась поверх него. Меня это не устраивало, как, вероятно бы, и вас. Если же параметр Managed установлен в значение Y, приложения, работающие из-под WINE, находятся под управлением оконного менеджера. Минимизированные задачи (в случае KDE) оказываются на панели задач, при этом они не переходят из одной виртуальной рабочей области в другую.

В качестве альтернативы можно вообще закомментировать строку Managed, определив вместо этого параметр Desktop:

Desktop = 800x600

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

ОХ УЖ ЭТИ DLL

Поскольку WINE предназначен для работы в отсутствии Windows, в комплект поставки входят некоторые DLL. WINE может использовать либо их, либо «родные» версии Windows, если таковые имеются в распоряжении. Это указывается в разделах [DllDefaults] и [DllOverrides] конфигурационного файла:

[DllDefaults]
EXTRA_LD_LIBRARY_
PATH=/usr/lib/wine
DefaultLoadOrder = native,
 builtin, elfdll, so

Может оказаться, что некоторые приложения работают лучше с «родными» DLL. Порядок, в котором WINE загружает и использует библиотеки, следует указать отдельно для каждой DLL:

[DllOverrides]
kernel32, gdi32, user32 = builtin
krnl386, gdi, user = builtin
toolhelp = builtin
comdlg32, commdlg = elfdll,
 builtin, native
version, ver = elfdll, builtin, native
shell32, shell = builtin, native

Подключенное оборудование необходимо «прописать» в конфигурационном файле, определив такие устройства, как принтеры и последовательные порты. Раздел, посвященный последовательным портам, не нуждается в пояснении:

[serialports]
Com1=/dev/ttyS0
Com2=/dev/ttyS1
Com3=/dev/modem,38400
Com4=/dev/modem

Печать, безусловно, заслуживает отдельного внимания. Установки для LPT1 (равно как и для LPT2 и LPT3) записываются в разделе [spooler]. Если текст не выводится непосредственно на принтерный порт (как в нашем примере для LPT3), вероятно, потребуется определить очередность печати:

[spooler]
LPT1:=|lpr -Phplj5
LPT2:=|gs -sDEVICE=bj200
 -sOutputFile=/tmp/fred -q -
LPT3:=/dev/lp3

Стиль отображения интерфейсных элементов (например, кнопки или заголовки окон), используемый WINE, определяется параметром WineLook, который расположен в разделе [Tweak.Layout] конфигурационного файла:

[Tweak.Layout]
;;WineLook=xxx (supported
 styles are ?Win31?(default),
 ?Win95?, ?Win98?)
WineLook=Win95
Рисунок 2. Параметр WineLook в действии.

C WineLook, как и с параметром Managed, описанным ранее, можно поэкспериментировать. Какое значение вы выберете для него — это дело вкуса. Рисунок 2 демонстрирует примеры различных стилей отображения.

ЕГО ВРЕМЯ ЕЩЕ НЕ ПРИШЛО?

Напомню, что далеко не все приложения Windows хорошо работают с WINE. Как обстоят дела с интересующим вас приложением, можно выяснить, ознакомившись с опытом его применения другими пользователями. Зачастую небольшая настройка конфигурации или изменение значения какого-нибудь флага выполнения — все, что вам нужно, чтобы окунуться в счастливый мир работы с WINE. Для выяснения, какие игры работают и насколько хорошо, посетите страницу компании LinuxGames, где рассказывается об успешных примерах использования WINE: http://www.linuxgames.com/wine/

Информацию о приложениях общего назначения можно получить, посетив базу данных приложений компании CodeWeavers по адресу: http://appdb.codeweavers.com.

Компания CodeWeavers определила своей задачей (по словам ее сотрудников) «оказание помощи клиентам в перенесении технологий Windows на Linux и другие альтернативные операционные системы». Она работает над созданием дружественной легко устанавливаемой версии WINE. Проект должен завершиться выпуском официальной версии 1.0. Продукт WINE компании CodeWeavers оснащен мастером конфигурации (для редактирования конфигурационного файла) и средством для запуска приложений. Он идеально интегрируется с KDE и GNOME. Загрузить пакет в формате RPM (единственный формат, поддерживаемый в настоящее время) можно по адресу: http://wine.codeweavers.com.

База данных включает ряд позиций и ранжирует их в соответствии с тем, насколько успешной была работа пользователей — начиная с Internet Explorer и заканчивая Word и Excel. На этом сайте можно найти много популярных приложений других компаний-разработчиков. К примеру, я обнаружил, что бухгалтерская программа Quickbooks и почтовый клиент Pegasus — приложения, которыми пользуюсь я сам, — прекрасно работают под WINE. У меня есть друг, который до сих пор считает Lotus Organizer незаменимым приложением. Так вот, WINE и с ним работает очень хорошо.

Конечно, WINE не может удовлетворить всех потребностей пользователей Windows, особенно если речь идет об относительно сложных вещах. Сайт Web компании WINE предупреждает: «В настоящее время WINE находится в процессе разработки и не предназначен для широкого применения». Пока можно говорить лишь о том, что WINE очень хорошо обеспечивает работу ряда приложений и постоянно совершенствуется. Свободное распространение WINE — еще один довод в пользу того, чтобы потратить некоторое время и выяснить, сможете ли вы его использовать и тем самым не только сэкономить на покупке лицензии Windows, но и избежать неудобств двухвариантной загрузки.

Большой объем полезной информации о WINE представлен на сайте автора данной статьи: http://www.salmar.com/marcel/.

Марсель Ганье — президент компании Salmar Consulting, работающей в сфере системной интеграции и сетевого консалтинга. Кроме того, Марсель летчик, пишет произведения в жанре научной фантастики и фэнтази и является соредактором TransVersions — антологии научной фантастики и фэнтази, а также произведений в жанре ужасов. С ним можно связаться по адресу: mggagne@salmar.com.