LINUX.ORG.RU

Доработка ядра Linux для поддержки современных Windows игр

 ,


1

4

На прошедшем Linux Foundation Open-Source Summit Europe был представлен обзор работ по расширению ядра Linux для лучшей поддержки Windows игр.

Габриэль Крисман Бертази в качестве инженера консалтинговой фирмы Collabora рассказал о своей работе над улучшением ядра Linux для поддержки запуска игр для Windows в Linux. Collabora один из партнеров Valve вместе с CodeWeavers.

>>> Доклад



Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 4)

Ответ на: комментарий от TheKnight

Осталось починить мерцание изображения - и в путь 😁

chenbr0
()
Ответ на: комментарий от anonymous

Спасибо конечно, но я бы в это не то, что за бесплатно, а только наверно за зарплату поиграл бы.

chenbr0
()
Ответ на: комментарий от ncrmnt

видимо опасаясь подмены ntdll

А подмены ядра они не опасаются? Давайте ещё специальный модуль ядра Windows делать. Тогда точно Wine будет в пролёте.

X512 ★★★★★
()
Ответ на: комментарий от fornlr

Технически это значит - не поддерживается, что и подтверждает отсутствие упоминаний линукс у непосредственных разработчиков большинства игр. А маркетологически и юридически да, поддерживается. Под прикрытием мелкого текста, без возможности претензий. Но мы типа и рады. Ситуация ровно как если бы в требованиях была бы винда «Win10 какой-то build от января 2017», не больше и не меньше - абсурд. Так и тут, но почему то всех устраивает.

zendrz ★★
()
Ответ на: комментарий от zendrz

«Win10 какой-то build от января 2017», не больше и не меньше - абсурд.

И еще, эту порочную практику начинают уже вводить и в масдай - кто? - да бравые «линуксоиды» дорвавшиеся до винды, и которыми теперь, видимо, пронизана вся микрософт. Вся докер-инфраструктура в винде пропитана линуксовым «только вот этот старый конкретный билд, на другом баги». И вся эта питонятина притянутая в WSL - туда же.

zendrz ★★
()

Когда под Linux компилируют серьёзное ПО вроде FineReader или AutoDesk Maya, используют обычно CentOS 6 + новый компилятор в качестве базы для сборки (либо SLES 11 + devel:gcc). Новый компилятор отлично «подтягивается» из репозитория DevToolset, а остальные зависимости - из EPEL. Бинарник же для GTK3 + Wayland наверняка компилируют в CentOS 7. Для совсем уж сурового энтерпрайза так и вовсе используют LSB 3.1+ (я уж не знаю, зачем суровому энтерпрайзу CentOS 4, Glibc 2.3 и GTK 2.6, когда уже давно есть LSB 4.0 и 5.0. Наверно потому что LSB 3.1 получил стандарт ISO, а 4.0 нет).

Это моё мнение, которое может не совпадать с вашим.

Разработчики игр далеки от Linux, поэтому им не следует ставить такие жёсткие условия по базовой системе для сборки игр. Тем не менее, Unreal Engine 4 поддерживает сборку в CentOS 6, равно как и Qt 5. Для этой ОС есть драйверы NVIDIA и AMDGPU-PRO.

Разработчикам игр следует использовать Ubuntu не самой последней версии. Например 16.04 или 18.04. Этого условия достаточно. Новый компилятор также можно «подтянуть». Для игр (а не программ для работы) это самый простой и не требующий дополнительного напряга вариант. Не придётся забивать голову изменениями версий библиотек и их ABI - эту задачу берёт на себя Steam Runtime.

Насчёт нестандартных зависимостей. Такие библиотеки, как libc6, libjpeg, libpng, библиотеки X11 и GTK, класть в дистрибутив программы не нужно. Эти библиотеки и так обязаны быть в любой системе GNU/Linux. Вместе с программой можно положить libSDL и libOpenAL, Qt5 для лаунчера, а также любые нестандартные зависимости. Также с некоторыми библиотеками можно линковаться при помощи dlopen(), чтобы эта библиотека не обязательно присутствовала в системе, но использовалась, если она есть. Например библиотека для рендера волос от NVIDIA.

Также следует учесть, что начиная с Debian 9 в репах нет libpng12, а значит, и актуальную версию libpng когда-нибудь могут удалить из репов. Библиотеку также можно положить в дистрибутив вашей программы.

Все зависимости следует положить в директорию lib и «подцеплять» скриптом run.sh, добавляющий эту директорию в LD_LIBRARY_PATH и запускающий программу.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 9)
Ответ на: комментарий от zendrz

Ситуация ровно как если бы в требованиях была бы винда «Win10 какой-то build от января 2017», не больше и не меньше - абсурд. Так и тут, но почему то всех устраивает.

Ну так в Windows 10 с такой силой как в линуксах не ломают совместимость.

fornlr ★★★★★
()
Ответ на: комментарий от anonymous

Линукс - это семейство операционок.

Боинг - это семейство самолётов, а пиво - сорт водки.

anonymous
()
Ответ на: комментарий от ncrmnt

StarForce помнишь? Там вроде как раз был ядерный модуль.

В Wine его поддерживают? Пытаются ядро Линукс под него переделать?

X512 ★★★★★
()
Ответ на: комментарий от X512

Насколько знаю, нет и еще раз нет. Я просто про то, что для DRM и anticheat ядреный модуль и нестандарнтные костыли - это обычная практика, тут нечему удивляться.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

античитов

Подозреваю, что в Wine с открытыми исходниками делать читы проще простого. В долгосрочной перспективе от поддержки системных вызовов Windows не будет никакого толка. Как только разработчики игр узнают о такой поддержке, они сразу сделают модуль ядра для античит-защиты.

X512 ★★★★★
()
Ответ на: комментарий от X512

Ты презенташку смотрел? Там нет ничего про реализацию сисколов винды в ядре линукс. Там просто ставится опциональный «фаервол», который ловит asm(syscall) от некоторых программ, и может их переправлять обратно в юзерспейс. Помимо очевидного применения (реализации виндовых сисколлов, но уже в юзерспейсе), это еще для отладки будет достаточно полезно.

ncrmnt ★★★★★
()
Последнее исправление: ncrmnt (всего исправлений: 1)

И как успехи?

PS Вот теперь мы точно знаем что такое консалтинг оупенсорца.

anonymous
()
Ответ на: комментарий от ncrmnt

Там нет ничего про реализацию сисколов винды в ядре линукс.

Это понятно.

реализации виндовых сисколлов, но уже в юзерспейсе

От этого мало толку. С новой версией защиты это всё перестанет работать. Тогда непонятно зачем это вообще нужно.

X512 ★★★★★
()
Ответ на: комментарий от ncrmnt

Мужик явно страдает от безделья. Гугл говорит о том, что конторка занимается поддержкой Либры. Ну дык флаг в руки, эвона какой фронт работ у чувака. Бери, пиши модули, улучшай код.

Там просто

Сейчас это модно, тащить в ютуб всякий шлак в стиле «как я провёл лето».

За последние 3000 лет человечество не улучшилось, снискать дешёвой славы без усилий желающих не поубавилось.

Ну а Шома как пропускал шлак так и продолжает.

anonymous
()
Ответ на: комментарий от X512

ты опять сел в лужу, тк поддерживать предыдущие игры, использующие этот механизм всё ещё нужно

anonymous
()
Ответ на: комментарий от anonymous

поддерживать предыдущие игры, использующие этот механизм всё ещё нужно

Поддержка этого механизма в следующем билде Windows отвалится.

X512 ★★★★★
()
Ответ на: комментарий от X512

Ну, извините…
Дорогу на красный тоже не принято переходить, но не давить же их всех, тех кто переходит

BydymTydym
()
Ответ на: комментарий от X512

зачем это вообще нужно

Очевидно не нужно. И невозможно. Даже в теории. Чтобы запускать windows-игры линь должен стать немного вендой. А это целое проблемное поле. У меня даже были статеечки на темы гетерогенных сред. Науками я не занимаюсь, впрочем. Так, жгу глаголом время от времени.

anonymous
()
Ответ на: комментарий от anonymous

с чего вдруг?

Номера системных вызовов поменяются:

NtClose

Windows 10 1507: 0x0180

Windows 10 1511: 0x0183

Windows 10 1607: 0x0185

Windows 10 1703: 0x018a

Windows 10 1709: 0x018d

Windows 10 1803: 0x018d

Windows 10 1809: 0x018d

Windows 10 1903: 0x018d

Windows 10 1909: 0x018d

Windows 10 2004: 0x018e

X512 ★★★★★
()
Ответ на: комментарий от X512

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

anonymous
()
Ответ на: комментарий от chenbr0

тогда дела пойдут в гору

Это невозможна. Ни политически, ни идеологически, ни технически.

Проще скрестить обезьяну с носорогом, чем добиться конвергенции системных окружений венды и линя.

anonymous
()
Ответ на: комментарий от anonymous

Не, шапка на примере системд показала, что все возможно. Стае дистрибутивов нужен вожак.

Жду когда вейланд с гномом станут дефолтом, тогда можно и про игори задуматься.

chenbr0
()
Ответ на: комментарий от chenbr0

когда вейланд с гномом станут дефолтом

Тогда линь перестанет быть никсами и превратиться в разновидность какой-нибудь гайки. Но и это ещё не всё, что нужно для запуска windows-игр в нативе. Мы ведь о нативе говорим?

anonymous
()
Ответ на: комментарий от anonymous

Про системд говорили, что это чуть ли не как виндовый реестр. По мне унификация пошла на пользу.

Абсолютно все равно как запускается игра, главное, чтобы стабильно работала. А натив/порт/эмуляция - пускай разрабы решают, что выгоднее.

chenbr0
()
Ответ на: комментарий от X512

А подмены ядра они не опасаются? Давайте ещё специальный модуль ядра Windows делать.

Наверное половина популярных античитов идёт со своим модулем ядра.

Gary ★★★★★
()
Ответ на: комментарий от chenbr0

ЮПро системд говорили, что это чуть ли не как виндовый реестр.

systemd – это набор утилит + скрипты. Реестр – это конфиг.

пускай разрабы решают, что выгоднее

Поставь себе венду, как делают все нормальные люди и гамай. :-D

anonymous
()
Ответ на: комментарий от ZenitharChampion

В любом случае конторка паразитирует на опенсорсных продуктах.

anonymous
()
Ответ на: комментарий от X512

особой необходимости в ... уникальной архитектуре и функциях ... нет

Поправил. Все навороченные микроядра, M:N шедулеры, неубиваемая форкбомбами память и т.п. не нужны. Нужны тупые ядра с приемлемой эффективностью. «Пластмассовый мир победил».

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

Нужны тупые ядра с приемлемой эффективностью.

Вы так говорите как будто это что-то плохое… Там где надо (роботы, летательные и космические аппараты и т.д.) используют подходящие ядра (ОС реального времени и т.д.).

X512 ★★★★★
()
Ответ на: комментарий от X512

Как только разработчики игр узнают о такой поддержке, они сразу сделают модуль ядра для античит-защиты.

Ну, пусть делают. Прошлые попытки кончились эпическим фелом. Скандалы из-за того, что драйвер не удалялся после удаления игры. Скандал из-за того, что драйвер был кривой и клал систему. Скандал из-за того, что драйвер оказывался открытым всем бекдором внутрь ядра. (И от последнего довольно сложно избавиться.)

atrus ★★★★★
()
Ответ на: комментарий от Shadow

Я про Linux.

Так и я за линукс тебе говорю. Пошли бухнем, пятница же.

Владимир

anonymous
()
Ответ на: комментарий от karton1

Чтобы были нативные игры нужны пользователи, а чтоб были пользователи нужны игры. Что проще переписать все игры с винды на линукс или сделать поддержку в wine? Когда допилят всё и игры будут работать нормально, то люди подтянутся и тогда нативных игр будет больше.

kronos2411
()

DRM & anti-cheat technologies blad….

qbbr ★★★★★
()
Ответ на: комментарий от fornlr

потенциал

Проверил я однажды ЛОР-овцам и приобрел амуде… Хорошо, что была майгинг-лихорадка и это недоразумение удалось продать с выгодой (теперь только нвидиа, а местные иксперды могут проследовать на юг).

anonymous
()
Ответ на: комментарий от slackwarrior

И Линус уже не такой гормональный и резкий :) Повзрослел наверное.

Он испытал на себе какчество амуде и все понял 🤦‍♂️

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.