nixp.ru v3.0

24 мая 2017,
среда,
20:44:54 MSK

DevOps с компанией «Флант»
Аватар пользователя rgo
rgo написал 1 октября 2012 года в 14:02 (1528 просмотров) Ведет себя неопределенно; открыл 61 тему в форуме, оставил 1602 комментария на сайте.

Мне тут в голову моча ударила, я возжелал запустить TDR2000 под wine и вспомнить детство. Но всё оказалось не так просто. TDR2000 проверяет наличие нужного цдрома и `mount -o loop …' не спасает. При этом мне никак не найти no-cd кряка совместимого с wine: все что нашёл позволяют запускать tdr, но убивают графику в хлам. Я пробовал уже ставить dx майкрософтовский; с настройками графики в игре возится, ничего не помогает. Судя по тому что на appdb.winehq написано что игра запускается практически без проблем с no-cd кряком, я склонен считать что у меня не те кряки.

Хочу попробовать получить виртуальный цдром в линуксе, судя по appdb это не поможет, но есть у меня пара идей на этот счёт. Но идеи проверить не удаётся, поскольку какая-то засада с cdemu… Когда я демона запускаю вылазит надпись:

cdemu0: Mapping: device mapping (SCSI CD-ROM) for device #0 could not be determined; device mapping info for this device will not be available

И как я понимаю, работает всё кроме того, что в /dev/ не появляется нод /dev/cdemu0. То есть при попытке смонтировать образ, он судя по всему монтируется. Я даже могу увидеть, что смонтировано при помощи `cdemu device-mapping’. Но девайс-нод не появляется, и я не могу его ни смонтировать, ни проиграть аудио-дорожки на нём, вообще ничего.

Гуглил. Такая ошибка в гугле есть лишь одна, и там она решилась при помощи `modprobe loop’. Но у меня луп в ядро вкомпилирован статически. Пересобрал ядро выкинув луп в модуль (и заодно fuse), сделал все необходимые modprobe, изменений никаких не заметил.

Причём если я пытаюсь подгрузить .iso, чтобы получить результат аналогичный mount -o loop, то демон cdemud аварийно завершается с ошибкой: gmem.c:170: failed to allocate 4294660588 bytes. В dmesg при этом появляется: «cdemud[6911] trap int3 ip:7fbb0c34c695 sp:7fff2584fdc0 error:0». Но .nrg, .ccd/.sub/.img грузятся. Или делают вид что грузятся.

Any ideas?

 

ps. Да, если у кого-нибудь cdemu запускается, я был бы рад если бы вы выложили здесь что он при этом пишет в консоль и в dmesg. Конечно же всё это можно выяснить из сорцов, но у меня пока не стоит на эти сорцы. Не хочется туда лезть.

rgo

pps. да, я так литературно начал, что может сбивать с толку. Но собственно мне очень любопытно cdemu запустить. TDR тоже неплохо было бы, но когда не запускается tdr под wine — это проблемы tdr. Но когда родной линуксу cdemu не запускается, мне обидно становится. =)

rgo

Глупость конечно, читать внимательнее надо… Дело оказывается было в том, что в ядре поддержки SCSI было маловато. Надо включать поддержку SCSI диска и цдрома. =)

После этого замечательно работает. Правда tdr’ке это не помогает. =(

rgo

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

Итак, tdr’ка не запускалась даже с полноценно эмулируемым сцдромом в linux. Собственно непонятно на что я надеялся, поскольку в appdb.winehq.org было чёрным по-английски написано, что wine не может изобразить для TDR цдром достаточно хорошо, и даже наличие лицензионного диска не избавляет от необходимости использовать no-cd кряки.

Поковыряв проблему я выяснил что всё дело в emul-linux-x86-opengl. mesa-7.x которая ставилась оттуда была недостаточно хороша. С разными путями решения проблемы я повозился.При этом оверлей multilib использовать у меня нет никакого желания, ставить древние пропиетарные дрова, которые ещё содержат поддержку моей 4850 я так же не хотел. В итоге я собрал 32-х битную генту в chroot. И gallium с r600 из mesa-9.0 вполне справились с задачей. Правда, один косяк всё же остался: очень часто в игре начинаются лаги. Точнее не то чтобы «начинаются», они либо есть, и хрен от них избавишься, либо их нет, и они не появляются. От чего зависит наличие/отсутствие лагов я понять так и не могу. Судя по-всему настройки графики не влияют. Карта тоже. Наличие/отсутствие педов/трафика тоже фиолетово. Такое ощущение что дело в фазе луны.

Причём лаги эти, по-моим ощущениям, вызваны тем, что TDR’ка где-то блокируется. То есть подвисает на каких-то вызовах API. ЦП используется далеко не на полную, бывают пики на 60%, не больше. Всё остальное, что могло повлиять я прибивал. В общем, были бы сорцы TDR’ки, можно было бы заняться профайлингом, и вычислить проблему. А без сорцов… Профайлить весь этот стек софта: wine/gallium/r600/… Не, этим я уж точно не буду заниматься.

 

ps. Hail gallium. Ребята на самом деле поработали над опенсорцовыми дровами. И продолжают работать.

rgo

А вот теперь вопрос на засыпку: почему игра не лагает когда запущено две её копии, и лагает когда копия лишь одна?

Меня этот вопрос интригует. По-моему, такое поведение анти-логично, или как буржуи выражаются: counter intuituve.

rgo

Хрен его знает…

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

Из любопытных фактов, которые всплыли:

  1. игра не лагает если запущена вне chroot, графика убитая, играть невозможно, но лагов нету.
  2. не важно будет ли вторая копия игры запущена под chroot или вне него.

Я бы однозначно свалил бы всю ответственность за подобное поведение на mesa. Но немного смущает (2), и поэтому выводов никаких не напрашивается. Всё же, за ради теста, я позапускал glxgears в chroot и вне, чтобы прикинуть fps. Разница есть и довольно существенная (процентов 10), но, в принципе, её легко можно списать на то, что 64-х битная версия glxgears лучше оптимизирована под 64-х битный проц. Лагов при этом не видно. Хотя они в glxgears могут быть просто незаметны глазу.

Даже не знаю куда ломануться за помощью? Где можно найти достаточно квалифицированных людей страдающих необоснованным любопытством типа моего? В mesa-users@lists.freedesktop.org? Или на winehq? Попробовал спросить на forums.gentoo.org, но, испугавшись параноидального отношения администрации форума к крякам, я полез в русскоязычный раздел, где всё совсем тухло. Несколько дней висел пост, потом пришёл какой-то деятель и начал советовать вместо chroot использовать USE=win32 при сборке wine. Можно конечно попробовать ещё в англоязычных гентушных форумах поспрашивать, но там висит прилепленный топик, который запрещает обсуждать кряки. А TDR2000 без no-cd не запускается в принципе. То есть по-идее-то ничего страшного, поскольку мой вопрос не про кряки, но из обсуждения в том топике у меня возникло ощущение, что запрет на кряки носит идеологический или даже психиатрический характер, поэтому связываться страшно. И… И я и так уже пол-интернета засрал этим вопросом: тут, на forums.gentoo.org, в бложике своём отписал на лайвинтернете. Неохота продолжать в том же стиле.