Вопрос или проблема
Я пытался установить League of Legends с помощью Wine и наткнулся на это
ИЗМЕНЕНИЯ В ANTICHEAT В 2021 ГОДУ ПОСТОЯННО СЛОМАЛИ БЫ LoL, СМОТРИТЕ НИЖЕ.
В 2021 году Riot планирует внедрить драйвер в режиме ядра в рамках своей системы античита. Это принципиально несовместимо с Wine и станет концом League на Linux (использование виртуальной машины с проходом GPU может все еще быть поддержано). Если вы новый игрок, который подумывает о League, мы не рекомендуем это.
Почему они решают блокировать этот драйвер, и есть ли способ его обойти?
Простая версия. Wine запускает программы Windows без какого-либо ядра Windows.
Wine предоставляет API, чтобы соответствовать пользовательскому API Windows, но под капотом он не симулирует внутренние механизмы Windows. То есть он только симулирует, как ядро Windows выглядит и как будто ведет себя, а не то, как оно на самом деле ведет себя.
Более того, драйверы в режиме ядра часто содержат код, который ограничен CPU в пользовательском пространстве. Это может включать в себя CPU опкод для доступа к оборудованию. Чтобы Wine позволял этому коду выполняться, ему нужно было бы:
- Эмулировать CPU. Это и медленнее, и требует много работы. Обычно нужны очень специализированные инструменты, такие как qemu
- Запустить драйвер Windows (как-то) внутри ядра Linux. Сделать это безопасно было бы почти невозможно.
Поскольку Wine не делает ни одно из этих вещей, просто невозможно предоставить эту функцию.
Поскольку я сам играл в LoL, я не удивлен, что Riot принял такие меры. В последний раз, когда я играл, некоторые игровые режимы (особенно “все рандомно”) имели чрезмерное количество ботов, которые портили игры для всех.
Закрытие доступа самым хитрым способом предназначено для того, чтобы сделать запуск LoL на другой платформе как можно более сложным. Это сделано так, чтобы он взаимодействовал только с Windows, чтобы не взаимодействовать с ботами.
Ответ или решение
Вопрос о том, почему Wine не поддерживает драйверы в режиме ядра, является многогранным и требует подробного рассмотрения различных аспектов взаимодействия между операционными системами и их архитектурами.
Ядро и пользовательский уровень
Wine — это программное обеспечение, которое позволяет запускать приложения Windows на других операционных системах, таких как Linux. Однако оно работает на уровне пользовательских приложений, а не на уровне ядра. Это означает, что Wine предназначен для эмуляции интерфейсов прикладного программирования (API) Windows, предоставляя средства для работы с приложениями, но не симулируя настоящую среду Windows на уровне системы.
Драйверы в режиме ядра
Драйверы в режиме ядра работают непосредственно с аппаратными компонентами и имеют полный доступ к ресурсам системы. Они реализуют функции, которые требуют глубокого взаимодействия с аппаратным обеспечением, такие как доступ к памяти, устойчивая работа с компонентами ввода-вывода и другие низкоуровневые операции. Это подразумевает наличие возможностей, которые выходят за пределы возможностей Wine.
Проблемы несовместимости
-
Эмуляция CPU: Чтобы Wine мог поддерживать драйверы в режиме ядра, ему нужно было бы эмулировать архитектуру процессора Windows. Это было бы крайне медленно и технически сложно, требуя применения специализированных инструментов, таких как QEMU. Эмуляция затрудняет взаимодействие с высокопроизводительными играми и другими ресурсоемкими приложениями, поскольку она добавляет дополнительный уровень абстракции.
-
Запуск драйверов в ядре Linux: Альтернативный вариант — запуск драйверов Windows непосредственно в ядре Linux. Тем не менее, это было бы сопряжено с серьезными проблемами безопасности и стабильности. Совмещение двух различных архитектур в одном ядре приведет к множеству непредсказуемых последствий, включая потенциальные сбои системы.
Античит и его влияние
В 2021 году Riot Games ввела драйверы в режиме ядра для своей системы античита. Это решение было принято в ответ на проблемы с читами и ботами, которые негативно сказывались на игровом процессе. Данная мера направлена на максимальное ограничение возможности запуска League of Legends на других платформах, таких как Linux, поскольку она требует взаимодействия с драйверами в режиме ядра, доступными только для Windows.
Заключение
В связи с вышеизложенным, Wine не может поддерживать драйверы в режиме ядра из-за фундаментальных различий в архитектуре операционных систем и ограниченных возможностей эмуляции. Это делает невозможным полноценное выполнение программного обеспечения, требующего низкоуровневого доступа к аппаратным ресурсам, включая такие игры, как League of Legends. Даже если существуют некоторые обходные пути, такие как виртуальные машины с графическим пропускным устройством, они не обеспечивают такой же уровень производительности и стабильности, как нативные установки.
Таким образом, выбор Riot Games об ограничении использования драйверов в режиме ядра является стратегически обоснованным решением для усиления защиты своих игровых продуктов и ограничения их использования вне целевой платформы.