Wine не работает видеокарта

Обновлено: 07.07.2024

Установлен проприетарный драйвер NVIDIA, но видеокарта не используется

К сожалению, вопросы установки проприетарных драйверов для видеокарт на Linux до сих пор не так безболезненны, как на Windows. Но я столкнулся с ещё более запутанной ситуацией: после успешной установки драйверов, не получается задействовать, использовать видеокарту NVidia.

Симптомы проблемы следующие:

  • драйвера для видеокарты NVidia успешно установились
  • система загружается и прекрасно работает
  • но используется видео ядро центрального процессора Intel, а видеокарта NVidia не используется
  • попытки переключиться на NVidia либо не приносят успеха, либо приводят к чёрному экрану (когда иксы, графическая оболочка, не могут загрузиться)
  • программы использующие CUDA (например, Hashcat) прекрасно работают

Чуть подробнее о последнем пункте. Для меня видеокарта представляет главный интерес для брут-форса (взлома) хешей паролей. И эта функция работает, видеокарта нагружена, Hashcat показывает устройство видеокарты как успешно используемое, высокая скорость брут-форса паролей. Именно по этой причине я уже полтора года (!) после установки проприетарного драйвера NVidia не догадывался, что у меня какие-либо проблемы.

И всё-таки драйвер NVidia работает

Я могу убедиться в этом, поскольку срабатывала команда

А также успешно работали приложения, использующие CUDA. Для всех других задач я не мог задействовать видеокарту NVidia.

Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?

Некоторые видеокарты от NVidia поддерживают технологию NVIDIA Optimus. Суть этой технологии в том, что программное обеспечение автоматически переключается на интегрированную (Intel) или выделенную (NVidia) видеокарту. На таких системах всё довольно просто — по крайней мере в теории. Нужная видеокарта может выбираться множество раз во время работы Linux.

Но на компьютерах без NVIDIA Optimus видеокарта выбирается настройками пользователя, либо по умолчанию используется графика Intel.

Как узнать, какая видеокарта используется в Linux

Есть несколько команд, которые покажут, какая видео карта используется:

Эта же самая команда, но запущенная через optirun из пакета Bumblebee:

Пример вывода, в котором показано, что задействована видеокарта NVIDIA:

Подробнее о optirun и Bumblebee будет позже.

Ещё одна команда, которая выводит информацию об используемой видеокарте (и прикольный треугольник в качестве бонуса):


С помощью команды lspci и определённых опций можно вывести информацию об устройствах, на конце строки с используемой видеокартой должно быть [VGA controller]. Команда для фильтрации данных:

Как проверить, используется ли видеокарта NVIDIA

Следующая команда покажет процессы, которые использует видеокарта NVIDIA (если процессов нет, значит видеоадаптер не используется):

Ещё одна команда, которая показывает процессы, потребляющие ресурсы видеокарты NVIDIA, а также уровень её загруженности, температуру и другие метрики:

Как установить видео драйвер NVidia в Linux

Для установки проприетарного драйвера NVidia в Kali Linux выполните команды:

Возможно, этот же способ будет работать и для Debain и других производных.

Для установки драйвера NVidia в Arch Linux, BlackArch и их производные выполните команду:

Кроме указанных, дополнительно будут установлены пакеты nvidia-utils и opencl-nvidia. Если вам не нужен CUDA, то не устанавливайте пакет cuda.

Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)

Если ваша карта там есть, то переходите к выполнению следующих команд. У вас уже должен быть установлен проприетарный драйвер NVIDIA, как это показано выше.

На Kali Linux, Debian и их производных выполните:

В ПРОЦЕССЕ ПОДГОТОВКИ

На Arch Linux, BlackArch и их производных выполните:

Система зависает после установки Bumblebee

Я столкнулся с проблемой, что Bumblebee в принципе работает, но при использовании некоторых команд, которые задействуют CUDA или обращаются к модулям ядра, система зависала. Чтобы проверить, есть ли у вас эта проблема, выполните команду lspci, например:

Если система полностью зависнет, то перезагрузитесь и удалите пакет bbswitch.

Вместо удаления bbswitch вы можете попробовать в опции загрузки ядра добавить строку:

Для этого создайте файл /etc/modprobe.d/options.conf:

и скопируйте в него:

Но у меня сработало только удаление bbswitch.

Как пользоваться Bumblebee / NVIDIA Optimus в Linux

Теперь любую программу, которая должна использовать видеокарту NVIDIA, можно запустить командой вида:

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

Как проверить Bumblebee / NVIDIA Optimus в Linux

Запустите тест видеокарты обычной командой:


А также с помощью optirun:


Обратите внимание, что FPS вырос примерно в 20 раз.

Ещё один вариант теста работы видеокарты:


А также с помощью optirun:


Вы должны увидеть прирост производительности при использовании optirun.

Во время работы этих тестов, выполните команду:


Вы должны увидеть процессы, которые используют дискретную видеокарту.

Если у вас установлен веб-браузер Chromium, то запустите его двумя способами:

В обоих случаях откройте вкладку:

Там вы увидите информацию об используемом графическом чипе:



Заключение

Даже после написания этой инструкции, после того, как я разобрался во многих вопросах, всё ещё осталось много непонятного.

Например, как использовать постоянно только карту NVidia? Ниже я покажу что именно пробовал — абсолютно всё не сработало.

Также открыт вопрос, как установить Bumblebee в Debian и производные дистрибутивы? Все команды, которые я пробовал, приводят к чёрному экрану, либо неработоспособности Bumblebee.

БОНУС. Как сделать видеокарту NVidia используемой по умолчанию в Linux

В этом разделе я перечислил то, что у меня не сработало — поэтому можете пропускать этот раздел.

Предупреждение: если после указанных в этом разделе действий вы не можете загрузиться — появляется чёрный экран, то во время неудачной загрузки нажмите Ctrl+Alt+F*, где вместо звёздочки пробуйте указать разные цифры, например, Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д., пока не появится консоль. Введите ваш логин и пароль и откатите изменения, которые привели к неудачной загрузке. Для удаления пакетов используйте стандартные менеджеры пакетов вашего дистрибутива, а для редактирования файлов в командной строке используйте vim или nano. Если вы не знакомы с vim или nano, то пропустите этот раздел!

Если драйвер NVidia установлен, то, вроде бы, видеокарта NVidia должна использоваться по умолчанию. У меня это никогда не происходило, всегда используется интегрированная графика Intel.

Начните с проверки настроек БИОСа — там может быть возможность отключить одну из карт.

Для явного указания используемого драйвера можно создать файл /etc/X11/xorg.conf.d/20-nvidia.conf.

И скопировать в него примерно следующее:

Но у меня не происходит загрузка в графический интерфейс.

Если вы хотите отключить загрузку драйверов Intel, то создайте файл /etc/modprobe.d/blacklist-intel.conf:

И скопируйте в него примерно следующее (название модулей могут отличаться в зависимости от вашего центрального процессора):

Среди других советов встречаются добавить в опции загрузки ядра следующее:

Если у вас EFI (а не БИОС), то для изменения опций загрузки ядра нужно открыть файл вида /boot/loader/entries/*.conf. У меня этот файл называется /boot/loader/entries/arch.conf:

Также рекомендуют изменить файл /mkinitcpio.conf:

В котором вместо строки

нужно записать строку

Затем нужно пересобрать ядро, для этого в Debian и производных нужно выполнить команду:

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

Например: Arch, Debian, Fedora, Windows, AMD, Baobab, NVidia, , т.е. без транслитерации, а в именах и фамилиях давать её в скобках — Linus Torvalds (Линус Торвальдс)

Это обусловлено настройкой поисковиков по правильным названиям, которые облегчают наши же поиски информации в интернете.

1 Тема от Берс 2020-01-07 21:02:53

Приветствую!
Помогите с решением проблемы.
Есть виндовая программа для конвертации видео установленная в wine. Понадобилось конвертнуть UHD Blu-ray фильм (который 4K) в обычный Blu-ray, а программа в отказ. Пишет "Для конвертирования HDR10 в SDR в вашей системе/ПК должны быть DirectX11 и видеокарта с разрешением UHD 4K.
Зашёл в настройки программы, там есть пункт "Данные о видеокартах GPU" а в нём надпись "Не обнаружена видеокарта с аппаратным ускорением".
Система: Mageia7.
Видеокарта Nvidia GTX970
wine пробовал 4.7 и 5.0-rc3
DirectX11 должен быть установлен, т.к. стоит настроенный vulkan и игруха требующая DirectX11 запускается.
Есть возможность заставить программу-конвертер распознать видеокарту?

2 Ответ от TopE 2020-01-08 00:53:34

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

3 Ответ от kvv-vp 2020-01-08 05:56:56

Берс, в windows вся информация хранится в реестре, возможно, в wine программе не хватает каких-то записей. С помощью strace или пакета sysinternals отследите к каким ветвям реестра обращается программа и сравните с виндовым аналогом. Если чего-то не хватает, правьте wine-реестр

4 Ответ от Берс 2020-01-08 21:21:01

Видюху он распознал, а вот возможности ее не распознал.

А как в этом точно удостовериться? Может программа драйвер видеокарты ищет и не находит.
Что характерно, при запуске игрушки консоль пишет версию DXVK, версию vulkan, данные по видеокарте. А вот при запуске конвертера этих данных нет. Может что-то в запуск прописать принудительное, чтобы конвертер искать видеокарту начал?

в windows вся информация хранится в реестре, возможно, в wine программе не хватает каких-то записей.

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

5 Ответ от TopE 2020-01-08 21:29:51

Удостовериться просто. Не работает ничего.

6 Ответ от kvv-vp 2020-01-09 05:51:59

Что характерно, при запуске игрушки консоль пишет версию DXVK, версию vulkan, данные по видеокарте. А вот при запуске конвертера этих данных нет. Может что-то в запуск прописать принудительное, чтобы конвертер искать видеокарту начал

Что мешает запустить конвертер используя vulkan?

7 Ответ от Берс 2020-01-10 22:58:48

Что мешает запустить конвертер используя vulkan?

Это как?
Для запуска игрухи я пишу в консоли wine64 игра.exe и всё само подхватывается с вулканами и прочими.

Удостовериться просто. Не работает ничего.

Тут есть нюанс. Всё работает кроме конвертации UHD Blu-ray в blu-ray. Только в этом случае программа требует directx11 и видеокарту.

Для интереса снёс каталог .wine. И на голом поставил конвертер. Версия 4.7 опять вывалилась с ошибкой отсутствия карты, а вот версия 5.0-rc4 начала конвертацию.
Данное решение не является подходящим, т.к. нужно установить и настроить vulkan и dxvk, что опять приведёт к невозможности конвертации.

8 Ответ от kvv-vp 2020-01-11 04:57:05

9 Ответ от Берс 2020-01-13 12:22:24

Уважаемый, а Вы всерьёз полагаете, что у меня это не настроено, и при запуске игрухи vulkan и dxvk из воздуха материализуются?
Или Вам вот эта фраза ничего не даёт "Что характерно, при запуске игрушки консоль пишет версию DXVK, версию vulkan, данные по видеокарте"? Это как раз и обозначает, что и vulkan и dxvk установлены и настроены.
Вот только при запуске конвертера не подхватываются. А вот это вопрос почему?
С другими программами всё работает чётко.

10 Ответ от kvv-vp 2020-01-13 18:59:46

Уважаемый, а Вы всерьёз полагаете, что у меня это не настроено, и при запуске игрухи vulkan и dxvk из воздуха материализуются?

Нет. Но vulkan и dxvk могут быть даже в теле самой игрухи

Или Вам вот эта фраза ничего не даёт "Что характерно, при запуске игрушки консоль пишет версию DXVK, версию vulkan, данные по видеокарте"? Это как раз и обозначает, что и vulkan и dxvk установлены и настроены.

Я не знаю, что там у вас настроено и "эта фраза мне дает", что запущенная программа( не консоль) сообщает какую-то информацию. Но это ни коим образом не означает,
что и vulkan и dxvk установлены и настроены. Впрочем, я не знаком с API Vulkan, возможно вы и правы, но это частный случай.

Вот только при запуске конвертера не подхватываются. А вот это вопрос почему?

Вот для решения этого вопроса я и дал ссылку, где между строк написано:

Кроме того, Steam также умеет запускать сторонние Windows-игры и нативные для GNU/Linux игры, не входящие в Вашу библиотеку Steam, даже пиратские игры, что дополнительно уменьшает смысл установки Wine+DXVK+D9VK для игр. Для установки сторонних игр в Steam нажмите на "+" в левом, нижнем углу Вашей библиотеки Steam. Для использования SteamPlay/Proton для всех не поддерживаемых официально компанией Valve игр, включите такую возможность в настройках Steam, но имейте ввиду, что необходимо будет вручную переключиться на новые значительные выпуски Proton при их выходе, потому что это не происходит автоматически, а происходит только для незначительных обновлений Proton. А также имейте ввиду, что Proton содержит не обычный Wine, а Wine с добавлением большого набора авторских патчей компании Valve, дополнительно исправляющий некоторые проблемы с запуском игр, и при том эти исправления пока что не входят в состав обычного Wine и Wine Staging, хоть некоторые из этих патчей со временем переходят в состав Wine. Поэтому для игр из Steam будет проще использовать встроенный в него SteamPlay/Proton вместо установки Wine, DXVK и D9VK отдельно от клиента Steam.
Устанавливать Wine для Windows-игр имеет смысл только в случаях если Вы хотите использовать новейшие выпуски Wine Staging и DXVK, поскольку в составе Proton используется не Wine Staging, а Wine Vanilla, отстающий от Wine Staging по своим возможностям на около 800 дополнительных патчей, при том это обычно заметно устаревший выпуск Wine, и не самые свежие выпуски DXVK и D9VK. Учтите, что использование Wine в Proton вместо Wine Staging в некоторых случаях может привести к неработоспособности некоторых игр, а это ещё одна причина использовать его вместо Proton.

С другими программами всё работает чётко.

Ага, с теми , в которых включена поддержка vulkan или аппаратная поддержка не нужна.

11 Ответ от sevo44 2020-01-13 22:33:37

Есть возможность заставить программу-конвертер распознать видеокарту?

Calculate Linux, XFCE х64
Проще погасить свет чем разогнать тьму!

12 Ответ от algri14 2020-01-14 00:14:28

На данный момент HandBrake — кроссплатформенное программное обеспечение, доступное для Linux, Microsoft Windows, Mac OS X, и Solaris, распространяется по лицензии GPL v2 и является свободным программным обеспечением.

Пакет handbrake - MPEG-AVC(H.264)/MPEG-4 converter присутствует в Taited-репо Mageia

Универсальный DVD риппер и видео транскодер - HandBrake командной строки является универсальным, простым в использовании инструментом для конвертирования DVD-дисков и других видео в форматах H.264, MPEG-4, или OGG отформатированных носителей. Это особенно полезно для создания видео, которые совместимы с портативными видео устройствами, таких как Apple, IPod / iPhone.

GUI приложение с русской локализацией (почти всё переведено).

13 Ответ от Берс 2020-01-14 12:30:25 (2020-01-14 12:33:25 отредактировано Берс)

Я в англицком не силён. Эта программа в состоянии UHD Blu-ray в Blu-ray конвертнуть сохранением всех каталогов как в исходнике?
Судя по тому, что я успел прочесть, то эта программа мне не подходит. Она c UHD вообще не работает.

Вот для решения этого вопроса я и дал ссылку, где между строк написано:

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

Я не знаю, что там у вас настроено и "эта фраза мне дает", что запущенная программа( не консоль) сообщает какую-то информацию. Но это ни коим образом не означает,
что и vulkan и dxvk установлены и настроены. Впрочем, я не знаком с API Vulkan, возможно вы и правы, но это частный случай.

Я писал, что запуск произвожу в консоли. Вы невнимательно прочли.
Предполагаю, что изначально при запуске конвертера directx11 и наличие видеокарты не особо нужно и программа запускается без них. Отсюда и отсутствие в консоли данных по vulkan и dxvk. А когда я даю задание конвертировать UHD в blu-ray, то программа начитает требовать видеокарту, а через wine уже не может её подхватить. Вот если бы изначально при запуске конвертера принудительно это задать параметром. Только каким?
Остальные то программы сами всё подхватывают.

14 Ответ от TopE 2020-01-14 14:15:07

Эта программа в состоянии UHD Blu-ray в Blu-ray конвертнуть сохранением всех каталогов как в исходнике?

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

15 Ответ от Берс 2020-01-14 14:50:34

DVDFAb
вряд ли это чем-то может помочь

16 Ответ от kvv-vp 2020-01-15 12:12:40

Я писал, что запуск произвожу в консоли. Вы невнимательно прочли.

Нет, это вы меня неправильно поняли. Консоль- это просто "печатная машинка", она сама ничего не пишет. Пишут в консоли программы. Запущенная вами игрушка сообщает какие-то данные по vulkan и dxvk через консоль и это не значит, что также будет вести себя ваш конвертер. Все зависит от воли авторов. Игрушка адаптирована для запуска с vulkan и dxvk, поэтому и производит проверку их наличия и версий, при отсутствии или несоответствии которых она не запустится.

17 Ответ от kvv-vp 2020-01-16 13:43:38

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

Загрузить приложение / игру для Windows. Загрузите не Steam приложение / игру, которую вы хотите загрузить, в Steam Proton. Может быть что угодно. Я выбрал MPC-HC. Выберите портативную версию, если это возможно. Загрузите игру Steam для Windows Используя вышеупомянутый метод, загрузите игру для Windows, которая доступна в магазине Steam. Запустите его как минимум, как только Steam потребуется установить Steam Proton, так что обязательно запустите эту игру Steam хотя бы один раз. Это позволит правильно установить / интегрировать Steam Proton в Steam. Скопируйте приложение Windows / Game Over в свою игру Steam Довольно простая вещь. Если вы не можете найти местоположение своей игры Steam, щелкните правой кнопкой мыши свою игру в своей библиотеке Steam и выберите «Свойства». Затем выберите «Локальные файлы». Наконец, нажмите «Обзор локальных файлов» здесь. Папка должна открыться сейчас. Скопируйте файлы приложения / игры Windows в это место. Удалите основной исполняемый файл. В моем случае это: point_perfect_se_1.3.2.exe Обязательно запишите имя исполняемого файла, прежде чем продолжить. После удаления файла переименуйте основной исполняемый файл приложения / игры Windows в имя, которое имел старый файл, aka: mpc-hc64.exe, в point_perfect_se_1.3.2.exe. И вы сделали. Проблемы с переименованием Если у вас возникли проблемы с переименованием имени файла, по любой причине вы можете использовать команду mv для переименования вашего файла. «Mv» означает «переместить», но также может использоваться для переименования файла. Вот пример: $ mv mpc-hc64.exe point_perfect_se_1.3.2.exe Это должно работать, но если у вас возникли проблемы с разрешениями, используйте sudo. Загрузите ваше новое приложение в Steam. Да, название игры не изменится, но, по крайней мере, теперь вы сможете запустить игру со Steam Proton? Отказ от ответственности Этот метод может работать в некоторых приложениях, но не будет работать во многих других приложениях, особенно в тех, которые нуждаются в специальной поддержке .dll. Я постараюсь дополнить это руководство дополнительной информацией, когда буду тестировать больше материала. Обязательно возвращайтесь к нему, когда это возможно. Я использую Solus, но этот метод должен работать в большинстве основных дистрибутивов Linux, таких как Ubuntu, его производные, ArchLinux и другие ОС на основе Debian.

Войти

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Прелюдия к установке Wine. Установка и настройка драйверов видеокарты

Проблема эта стоит не всегда. Часть дистрибутивов Линукс сразу устанавливает драйвера видео "из коробки", и в большинстве случаев ничего менять не нужно - всё и так работает. Но бывают случаи, когда этим нужно заниматься самому. Так дело обстоит, в частности, с дистрибутивом Ubuntu, в который драйвера не включены.

Обращаю внимание также на то, что Wine при установке не будет сообщать вам, настроена ваша видеокарта или нет. Более того - вы можете даже установить под Wine DirectX, и он даже встанет, но при этом не будет работать. В этом случае будет бесполезно перечитывать тысячу статей по установке и настройке Wine, ибо в них о настройке видеокарт не написано. Сначала установите драйвера и убедитесь, что всё работает - только потом ставьте Wine.

Первым делом необходимо зайти в Система -> Администрирование -> Драйверы устройств. Линукс поищет драйвера под вашу видеокарту и выдаст несколько вариантов на выбор. Для установки одного из вариантов просто щёлкаем по нему, нажимаем активировать, и Линукс сам скачает и настроит драйвера, которые станут активны после перезагрузки.

Обычно работает любая версия драйверов из списка предлагаемых, иногда с некоторыми версиями возникают проблемы, и приходится перебирать в поисках тех, что пойдут под вашу видеокарту. В частности, у меня на видеокарту Nvidia GeForce 7600 GS встали проприетарные драйвера ускоренной графики NVIDIA версии 96.

Всего в моей системе после установки оказались вот такие пакеты для видеокарты:

nvidia-96

nvidia-cg-toolkit

nvidia-settings

Первый пакет - непосредственно драйвер, остальные два - обслуживающие пакеты для настройки видеокарты и параметров отображения в X11.

Но Линукс не был бы Линуксом, если бы на этом всё закончилось и заработало. Для информации - Wine не использует команды Direct3D напрямую, он переводит их в команды OpenGL и уже с их помощью прорисовывает 3D. Непосредственно после установки драйверов у меня не оказалось полного набора нужных библиотек OpenGL, что довольно продолжительное время являлось для меня головной болью и непониманием по поводу незапускающихся игр в установленном Wine. После доустановки пакетов OpenGL проблема исчезла. Ниже - полный список всех пакетов OpenGL, стоящих на данный момент у меня. Возможно, что-то лишнее, но именно с этим набором у меня всё работает.

freeglut3, freeglut3-dev, glutg3, glutg3-dev, libdrm-dev, libdrm-intel1, libdrm-nouveau1, libdrm-radeon1, libdrm2, libgl1-mesa, libgl1-mesa-dri, libgl1-mesa-glx, libgle3, libglew1.5, libglfw2, libglitz-glx1, libglitz1, libglu1-mesa, libglu1-mesa-dev, libglut3, libglw1-mesa, libgtkgl2.0-1, libopenal1, libosmesa6, libqt4-opengl, libsage-dev, libsage2, mesa-common-dev, mesa-utils.

После установки всего, о чём написано выше, стоит проверить драйвера на полную работоспособность. Во-первых, теперь ваш рабочий стол Gnome должен включать визуальные эффекты Стандарт и Экстра. Во-вторых, стоит зайти в меню выбора заставки рабочего стола (Система -> Параметры -> Хранитель экрана) и посмотреть на скорость полноэкранной прорисовки заставок с буквами GL в названии. Если ничего не тормозит - отлично, драйвера работают.

И главная составляющая проверки: в консоли необходимо набрать строку:

glxinfo | grep direct

Если она выведет вам:

direct rendering: Yes

Значит, о драйверах видеокарты можно не беспокоится. Фундамент для установки Wine готов!

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

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

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Для чего Wine

Эта инструкция расскажет об использовании Wine. Данные советы по использованию применимы как к Kali Linux, так и к любому другому дистрибутиву Linux.

Итак, Wine — это набор программ и библиотек, которые позволяют запускать Windows приложения в Linux без использования виртуализации. Конечно, Windows программы можно запустить в Linux с использованием VirtualBox, но такой вариант потребует запуска полноценной операционной системы с соответствующими затратами ресурсов, особенно оперативной памяти — для работы Windows необходимо несколько гигабайт памяти, а также место на диске для установки — несколько десятков гигабайт. При этом важным требованием для работы VirtualBox и аналогичных виртуальных компьютеров является то, чтобы ваш центральный процессор поддерживал виртуализацию.

Wine позволяет обойти все эти ограничения — для запуска программ Windows не нужно устанавливать эту операционную систему и приложениям для работы требуется всего несколько десятков мегабайт оперативной памяти.

Но у Wine есть и недостатки — не все приложения работают хорошо или вообще работают. Тем не менее огромное количество Windows программ прекрасно запускаются и работают в Linux благодаря Wine.

Помните, что многие бесплатные программы являются кроссплатформенными и вы можете их установить из стандартных репозиториев вашего дистрибутива. Для таких программ не нужен Wine. Примеры популярных кроссплатформенных программ: LibreOffice, Google Chrome, Firefox, Double Commander, VirtualBox, Etcher, VLC, DeadBeef, GIMP, OBS Studio, Viber, Wireshark, Apache, PHP, MySQL, Calibre, Netbeans, Burp Suite, Visual Studio Code, KeePass, KeePassXC, OpenShot Dropbox, Python, Ruby, Perl, PowerShell, SSH, Vuse BitTorrent Client, FileZilla, Tor Browser, JDownloader и очень многие другие. Всем этим программам не нужен Wine, поскольку они имеют «родные» установочные пакеты для Linux.

Прежде чем пытаться установить и запустить программу через Wine, поищите её с помощью менеджера пакетов, например:

Возможности и ограничения Wine

Программа способна запускать 64-битные, 32-битные, 16-битные программы и библиотеки Windows 9x/NT/2000/XP/Vista/7/8/10 и Windows 3.x

Поддержка Win32 API:

  • Поддержка игр и приложений на основе DirectX (поддержка Direct3D до DirectX 12)
  • Поддержка игр и приложений на основе OpenGL и Vulkan
  • Поддержка DirectShow с использованием GStreamer для кодеков
  • Direct2D, поддержка DirectWrite
  • Поддерживаются MMDevice API, XAudio, WinMM, DirectSound audio API.
  • Печать через драйвер PostScript в главную систему печати (обычно CUPS)
  • Драйвер расширенного метафайла (EMF) и метафайла Windows (WMF)
  • Desktop-in-a-box или смешанные окна

Позволяет программе Windows взаимодействовать с:

  • Графикой на основе X11, которая позволяет удалённо отображать на любом X-терминале
  • Графикой на базе macOS и Android
  • Шрифты X11, TrueType (.ttf/.ttc) и Windows Bitmap (.fon)
  • Звуковыми устройствами через ALSA, OSS, PulseAudio, Core Audio и т. д.
  • Многоязычной клавиатурой и поддержка метода ввода CJK через XIM
  • Модемами, последовательными устройствами
  • Сетями (TCP/IP и IPX)
  • Сканерами ASPI
  • Планшетами Windows через XInput (например, Wacom)
  • Устройствами видеозахвата через v4l2
  • Устройствами HID через IOHid (MacOS), evdev (Linux), hidraw (Linux), SDL2

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

Если для работы приложения необходимы дополнительные библиотеки, например, Visual C++ Redistributable for Visual Studio, то их возможно установить в Wine и запускать приложение в среде с установленной этой библиотекой.

При этом нужно помнить о таком ограничении, как невозможность работать с устройствами напрямую, например, если для устройства требуется драйвер, то бессмысленно устанавливать Windows драйвер в Wine — вам нужно найти версию драйвер для Linux и установить её.

64-битный или 32-битный Wine?

В этой инструкции для установки Wine мы включим поддержку репозиториев для 32-битных платформ (i386) для того, чтобы скачать необходимые библиотеки. Может возникнуть вопрос, существует ли 64-битный Wine и если да, зачем нам подключать репозитории для i386 и скачивать 32-битную версию?

Да. 64-битный Wine доступен в Linux начиная с версии 1.2. Бинарные пакеты WineHQ доступны для 64-битных версий, и большинство основных дистрибутивов упаковывают их для пользователей. Обычно установка должна быть такой же простой, как установка пакета Wine для вашего дистрибутива через менеджер пакетов.

Но имеется несколько очень важных замечаний:

  • 32-битный Wine работает как в 32-битных, так и в 64-битных версиях Linux/Unix. На нём будут работать 16-битные и 32-битные приложения Windows.
  • 64-битный Wine работает только на 64-битных установках и пока что был тщательно протестирован только в Linux. Для запуска 32-битных приложений Windows требуется установка 32-битных библиотек. И 32-битные, и 64-битные приложения Windows (должны) работать с ним; однако есть ещё много ошибок.
  • Текущий Wine включает поддержку 64-битного Wine в Mac OS X; однако это не было тщательно проверено, и некоторые приложения могут никогда не работать из-за несовместимости ABI между Win64 и OS X.

Главное, что из этого следует — даже при установке 64-битного Wine необходимо активировать 32-битные репозитории, поскольку многие приложения Windows по-прежнему являются 32-битными и в любом случае необходимо установить 32-битные библиотеки, иначе многие программы просто не будут работать.

При установке можно явно выбрать пакет wine64, но даже если вы установите wine, то им будет 64-битная версия, если у вас 64-битный Linux.

Как установить Wine

Установка Wine в Debian, Kali Linux, Linux Mint, Ubuntu и их производные

Выполните следующие команды:

После установки запустите Wine — возможно, он предложит скачать необходимые шрифты и другие компоненты:

Чтобы проверить версию Wine выполните команду:

Установка Wine в Arch Linux

Откройте текстовый файл /etc/pacman.conf:

В нём найдите и раскомментируйте строки (убедитесь, что раскомментировали обе строки, иначе изменения не вступят в силу):

Обновите информацию о пакетах:

Как запустить программу в Wine

Запуск двойным кликом по исполнимому файлу

Для запуска Windows приложений в Linux обычно достаточно дважды кликнуть по ним. Но может быть так, что .exe файл будет открываться менеджером архивов или другим приложением (обычно менеджером архивов).


В этом случае кликните по файлу правой кнопкой мыши, выберите пункт «Открыть с помощью» и выберите Wine.

Если у вас в контекстном меню не появился Wine, то сделайте так:

  • нажмите правой кнопкой на приложение, которое хотите запустить
  • выберите «Открыть с помощью», а затем «Другое»


  • поставьте галочку «Пользовательская команда» и там, где строка для ввода, введите wine. Поставьте галочку «Сохранить ассоциацию» и «Установить как приложение по умолчанию», нажмите ОК. Теперь все .exe файлы будут открываться двойным кликом.


В Ubuntu ( GNOME 3) в контекстном меню отсутствует Wine и невозможно добавить пользовательскую команду. Для исправления выполните следующее:

Если столкнётесь с ошибкой, что файл wine.desktop отсутствует, то найдите его с помощью следующей команды и отредактируйте приведённую выше команду:

Кликните правой кнопкой мыши по .exe файлу и выберите пункт, который называется «Открыть в другом приложении».


Затем выберите «Посмотреть все приложения».


Нажмите на «Wine — загрузчик Windows программ» и затем нажмите кнопку «Выбрать».



Запуск в командной строке

Поскольку программы Windows часто ищут файлы относительного того места, откуда они были запущены, при использовании командной строки вы должны запускать их очень специфическим способом: «сменить каталог» на папку, в которой расположена программа, и запустить файл .exe, используя только его имя файла. Например:

Использование wine start

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

Вам нужно использовать wine start, если вы укажете полный путь к .exe, потому что это позволяет Wine установить рабочий каталог для программы, если он ей нужен.

Вы можете указать Wine путь в стиле DOS или Windows в одинарных кавычках, например:

Вы также можете использовать двойные кавычки, но вам нужны две обратные косые черты вместо одной:

Если вы предпочитаете использовать путь в стиле Unix, используйте параметр /unix для запуска, например:

Передача аргументов командной строки Windows

Если вы используете программу с аргументами в Windows, например:

То вы можете сделать то же самое в Wine, запустив:

То есть командная строка идентична, за исключением wine перед ней. Обратите внимание, однако, что вам может потребоваться экранировать некоторые специальные символы обратной косой чертой из-за того, как они обрабатываются в оболочке Linux. Например:

Запуск файлов .msi

Файлы MSI нельзя запускать напрямую; вам нужно использовать либо программу Wine msiexec, либо запуск Wine с терминала:

Графическая среда Wine в стиле Explorer

Если вы предпочитаете использовать графический интерфейс для управления файлами, возможно, вам стоит рассмотреть возможность использования winefile. Это приложение Winelib поставляется с Wine и может быть найдено с другими программами Wine. Это полезный способ просмотреть конфигурацию вашего диска и найти файлы, а также вы можете запускать программы прямо из Winefile. Обратите внимание, что многие функции ещё не реализованы.

Чтобы его открыть выполните:

Как в Wine запустить файл .bat

Вы можете запустить файл .bat разными способами:

1. Выполните команду

Найдите файл .bat и запустите его двойным кликом.

2. Выполните команду

И найдите в окне Проводника нужный вам файл.

чтобы сразу попасть в нужную папку.

Когда найдёте файл .bat, то дважды кликните на него.

3. Вы можете запустить файл .bat в командной строке, используя конструкцию вида:

Если вы используете путь до файла в файловой системе Linux, то обязательно нужно указать опцию /unix.

Как установить программу в Wine и создать ярлык

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

Как уже сказано, вам необязательно помещать файлы с программой именно туда. Вы можете запускать портативные программы показанными выше способами.

Если программа распространяется в виде установщика (инсталлятора), то просто запустите этот установщик с помощью Wine. В большинстве случаев всё пройдёт как в Windows, будет выполнена обычная установка и на рабочем столе вашей Linux и в меню появится ярлык для запуска программы.


Для портативной программой вы также можете сделать ярлык. Для этого кликните правой кнопкой мыши по рабочему столу и выберите пункт «Создать кнопку запуска здесь» (в Cinnamon), «Создать значок запуска» (в XFCE) или аналогичный пункт.

Обычно есть возможность установить иконку, в том числе присутствуют иконки программ, когда-либо запускаемых в Wine.

Даже если «мастер значка запуска» позволяет указать рабочий каталог, то лучше не полагаться на него. В качестве команды запуска укажите команду вида:

То есть команда для выполнения включает в себя две подкоманды — переход в нужный каталог и запуска исполнимого файла.

К примеру, исполнимый файл находится в папке /home/mial/.wine/drive_c/Program Files (x86)/foobar2000/ и называется foobar2000.exe, тогда команда запуска следующая:


Обратите внимание, что:

  • указан абсолютный, а не относительный путь до папки
  • если в пути содержатся пробелы или другие специальные для оболочки символы (например, скобки), то они должны быть обязательно экранированы или путь должен быть помещён в кавычки.

Другой пример, когда файл находится не на диске Wine: нужно создать ярлык для запуска файла /mnt/disk_d/Share/Conses/ConsFed/cons.exe, тогда команда запуска следующая:


Если для работы программы необходима специальная версия Wine или дополнительные компоненты, то можно найти скрипты, которые упрощают их установку, о них будет позже в разделах, посвящённых PlayOnLinux и winetricks.

Встроенные в Wine программы

В Wine имеется несколько встроенных «стандартных программ Windows».

Читайте также: