Поскольку смотрю, что вопрос подымается довольно часто, решил вставить
свои пару центов.
Из переписки:
Из письма Михаила Шигорина:
On Sun, Nov 17, 2002 at 09:09:13AM +0300, Hihin Ruslan wrote:
> Хотел-бы разместить у себя на сайте (www.ruslandh.narod.ru)
> Ваше HOWTO по Wine(x). Прошу Вашего согласия (так-как не ясно
> на каких условиях (GNU/ или авторская работа) Вы его написали).
Это не я писал, а Сережа Рябчун -- его адрес вроде в документе есть.
Насколько я его понимаю -- против никто не будет, разве что автор считает,
что документ сильно устарел -- но добраться обновить несколько затруднительно.
> По-моему это единственное Howto на русском языке по Wine(x)
Кажется, да. В любом случае рядом осмысленно дать ссылку на http://osdn.org.ua/winex
-- туда Сережа время от времени забрасывает свои сборки "под игрушки".
А еще лучше -- и зеркалить, потому как из России оттуда тянуть может
быть не слишком быстро.
А так -- всегда рады сотрудничать :-)
PS: да -- еще есть рассылка games@linux.kiev.ua, посвященная игрушкам
на линуксе (в т.ч. и тема winex там регулярно звучит); подписка на нее
начинается пустым письмом на games-subscribe@linux.kiev.ua -- эту информацию,
как (думаю) релевантную, можно туда же. Россиян в games@ хватает :-)
Из письма Сережи Рябчуна:
ЗЫ. Вышел winex-2.2.1, соберу, заброшу туда же.
Какой linux ставить?
Здесь я не советчик. Я предпочитаю RedHat
+ часть пакетов с ALTlinux.
Сервер.
Нужен ли сервер или можно обойтись одноранговой сеткой? Ну если у вас
так много денег, что вы в состоянии нанять человека, который будет строить
линух на 8-20 тачек, то зачем вам линух? Купите себе win98 и закройте
тему. Вобщем вопрос не нужен ли сервер, а какой он нужен.
В задачи сервера входит:
- раздать /home и /usr (NFS)
- вы же не хотите администрить каждую геймерскую машину отдельно
- раздать /mnt/floppy и /mnt/cdrom (samba)
- сомневаюсь, что каждая геймерская машина имеет вытягаемые дивайсы;
- почему samba? а я не знаю нормального способа размонтировать
cdrom, смонтированный по NFS под linux
- раздать /где-там-стоят-вин-геймы (samba)
- почему samba, а не NFS? да потому, что так лучше, к тому же
samba мы уже прикрутили floppy и cdrom шарить.
- почему они вообще на сети?
во-первых, см.п.1 ;-)
во-вторых, вы деньги экономите или где? Поставить SeriousSam или
Half-Life на каждую машину, значит купить лицензию на каждую машину.
вы когда-нибудь видели, что-бы в SeriousSam играла вся игротека?
- а как wine отнесется к тому, что игра проставлена на сети?
а кто ж ему скажет, что это network? "Type" = "hd", "Filesystem"
= "win95" ;-)
- а тормозить не будет? нет, больше чем wine сейчас тормозит,
его способна затормозить только сеть на коаксиле.
- раздать /где-там-стоят-геймы (NFS)
- а почему здесь NFS, а не samba?
эти игры ожидают иметь дело с правильной файлсистем, а не с тем,
что им самба изображает. могут быть накладки.
- запустить всякие разные геймерские выделенные сервера
- если вы инетом торгуете, то имеет смысл поставить squid
- ну и, если вы сподвигнетесь ещё и на X-терминалы для инет/офис
юзеров, то сервер вам понадобится для KDE/Gnome/OpenOffice/чего-ещё
пускать
- (-20) фонтсервер, печать, etc.
Думайте, считайте. Для 1-4 за глаза хватит PII300/64M, а вот уже 5-7
потребует чего-то большего. Особенно память.
Геймерские машины.
К сожалению, на сегодня для линукса есть ровно одна фирма делающая
видеокарточки с нормальным opengl и называется nNvidia. С радионом8500
я поигрался два часа, но хоть какого-то 3D там не обнаружил. (прим.
ред.: пока или максимум 7200, или взять R-DDR и все -- 7500 сотоварищи
должны быть в XF86 4.2) Память, ну CounterStrike отъедает 96M+,
так что 128M минимум. Процессор, вообще-то wine/winex в 2D редкий тормоз*,
но как ни странно, часть глюков на Duron800+ исчезают, хотя не странно,
если проследить чего там вызывается.
*поправка - я еще не проверил, но судя по коду в последних winex сильно
поднята скорость в 2D.
HDD от 1Gb, больше не нужно, можете продать свои 20-40Gb, накупить
на металлоломе 4Gb, разницы как раз на сервер хватит ;-)
Получаем D800+/GF2MX+/128M+/1Gb+
Wine/WineX
Как _ЭТО_ собрать ручками?
autoconf
CFLAGS="-mcpu=i386 -march=i686 -O2" LDFLAGS="-s" \
./configure \
--prefix=/usr \
--with-x \
--enable-dll \
--disable-debug \
--disable-trace \
--enable-opengl \
--enable-mesaos
make
(make -k programs)
make install
Заметьте, что c gcc2.96 -mcpu и -march необходимы. Без них на четырёх
_одинаковых_ машинах сделанных через dump/restore я получил совершенно
разные результаты:
- coredump gcc на сборке dlls/ntdll
- coredump wine при первой закачке шрифтов
- неправильная работа мыши в некоторых играх
- правильная, imho, сборка
gcc2.95 собирает правильно, gcc3 бросает кору с простынёй кода, на
котором сдох. gcc2.96-81 из RH71 нормально собирает с -O3, gcc2.96-98
из RH72 с -O3 собирает, но wine бросает кору на старте, с -O2 всё нормально.
Короче, 2.96 - та ещё песня.
Потом ещё нужно сделать programs/regapi/regapi setValue < windefault.reg
для получения правильного регистри. Кстати, если у вас свежепроставленный
wine вывалится с матом на запускать нужно с опцией -desktop, то либо
он не находит правильной регистри, либо winedefault.reg поменялся, те
необходимо regapi запустить снова.
Всё, можете пробовать.
CounterStrike тормозит безбожно.
Ну с меню пока ничего не поделать. Хорошо ещё, что в cvs глюк с запуском
сервера поправлен, правда за счет ещё хужей отрисовки меню, чёрт с ней,
с отрисовкой, зато консоль работает, как надо. А opengl сейчас поправим.
Всё, что нам понадобится, описано в первых 30 строках dlls/opengl32/make_opengl
. Если у вас winex уже
слит, то вам припёрло ;-) Если нет, то лучше слейте,
всё равно вам понадобятся несколько файликов и легче залить winex целиком,
чем кликать мышом по oss.sgi.com
несколько раз на один файл. В winex всё это лежит в dlls/opengl32/specs.
В wine ложим туда же. Прикладываем следующий патч, можно и ручками
--- wine/dlls/opengl32/make_opengl Wed Aug 29 22:37:07 2001
+++ wine-ogl/dlls/opengl32/make_opengl Thu Nov 8 12:54:47 2001
@@ -43,11 +43,11 @@
$ext_file = "opengl_ext.c";
# Set to 0 for removing the ENTER / LEAVE GL calls
-$gen_thread_safe = 1;
+$gen_thread_safe = 0;
# Prefix used for the local variables
-$ext_prefix = "func_";
+$ext_prefix = "";
# If set to 1, generate TRACEs for each OpenGL function
-$gen_traces = 1;
+$gen_traces = 0;
и
(cd dlls/opengl32; ./make_opengl specs 1.2)
make install
О, теперь мы поехали быстрее. На нынешних билдах отставание от нейтива
~20%, а на билдах конца августа-начала сентября около 10%. Можете проверить
с wine-20010824. Там windows.c еще лежит в x11drv, теперь перехала в
wineserver. Вот и получили дополнительный тормоз. В высоких разрешениях
отставание уходит в ноль, здесь уже карта тормозит.
Если судить по тому, что build, который раздается transgaming.com сабскрайберам
бегает шибко быстрее, чем тот, что получается с cvs через configure;make,
то билдят они его именно таким образом.
Стало лучше, но всё равно тормозит безбожно.
Мнээ, а выгрузите-ка саундовые модули и зпретите звук. Полегчало? Значит
вам припёрло. Вам предстоят поиски правильного саундового модуля. В
нескольких случаях мне помогла ALSA
0.9, в одном замена звуковой карты.
SeriousSam не едет.
И не поедет, пока не приложите следующий патчик, kgm, с августа никак
не замылю его в wine-devel, руки не доходят.
--- wine/graphics/x11drv/opengl.c Wed Aug 29 22:37:08 2001
+++ wine-ogl/graphics/x11drv/opengl.c Thu Nov 8 12:56:15 2001
@@ -200,7 +200,7 @@
ppfd->nVersion = 1;
/* These flags are always the same... */
- ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_GENERIC_ACCELERATED;
+ ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_SWAP_COPY;
/* Now the flags extraced from the Visual */
ENTER_GL();
Это с winex, в wine на две строки выше.
Что ставить wine или winex.
Ну, во-первых, winex две ветки. Одна доступна в cvs, другая доступна
только в собранном виде. Пока разница между ними по словам Transgaming.com
только в наличии/отсутствии SafeDisc и SecuRom, но если судить по вялой
активности в доступном cvs, то разницы там больше, хотя может и ошибаюсь
*.
*поправка - это они в другое здание переезжали.
Какого-нибудь кошерного снапшота не было, нет и не будет. Это даже
не бета, это вечная альфа. Что-то правится, что-то ламается. Если сейчас
поправили консоль в CounterStrike, то заламали ONI. Поправят ONI, перестанет
ездить FAKK2 или что-то другое. Это вечная песня. Хотите, что бы оно
у вас хоть как-то работало держите их все, вернее, все под которыми
что-то работает лучше. Те ставить куда-нибудь в
/usr/local/wine${DATE} и /usr/local/winex${DATE}
а запускать через /usr/local/bin/wine${DATE} и /usr/local/bin/winex${DATE}
Надеюсь, что такое PATH и LD_LIBRARY_PATH известно
Вообщем-то я соответствующие wine.spec и winex.spec сочинил. Может
завтра до ума доведу.
Как пускать геймы.
Ессесно, на другом сервере. Причин несколько.
- драйвера от nvidia + wine - сладкая парочка. Лично у меня такого
ни разу не получалось (докаркался :), уже получилось), но видел неоднократно,
при том что в клубах я появляюсь крайне редко. Вобщем wine сносит
X или X сносит wine, клавиатура и мыша блокируются. Остается или зайти
по сетке и сделать ребут или нажать на ресет. Причём надзиратель говорит,
что есть избранные кадры - стоит такому избранному сесть погамить
"и всё у нас пойдет через жопу" (c) ДМБ, дикий прапор. Так и вспомнишь
про стелянный глаз. Но если запущено на другом сервере, то после сноса
обычно таки возвращается на первый X. Кстати, поэтому самое первое,
что должно быть поставлено на геймерскую машину - acpid. Да и ресет
отстегнуть от мамы желательно ;-)
- wm может делать с мышом|кибордом что-то совершенно непотребное.
Не удивляйтесь, если у вас Q3 перестала на клавиши реагировать. очень
может быть, что под Q3 всплыло меню или еще чего. Пойдут вопросы типа
http://www.transgaming.com/showthread.php?msg=1869&forum=7&thread=1869
- у вас двухкнопочные мыши и включена эмуляция третьей кнопки, не
удивляйтесь, что рокетджамп на мыше не выходит.
- StarCraft и иже с ним знает только 640x480. А хочется в фулскрине
и не в ублюдочном, когда физическое и виртуальное разрешение не совпадает,
а нормально.
Поэтому пускаем:
xinit /usr/local/bin/STARCRAFT -- :1 -layout gamer640x16
Правильные layout-ы напишете сами.
А что нужно написать в /usr/local/bin/STARTCRAFT
#!/bin/bash
export WINEPREFIX=/var/wine/apps/starcraft
cd /var/wine/disks/g/starcraft
wine20010824 game
Как ставить геймы.
Самый оптимальный путь - ставить под windows с diff regbefore regafter.
Можно и из под wine, но здесь как получится. Игры требуют cdrom.
Во-первых, не крекайте игру. У нас и так куча проблем, а тут ещё
и непонятно wine глючит или крякалка так крякнула. Во-вторых, неизвестно
как посмотрит на крякнутую игру "Общество защиты Билла Гейтса от
голодной смерти". Так что поделим геймы на три группы:
- не требуют вообще - с этими нет никаких проблем
- требуют наличие файлика на cdrom - тоже понятно, "Path" = "/куда-надо"
- требуют наличие cdrom - для wine /dev/loop выглядит также как
и /dev/cdrom так, что снимаете образ, маунтите его и "Device"
= "/dev/loop" Если гейма может частично ставиться, то для экономии
места так её и ставить. Для некоторых достаточно снять первые
несколько мегабайт образа.
Какой WM пользовать.
А какой угодно. Но у нашего юзера gamer прописано icewm.