Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #106, ОКТЯБРЬ 2007 г.

Секрет домашнего виноделия

Юрий «bober» Раззоренов

Хакер, номер #106, стр. 096

(zloy.bobr@gmail.com)

Cedega: решение для запуска Windows-игр под Linux

Сейчас для Linux существует достаточно приложений, чтобы решить львиную долю повседневных задач. Что же тебе мешает захлопнуть форточки и оставить на компе одного пингвина? Правильно, игры. Именно игры привлекают многочисленную армию пользователей, но, к сожалению, большинство из них написано исключительно под Windows. Но, надеюсь, с сегодняшнего дня проблем с этим у тебя уже не возникнет. У французов слово cedega ассоциируется с сортом винограда, а нам с тобой оно открывает возможность запуска Windows-игр.

Проект Cedega

Если гора не идет к Магомету, то, как известно, Магомет идет к горе. Так как непросто завлечь разработчиков игр и программ в мир Linux, то исправить ситуацию пробуют путем эмуляции программного интерфейса. Сегодня известно множество эмуляторов, распространяемых по лицензии GPL: dosemu – MS DOS; Cygwin, Wine – Windows; A64 – Amiga; Snes9x - Super Nintendo; Spectemu - ZX Spectrum и т.д. К сожалению, настройка большинства из них - дело нетривиальное, требующее правки конфигурационных файлов и чтения документации до полного просветления. Не каждый решится на такой подвиг, особенно когда нет полной уверенности в том, что любимая контра вообще сможет запуститься.

По прошествии вот уже 14 лет разработок Wine хотя и оброс большим количеством возможностей, но так и не стал панацеей. Да, чудеса случаются: чтобы установить Battlefield 1942, мне было достаточно выбрать в меню Konqueror пункт «Запустить с помощью» и указать Wine. Игра инсталлировалась без проблем, но на этом все приятные моменты, в общем-то, закончились. Запускалась она минут 10, а игровой процесс напоминал охоту за человеком-невидимкой, так как по экрану двигались какие-то тени. Кстати, в KUbuntu 7.04, в подменю Advanced центра «Настройки системы», появился новый пункт «Программы Windows», являющийся по сути еще одним вариантом winecfg. C его помощью можно указать некоторые настройки Wine, но до полного комфорта еще далеко.

Вероятно, поэтому большей популярностью пользуются коммерческие решения, которые построены на основе исходных кодов Wine (www.winehq.com) и позволяют запускать в Linux многие приложения, написанные для Windows. Целых 9 лет (до начала 2002 года) Wine выходил под лицензией MIT, которая разрешала одностороннее использование открытого кода без каких-либо обязательств публиковать изменения. Впоследствии разработчики Wine выбрали более жесткую в этом отношении GPL, но проектам, стартовавшим в 2001 году, этот шаг помешать уже никак не мог.

Коммерческие решения отличаются более понятным обычному пользователю графическим средством настройки и более узкой специализацией. Так, основное направление CrossOver (ранее CrossOver Office, www.codeweavers.com) – поддержка наиболее востребованных офисных приложений, вроде Microsoft Office, Lotus Notes, Macromedia Dreamweaver и Flash MX, Adobe Photoshop, хотя поддерживаются и некоторые игры (Half-Life, Counter-Strike, World of Warcraft). Кстати, в январе этого года была представлена еще одна версия - Crossover Mac, позволяющая запускать Windows-приложения на компьютерах Apple с процессорами Intel. Специализация Cedega (ранее WineX, www.TransGaming.com) понятна даже без упоминания названия компании-разработчика TransGaming Technologies – игры.

Официальный список игр, поддерживаемых Cedega, еще три года назад перевалил за три сотни. Сейчас он насчитывает около 1300 игр (transgaming.org/gamesdb), некоторые, правда, поддерживаются (какой синоним здесь лучше использовать, чтобы не повторяться? Понятия не имею. Здесь нету вариантов. Чуть ниже можно зато скзать не поддержка, а «работа» или «работу с») лишь частично, но все равно в этой области Cedega вне конкуренции. Чтобы остаться на плаву, разработчики следят за новинками, тестируют и улучшают работу с наибоее популярными играми. Отмечается, что многие игры работают в Cedega так же быстро, как и в родной ОС. Для этого добавлена более качественная поддержка API DirectX. Знает Cedega и о некоторых технологиях защиты от копирования, применяемых в современных играх. В последней версии 6.0 появился новый менеджер памяти, улучшена работа с ALSA (теперь Mmap и Dmix могут работать вместе, а значит, можно играть и слушать музыку одновременно), решена куча проблем, и, естественно, увеличился список официально поддерживаемых игр: Need For Speed: Carbon; Madden 2007; Battlefield 2142.

Весь процесс установки, обновления и удаления игр осуществляется через единый центр управления с понятным интерфейсом. И, кстати, для работы Cedega (и CrossOver) наличие установленной Windows совершенно необязательно. Официально поддерживаются дистрибутивы Red Hat/Fedora, SUSE, Mandriva, Debian, Ubuntu, Knoppix, Mepis, Lindows, Gentoo и Slackware.

Cedega распространяется по подписке, которая, помимо возможности получения новых версий программы и права на суппорт (в течение времени действия подписки), позволяет участвовать в голосовании, определяющем, над поддержкой каких игр в дальнейшем следует работать разработчикам. Стоимость ежемесячной подписки - 5 у. е., годовая подписка обойдется в 55 у. е. По окончании подписки программой можно пользоваться неограниченное время, но обновлять ее уже нельзя. Кстати, Cedega доступна и в некоторых дистрибутивах максимальной оснащенности, например в Mandriva Linux 2007 Discovery и PowerPack.

Есть еще один вариант получения Cedega (о Рапиде и подобных сервисах я уже не говорю). Дело в том, что TransGaming открывает часть исходного кода, выкладывая его в свободный доступ через CVS (transgaming.org/cvs), таким образом привлекая сторонних программистов к написанию патчей. Однако в CVS-версии ты не найдешь графического интерфейса и еще ряда разработок, принадлежащих TransGaming. Лицензия Aladdin Free Public License (AFPL), на условиях которой опубликованы исходники, не разрешает использование исходных текстов с целью извлечения какой бы то ни было выгоды. Причем условия подобной лицензии могут в любой момент измениться, в свое время это стало причиной того, что разработчики Gentoo и Debian отказались включать пакеты с CVS Cedega в репозитарии своих дистрибутивов.

Настраиваем 3D

Для работы Cedega 6.0 потребуется ОС Linux с ядром 2.4 и выше, видеокарта класса nVidia GeForce, 60 Мб свободного места на жестком диске плюс дополнительное место для установки игр. Поддерживаются как 32-, так и 64-битные версии систем. В последнем случае сначала нужно установить 32-битные версии библиотек для совместимости. В некоторых дистрибутивах Linux можно сразу приступать к установке Cedega. Но в KUbuntu мне предстояла настройка поддержки direct rendering для своего RADEON X800 GTO, иначе вся эта затея попросту не имела смысла. Вот так можно проверить работоспособность:

$ glxinfo | grep rendering

direct rendering: No

Как я упоминал выше, мне не повезло. Нельзя сказать, что ситуация с драйверами для Радеона в Linux тяжелая, она, скорее, запутанная. Дело в том, что в списке на странице ati.amd.com/support/driver.html ты найдешь драйвер только для самых последних видеокарт, а он по известному всем закону может взять и не установиться. Но не стоит унывать. Во-первых, попробуй запустить одну из более ранних версий драйвера (доступны на ati.amd.com/support/drivers/linux/radeonprevious-linux.html). Например, поддержка карт Radeon 8500-9250, Mobility Radeon 9000/9100/9200 и Radeon IGP 9000/9100/9200 имеется в версии 8.28.8, поэтому в данном случае версии с большим номером бесполезны. Если у тебя еще больший раритет, то придется обратиться к open source проектам. Так, для своего прежнего Радеона 7000 я использовал драйверы проекта DRI (dri.freedesktop.org), благо их включают в репозитарии практически всех дистрибутивов, поэтому выполнять сборку вручную, скорее всего, не понадобится. Кроме карт ATI разрабатываются драйверы и для старых версий Matrox, nVidia SiS и 3dfx; полный список всех поддерживаемых карт доступен по адресу users.erols.com/chare/video.htm. Ну а для All-in-Wonder сразу идем на GATOS (gatos.sf.net).

Со вступлением закончили, переходим к настройкам. Сначала следует отключить пару параметров в xorg.conf:

$ sudo mcedit /etc/X11/xorg.conf

Section "Extensions"

Option "Composite" "Disable"

EndSection

Section "ServerFlags"

Option "AIGLX" "off"

EndSection

Для установки свободных драйверов в /etc/apt/sources.list должен быть подключен restricted репозитарий. Теперь обновляем список и устанавливаем нужные пакеты:

$ sudo apt-get update

$ sudo apt-get install linux-restricted-modules-$(uname -r) xorg-driver-fglrx

$ sudo depmod -a

Переконфигурируем сервер, выбрав драйвер fglrx:

$ sudo dpkg-reconfigure xserver-xorg

С сайта ATI (или с прилагаемого к журналу диска) забираем драйвер под свою карточку (в моем случае это ati-driver-installer-8.38.6-x86.x86_64.run) и загружаем пакеты, необходимые для сборки модуля ядра:

$ sudo apt-get install module-assistant build-essential fakeroot \

dh-make debhelper debconf libstdc++5 linux-headers-generic

Выполняем сборку:

$ sudo bash ati-driver-installer-8.38.6-x86.x86_64.run \

--buildpkg Ubuntu/feisty

В текущем каталоге появится несколько deb-пакетов, устанавливаем все:

$ sudo dpkg –i ./*.deb

Чтобы не было конфликтов со свободным драйвером, вносим следующее изменение:

$ sudo mcedit /etc/default/linux-restricted-modules-common

DISABLED_MODULES="fglrx"

Теперь можно собирать модуль:

$ sudo module-assistant prepare

$ sudo module-assistant update

$ sudo module-assistant build fglrx

$ sudo module-assistant install fglrx

С ядром 2.6.20-15 модуль собираться отказался. Дело пошло, только когда я его обновил до 2.6.20-16. Теперь настраиваем драйвер:

$ sudo aticonfig --initial

Эта команда также не имела успеха, а прибегать к варианту с '--force' не было никакого желания. Поэтому пришлось открыть xorg.conf и в секции Device поменять ati на fglrx (driver "fglrx").

После этого убиваем X (<Ctrl-Alt-Backspace>), загружаем модули:

$ sudo depmod -a

И проверяем:

$ glxinfo | grep rendering

direct rendering: Yes

Отлично, а еще:

$ fglrxinfo

display: :0.0 screen: 0

OpenGL vendor string: ATI Technologies Inc.

OpenGL renderer string: RADEON X800 GTO

OpenGL version string: 2.0.6474 (8.38.6)

Теперь со спокойной душой можно приступать к установке Cedega.

Устанавливаем Cedega

Получить CVS-версию Cedega довольно просто (нужен пакет cvs):

$ cvs -d:pserver:cvs@cvs.TransGaming.org:/cvsroot login

На запрос пароля вводим cvs, после этого создаем локальную копию проекта:

$ cvs -z3 -d:pserver:cvs@cvs.TransGaming.org:/cvsroot co winex

Как выполнить сборку, описано на www.linux-gamers.net. Мы же будем разбираться с файлом, полученным по подписке. Для установки доступно несколько вариантов пакетов (RPM, DEB и TGZ), следует лишь выбрать подходящий для своего дистрибутива. Для Debian/Ubuntu это cedega-small_6.0_all.deb:

$ sudo dpkg -i cedega-small_6.0_all.deb

Команда sudo apt-cache depends cedega-small выдает список зависимостей и рекомендаций, причем в Ubuntu, с ее мягкой системой зависимостей, устанавливаются не все из них. Поэтому обязательно посмотри наличие следующих пакетов: libc6, xlibmesa3 (или libgl1), python, python-gtk2, python-glade2, wget, python2.4-dbus.

Но это еще не все, что требуется для работы Cedega. Мы установили только графическую оболочку, которая сама по себе бесполезна. Запускаем Cedega, выбрав пункт TransGaming Cedega в меню или введя «cedega» в консоли. Принимаем лицензионное соглашение и попадаем в объятия Cedega Setup Wizard, задача которого - помочь нам в настройке. Чтобы установить движок Cedega, тебя попросят ввести учетные данные для доступа к сайту TransGaming. Если у тебя уже есть локальная копия файла cedega-engine-6.0*.i386.cpkg, то просто нажми кнопку Install Local Package и укажи на него. Здесь опять попросят принять лицензию. В следующем окне будет проанализировано железо и выдан результат. Протестировать работоспособность всех компонентов можно на следующем шаге, для этого отмечаем все флажки и жмем Run Selected Test. Все тесты должны быть пройдены. Красный цвет напротив хотя бы одного теста означает, что вероятность дальнейшего успеха быстро стремится к нулю.

Ставим игры

По прошествии всех пунктов перед нами предстанет основное окно программы. По умолчанию интерфейс Cedega сугубо английский, но его очень просто локализовать. Выбираем «Edit –> Language Preferences», нажимаем кнопку Install и получаем с сервера TransGaming список доступных локализаций. Выбираем «locale - ru». В моем случае эта запись стояла первой в списке. Нажимаем OK и перезапускаем Cedega. Теперь можно переходить к установке игр.

Несмотря на все удобства интерфейса, ставить игрушку часто бывает на порядок труднее, чем саму Cedega. Может повезти сразу, и все заработает без какого-либо дополнительного вмешательства, а может выясниться, что именно эта игра именно с этими патчами именно на этой видеокарте не запустится, как не проси. К слову, Cedega поддерживает аж 3 варианта запуска игр. Самый простой - если игрушка уже установлена. Тогда переходим в каталог с исполняемым файлом и запускаем:

$ cedega ./WolfSP.exe

Return to Castle Wolfenstein сдался сразу, без каких-либо других указаний и экзекуций. В некоторых случаях следует указать дополнительные параметры. Например, '-winver' позволит указать эмулируемую версию Windows (win95, win98, nt40, win351, winme, win2k, winxp). Некоторые игры очень привередливы в этом вопросе, нужную информацию можно почерпнуть на сайте проекта или попробовать подобрать настройки вручную.

Аналогично можно установить игру Counter Strike. Просто вводим «cedega autorun.exe», после чего начнется обычная для Windows процедура установки. В процессе тебя спросят, куда следует установить игру, и предложат что-то вроде С:\Program Files\Valve. Беспокоиться не стоит, это означает, что на самом деле игра будет установлена в ~/TransGaming_Drive/Program Files\Valve. Такая структура нужна для эмуляции необходимых для Windows каталогов, чтобы программа чувствовала себя в пингвине как дома. Если перейти в каталог ~/TransGaming_Drive, то можно оказаться в маленькой Винде. Здесь будут каталоги Windows, My Documents и Program Files, внутри которых ты найдешь установленные программы и библиотеки. Однако это еще не все. В особо конфликтных ситуациях можно добавить параметр install с указанием имени каталога. В этом случае программа установится в ее собственную рабочую среду и будет исполняться в собственной копии эмулятора. После установки игру можно запускать из консоли или используя GUI. Да, и главное: если программа установлена в раздел NTFS, а драйвер или параметры монтирования не позволяют запись, то при первой же попытке что-либо сохранить игра вывалится с ошибкой.

Установку программ проще производить именно из GUI. Для начала следует создать отдельную папку с играми, чтобы они не размещались в одной большой куче. Выбираем «Сервис –> Папки с играми –> Добавить» и вводим название игры. Теперь выбираем «Установить» и начинаем заполнять параметры. В поле «Папка с игрой» указываем созданную для этой игры папку. Очень повезет, если игра будет в списке GDDB. Тогда для нее будут автоматически подобраны рабочие установки, а во вкладках «Общие», «Играть», «Установить» и All выведены подсказки (естественно, на английском). Если установка производится с диска, следует нажать кнопки «Монтировать» и «Определить диск с игрой». При установке с жесткого диска жмем кнопку «Найти» и указываем на установочный файл. Теперь можно давить на кнопку «Продолжить».

Если все прошло нормально, настраиваем игру и наслаждаемся. В противном случае следует обратиться к подменю «Дополнительно». Нажимаем кнопку «Редактировать параметры установки» и приступаем к устранению проблем. Здесь 4 вкладки: «Общие», «Звук», «Графика» и «Джойстики». Во вкладке «Общие» указываем версию Windows. Если не знаешь, какую выбрать, ориентируйся по времени выхода игры. Для игр начала века смело выбирай Win98, для современных - WinXP. Назначение остальных вкладок, думаю, понятно.

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

Содержание