Запуск репаков на Linux

**Запуск репаков на Linux**  (в непопулярных инкарнациях: на хакинтош, на *BSD, на ведроид, на Хормони) (также известная как  *Пердолинг* ,  *Секс в акваланге* ,  *Почему я не остался на Windows*  или в наречии Apple  *Game Porting Kit для «незванных»* ) — это изощренная форма цифрового мазохизма, практикуемая адептами Linux, которые по каким-то религиозным причинам отказались платить за лицензионный софт, но при этом обладают неисчерпаемым запасом свободного времени и устойчивой психикой. Суть процесса заключается в попытке заставить работать пиратский контент, сжатый алгоритмами сотоны до размеров атома, в операционной системе, которая воспринимает `.exe` файлы как личное оскорбление. Это занятие сродни попытке собрать работающий адронный коллайдер из спичек и желудей, руководствуясь инструкцией на древнешумерском, которую перевел пьяный промпт.

## Анатомия страдания

В основе всей этой драмы лежит фундаментальное противоречие между желанием халявы и технической реальностью. FitGirl, KaOs и ElAmigos — примеры персонажей (или групп бородатых сисадминов), прославившихся умением сжимать стогигабайтные игры до размера дискеты, жертвуя при этом временем установки, как следствие заказной демонстрации всемогущей технологии пересборки пластика от Булата Зиганшина — FreeArc. На родной Windows процесс распаковки такого репака способен разогреть процессор до температуры плавления вольфрама и сожрать всю оперативную память, заставляя пользователя медитировать на надпись  *Do not panic if it looks stuck* . Однако при попытке провернуть этот фокус на Linux, уровень сложности переходит из режима  *Hard*  в режим  *Nightmare* . Дело неизучаемого сговора Борляндии Пасквиля в том, что инсталляторы репаков часто написаны на таких костыльных скриптах, которые требуют наличия специфических библиотек Windows, отсутствующих в чистом префиксе Wine как класс. В итоге линуксоид получает «новый уровень в игре» — увлекательный квест по поиску `ISDone.dll` и `Unarc.dll`, который плавно перетекает в изучение логов проб и ошибок и пересборку ядра от безысходности.

## Инструментарий юного некроманта

Чтобы совершить этот ритуал призыва демонов гейминга, простого терминала недостаточно. Главным орудием пыток выступает Wine — программная прослойка, которая пытается переводить вызовы Windows API на язык, понятный пингвину. Работает это чудо инженерной мысли по принципу глухого телефона: игра просит нарисовать треугольник, Wine переводит это как просьбу удалить системный загрузчик, а ядро Linux в недоумении паникует. Чтобы хоть как-то упростить жизнь, был придуман Lutris — графический интерфейс, который должен был сделать установку игр удобной, но на деле просто добавил еще один слой абстракции и глюков. Lutris позволяет управлять версиями Wine, подключать DXVK (транслятор DirectX в Vulkan) на замену WineD3D, доставшегося от отцов гипнотизации приворожения DirectX к OpenGL («И так сойдёт!») и колдовского появления его поздних инкарнаций на художественный стиль сериалов Windows серий 98, ME, 2000 и XP, чьи KernelEx достались не хуже их идейных соперников — и запускать скрипты установки, которые теоретически должны делать всё сами, но на практике ломаются после каждого обновления драйверов NVIDIA, и по желанию — козопротивных файловых систем exFAT и ZFS. Особо продвинутые используют Proton — форк Wine от Valve, который вроде как работает лучше, но предназначен для Steam, а не для запуска (старых вайдскринопатченных?) варезных помоев с торрентов.

## Хождение по мукам

Всё начинается с того, что наш герой, гордо удаливший Windows, заходит на трекер и скачивает заветный магнитик. Уже на этом этапе его подстерегает опасность, так как BitTorrent-клиент в Linux может вести себя непредсказуемо, но это мелочи. Настоящий цирк начинается при запуске  *setup.exe* . Линуксоид открывает Lutris, выбирает опцию  *Установить из исполняемого файла*  и с замиранием сердца жмет  *Play* . Если звезды сошлись, на экране появляется инсталлятор с фирменным хардбассом, сделанным в OpenMPT, которая орет на 200 % громкости, потому что микшер звука в Wine живет своей жизнью, как «демо сцены». Но чаще всего вместо красивого меню юзер видит набор иероглифов, так как в префиксе отсутствуют шрифты, или просто черный квадрат Малевича.

Далее следует этап распаковки, который на Linux может длиться вечность огня. Однопоточная работа с файловой системой и кривая эмуляция приводят к тому, что распаковка игры весом в 50 Гб может занять время, достаточное для того, чтобы вырастить сына, построить дом и переустановить Arch Linux три раза. И всё это время компьютер будет тормозить так, будто майнит биткоины для инопланетян. Но самое веселое происходит, когда распаковка доходит до 99,9 % и вылетает с ошибкой контрольной суммы, потому что Wine некорректно обработал обращение к виртуальной памяти. В этот момент обычно происходит неконтролируемый выброс кирпичей и проклятий в адрес Линуса Торвальдса.

## Загадка диска Z

Отдельного упоминания заслуживает топографический кретинизм файловой системы внутри Wine. Для эмулятора корень вашей системы `/` выглядит как диск `Z:`. Это вызывает когнитивный диссонанс у инсталляторов, которые не могут понять, как можно установить игру в путь `Z:\home\user\games`. Если же у пользователя игры лежат на отдельном NTFS-диске, который примонтирован куда-то в `/mnt/Data`, то начинается настоящая вакханалия с правами доступа и симлинками. Инсталлятор FitGirl может просто не увидеть места назначения или, что еще хуже, молча распаковать файлы в никуда, сожрав все место на системном разделе. Потом незадачливый геймер будет долго искать, куда делись 100 гигабайт пространства, перерывая скрытые папки в `~/.wine/drive_c/users/`, чувствуя себя археологом, раскапывающим цифровую помойку.

## Драма запуска

Допустим, чудо случилось, и игра установилась. Но это вовсе не значит, что она запустится. При нажатии на ярлык (который, кстати, Lutris часто забывает создать или создает кривым) ничего не происходит. Начинается этап  *курения манов* . Выясняется, что для работы игры нужен `MFPlat.dll` (Media Foundation), который Microsoft не разрешает распространять, а Wine не умеет нормально эмулировать. В итоге игра работает, но все катсцены превращаются в настроечную таблицу или вызывают краш. Линуксоид лезет на GitHub, качает сомнительные скрипты, патчит префикс, ломает его, создает новый, снова качает, снова патчит. В процессе выясняется, что античит системы Denuvo не переваривает Linux, и даже взломанная версия требует танцев с бубном вокруг настройки переменных окружения.

В финале этой трагикомедии мы получаем игру, которая идет с фризами (если не голландцами), потому что шейдеры компилируются на лету, вызывая дикие статтеры. Геймпад от Xbox определяется как клавиатура, звук отстает от картинки, а Alt+Tab гарантированно вешает систему намертво. Но линуксоид счастлив. Он победил систему. Он не заплатил корпорациям. Он потратил три выходных на то, чтобы поиграть 15 минут и удалить игру, потому что сам процесс настройки для него стал интереснее геймплея.

> *User1:*  Man, how did you even install Proton? I’m stuck with Wine.
> *Reply:*  Чувак, если ты застрял на этом этапе, то тебе лучше вернуться в свой уютный мирок с кнопкой Пуск. Здесь джунгли, здесь выживают только те, кто умеет читать `strace` лог перед сном вместо молитвы.

Это и есть истинный Дзен красноглазика.