Установка и настройка эмулятора Windows — wine

Многие из тех, кто перешел на Linux, сделав ее основой своей рабочей станции, столкнулись с проблемой запуска приложений для Windows операционных систем. Существует много программ, которые написаны для окошек, но еще не были перенесены в другие системы. Для запуска таких приложений используются эмуляторы. Для Linux самыми известными и наиболее распространенными являются win4linux и wine. Так как первая является сугубо коммерческим продуктом и может быть недоступна многим пользователям по ряду причин, я остановлюсь на установке и настройке второй программы.

Установка
Wine вы можете без труда найти в Интернете, но обязательно начните с сайта программы http://www.winehq.com/. Здесь вы найдете ссылки на новые версии программы, исправления, а также много другой полезной для себя информации.
Итак, вы нашли и скачали архив с программой.
У меня архив назывался wine20020905.tar.gz. У вас он будет называться подобным образом, отличия будут состоять только в версии программы.

Далее давайте рассмотрим два варианта установки: от имени какого-либо пользователя с использованием установочного скрипта, входящего в дистрибутив программы, и от имени суперпользователя.
Если у вашей системы нет других пользователей, но вы выбрали первый вариант установки, то давайте их добавим.
От имени суперпользователя используем chmod для изменения прав на пользование файлом. Теперь, когда файл стал общедоступен, добавим нового пользователя в систему. Для конфигурирования и управления пользователями и группами в системе Linux используется два файла: /etc/passwd и /etc/group.


Ну ладно, не буду рассказывать про все тонкости управления пользователями, сэкономим ваше время и приступим к непосредственному добавлению пользователя в систему.

useradd Vadim -u 2002

Если же нам он надоел, набираем команду userdel Vadim, которая удалит всю информацию об этом пользователе из системы.
А в принципе можно добавить пользователей с помощью linuxconf.

Давайте для начала создадим директорию, в которую мы распакуем эмулятор. Пусть это будет /usr/src/wine/. Команды, которые мы будем выполнять, в консоли будут выделены.

mkdir /home/Vadim/wine/

Далее скопируем в эту директорию архив с программой.

cp wineXXX.tar.gz /home/Vadim/wine

Теперь набираем команду su Vadim. Теперь мы работаем от имени этого пользователя.
Так как недавно в КГ рассматривались архиваторы и работа с ними, я хочу, чтобы вы самостоятельно распаковали wine.
Теперь заходим в папку, в которую произвели распаковку, и набираем

./tools/wineinstall


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

./configure

make depend

make

make install

И вдобавок ко всему будет необходимо с помощью команды ldconfig, предварительно поправив файл /etc/ld.so.conf, где записаны пути к различным библиотекам. Очень часто бывает, что после установки пользователь пытается запустить какую-либо Windows-программу и в ответ получает сообщение об ошибке, а именно об отсутствии библиотеки. Так как первым делом используются функции библиотеки libntdll.dll.so. Если у вас возникла какая-нибудь проблема при установке wine, то лучше всего сначала самостоятельно прочитать всю документацию, прилагающуюся к программе, и только потом, если ваша проблема не была рассмотрена, задавать вопросы на форумах. Это касается не только эмулятора Windows.
Я предполагаю, что у вас не возникло проблем с установкой, поэтому давайте займемся настройкой программы.

Настройка
При инсталляции программы был создан файл конфигурации wine, а именно
/<Имя пользователя который производил установку>/.wine/wine.conf

Одной из важнейших секций файла конфигурации является та, в которой указаны корни наших виртуальных дисков. То есть в Windows мы привыкли открывать Мой компьютер, а затем делать двойной щелчок на диске, который там был назван буквой латинского алфавита. В Linux же немного по-другому. Структура носителей на жестком диске нам представляется как разветвленная сеть, имеющая свое начало в корневом разделе, к которому прикреплены каталоги, некоторые из которых у нас могут являться виртуальными разделами жесткого диска, или, если быть точнее, разделами диска, к которым мы привыкли используя Windows.
Предположим, что наш жесткий диск был разбит на 3 раздела. Два имели fat32-систему (диск C и D) и один external2-раздел.

После монтирования этих систем, к примеру:

mount —t vfat /dev/hda1 /mnt/c

mount —t vfat /dev/hda6 /mnt/d

я получил доступ к разделам fat32.

Для того, чтобы не было проблем с приложениями Windows, и они считали, что диск разбит на разделы C и D, мы и пропишем в файл конфигурации:
[Drive C]
"Path" = "/mnt/c"
"Type" = "hd"
"Filesystem" = "win95"

[Drive D]
"Path" = "/mnt/f"
"Type" = "hd"
"Filesystem" = "win95"

Теперь у нас есть разделы, к которым смогут обращаться приложения Windows. Кто знает, может вам захочется использовать файловый менеджер. Нужно дать возможность wine работать с cd-rom’ом. Для этого прописываем в файл конфигурации такие строки:
[Drive G]
"Path" = "/mnt/cdrom"
"Type" = "cdrom"
"Device" = "/dev/cdrom"
"Filesystem" = "win95"

Но и не исключена вероятность того, что вы захотите иметь доступ к вашему корневому разделу Linux, получив при этом доступ ко всей хранящейся там информации.
[Drive H]
"Path" = "/tmp"
"Type" = "hd"
"Filesystem" = "win95"
Теперь приступим непосредственно к настройке самой виртуальной Windows операционной системы.

[wine]
"windows" = "C:\\windows"
"system" = "C:\\windows\\SYSTEM"
"path" = "C:\\WINDOWS;C:\\WINDOWS\\COMMAND;C:\\PROGRA~1\\BORLAND\\DELPHI4\\BIN;C:\\PROGRA~1\\BORLAND\\VBROKER\\BIN;C:\\PROGRA~1\\BORLAND\\VBROKER\\JRE\\BIN"
"temp" = "C:\\WINDOWS\\TEMP"
В этой секции мы указали wine-пути ко всем приложениям и библиотекам, которые должны вызываться без входа в их директории. К примеру, у меня на разделе /dev/hda1, примонтированному к директории /mnt/c, находились программы, для которых должна была производиться автоматическая подгрузка библиотек, причем благодаря такой установке в файле конфигурации их поиск производился в папках, заданных по умолчанию директивой path.

[DllOverrides]
"commdlg" = "builtin, native"
"comdlg32" = "builtin, native"
Благодаря этой секции мы можем задать очередность обращения к библиотекам. Если у нас есть более новые версии или используются библиотеки уже установленного Windows, то есть возможность использовать именно их, а не предлагаемые wine. Но желательно оставлять эту секцию неизменной во избежание проблем с запуском эмулятора и системных сбоев.
Далее идет настройка эмуляции графического интерфейса wine.

[x11drv]
"PrivateColorMap" = "N"
Эта опция включает использование карты цветов, созданной самой wine.
"PerfectGraphics" = "Y"
"ScreenDepth" = "24"
Здесь мы устанавливаем глубину цвета, поддерживаемую вашим монитором и видеокартой. Лучше всего выбирать ту, которая стоит в настройках иксов.
"Managed" = "Y"
Данная функция предоставляет вашему оконному менеджеру управлять окнами, созданными wine.
"Desktop" = "800x600"
Здесь устанавливаем разрешение вашего виртуального десктопа.
Далее идет управление видеопамятью.
"DXGrab" = "Y"
Эта опция позволяет захват событий, связанных с изменением состояния мыши средствами встроенных библиотек DirectX.
"DesktopDoubleBuffered" = "Y"
Лучше всего включить поддержку двойной буферизации экрана. Вдруг нам захочется попробовать запустить приложения, использующие библиотеки openGL.
Оставим остальные настройки по умолчанию.

[Fonts]
Переходим к секции шрифтов. В этой секции мы можем добавить шрифты, к которым привыкли в Windows. Все они прекрасно портируются в wine путем добавления нескольких строк. Если вы захотите добавить шрифт, то можете для начала воспользоваться библиотекой шрифтов, предоставленной в дистрибутиве эмулятора. Если же вам их число покажется маленьким, то, пожалуйста, добавляйте свои! Но не забывайте, что проблем у вас с их установкой не будет при перестановке кодировки по умолчанию на win1251. Но для этого вам придется почитать документацию по грамотной кириллизации Linux.

[serialports]
"Com1" = "/dev/ttyS0"
"Com2" = "/dev/ttyS1"
"Com3" = "/dev/ttyS2"
"Com4" = "/dev/ttyS3"
Здесь, как вы видите, настройки серийных портов. Это для того, чтобы иметь доступ к устройствам, подключенным к ним непосредственно из wine.

[parallelports]
"Lpt1" = "/dev/lp0"
То же для параллельных портов, для работы с принтерами, ключами к программам автоматизированного проектирования, наконец.

[ppdev]
А это секция настройки устройств, которые подключены к компьютеру иными способами, не предусмотренными в wine и для установки обращений к портам ввода-вывода, позволяющих контактирование с устройством.

[spooler]
"FILE:" = "tmp.ps"
"LPT1:" = "|lpr"
Секция, где заданы настройки создания временных файлов, промежуточных измерений, вычислений.

[registry]
В этой секции заданы настройки работы с реестром. Заданы имена файлов, которые представляют реестр, заданы настройки автосохранения при длительном изменении реестра средствами его конфигурирования.

[Tweak.Layout]
"WineLook" = "Win95"
Здесь задаются настройки внешнего вида рабочего стола wine. Предположим, что нас замучила ностальгия по временам windows 3.1. Не проблема! Несколько метких нажатий на клавиши, и вот перед нами графический интерфейс старых добрых окошек.

[WinMM]
"Drivers" = "wineoss.drv"
"WaveMapper" = "msacm.drv"
"MidiMapper" = "midimap.drv"
Последняя и самая интересная секция: указание имен драйверов для переназначения ввода-вывода, для работы миди-устройств, для работы программных синтезаторов таблиц и вообще для всего, что придумаете, хоть для устройств дистанционного управления вашим любимым виндовым winamp’ом. Хотя Linux’овые плейеры круче:).
Wine мы установили, настроили — давайте запускать программы!

Запуск приложений
И вот, наконец, тот момент, которого мы так долго ждали, — запуск приложений.
Когда мы запускаем приложение через wine, мы можем сделать это несколькими способами.
Давайте будем запускать калькулятор.

wine calc

wine calc.exe

Это первый способ запуска приложений. Но не стоит забывать, что все приложения мы так не запустим, так как эмулятор их не сможет найти, а для этой программы мы при настройке установили директорию, в которой она может находиться, c:\\windows\\
Второй способ запуска приложений — это запуск с указанием полного пути к ним в двух форматах: в формате Windows с учетом настроек в файле конфигурации и в формате Unix-систем, то есть сразу, без обходных путей, без использования средств поиска, грубой консольной силой.
wine c:\\windows\\calc.exe; (использование windows-имени)

wine /usr/windows/calc.exe; (использование unix-имени)

Необходимо отметить, что для поддержки параметров исполняемых файлов нужно обязательно использовать полное имя файла, то есть путь и сам файл.

Заключение
Но, увы, не все программы можно запустить с использованием эмулятора. Многие из них могут привести к системным сбоям. Сбои возможны при использовании в программах неподдерживаемых прерываний, при использовании системных вызовов. Wine не может предсказать все, на что способен гений программистов, разрабатывающих программное обеспечение для компьютера. И так как wine не является коммерческим продуктом, его разработчики работают на собственном интересе, они выращивают, модернизируют свой продукт и предоставляют его пользователю.
Если же вдруг произойдет сбой в программе, то произойдет автоматическая загрузка отладчика, с помощью которого вы сможете узнать, по какой причине произошел этот сбой, и получить возможность его исправить либо модернизировав программный код, либо установив недостающие библиотеки.

Не стоит забывать, что, когда вы используете wine, вы подвержены вирусам, написанным для Windows. И на фоне этого может разрушиться неприступность вашей операционной системы. Так что старайтесь не давать возможности Windows-приложениям соприкасаться с важной для вас информацией или вмешиваться в работу Linux’а. Каждое запущенное приложение в противном случае будет нести потенциальную опасность и будет выбивать кирпичики из вашей крепости, несущей гордое название Linux.

Интернет:
Большое количество информации будет доступно вам с ресурсов WineHQ, расположенных на http://www.winehq.com/. Там вы найдете разнообразные путеводители по миру wine, сообщения об ошибках, способы их исправления и многое другое. Этот сайт должен стать опорным пунктом, начальной точкой, от которой начнется ваше углубленное знакомство с wine.
ЧАВО:
Ответы на Часто Задаваемые Вопросы вы сможете найти на http://www.winehq.com/FAQ. Также вам доступны группы новостей, из которых вы почерпнете новую информацию об этом эмуляторе, news://comp.emulators.ms-windows.wine
IRC:
Также помощь в работе с программой вам будет оказана на канале #WineHQ сервера irc.openprojects.net.
 

Вадим Логинов, [email protected] 

© компьютерная газета