Удивлен, что на Хабре все еще нет описания программы winetricks и плюсов, которые она может дать.
Многие сталкивались с ситуацией, когда Windows-программе требуется какой-то компонент для запуска. Например, .NET, Mono или DirectX.
Устанавливать их руками — долго и муторно — нужно искать дистрибутивы, скачивать, указывать параметры… Особенно в ситуации, когда установка wine выполняется впервые и ставить нужно много.
Сообщество Wine решило эту проблему.
Для облегчения этой задачи появилась отличная программа winetricks. В последней версии она имеет как консольный, так и графический интерфейс. Сам интерфейс предельно прост — выбор пакета и кнопка начала установки.
Установка.
Для корректной работы программы нам потребуется собственно wine, cabextract и сама winetricks.
Первое и второе вы можете установить через пакеты дистрибутива, а вот сам WT придется ставить руками.
Самую свежую версию winetricks можно взять на:
winezeug.googlecode.com/svn/trunk/winetricks (Спасибо TiGR за ссылку). Ниже приведена устаревшая стабильная версия.
$ su
Password:
# wget -c www.kegel.com/wine/winetricks -O winetricks
# mv winetricks /usr/sbin/
# chmod a+rwx /usr/sbin/winetricks
# exit
Запускать программу надо именно под тем пользователем, под которым у вас работает wine, иначе софт установится не туда, куда нужно. Права root НЕ НУЖНЫ.
Теперь запустим.
Для открытия GUI с выбором компонента:
$ winetricks
Для полуавтоматической установки (название и описания компонентов выводятся по ключу —help):
$ winetricks "components names"
На данный момент winetricks знает около сотни различных компонентов и приложений, включая Mono, FireFox, .NET Framework, IE и DirectX.
-
April 6 2020, 16:21
- IT
- Напитки
- Cancel
Установка Wine 5
Для LUbuntu 18.04 родная версия 3. Но корректная установка .NET Framework возможна начиная с версии Wine 4.21 — в более ранних версиях существует баг с требованием установить .NET Framework 2.0a. Предлагали пойти более простым путём — правкой реестра, но оказалось, что реестр в Wine не содержит пункта Разрешения.
Для начала подключите репозиторий для скачивания самой новой версии по этой инструкции. В лучших традициях Ubuntu в конце выйдет ошибка:
Следующие пакеты имеют неудовлетворённые зависимости:
winehq-stable : Зависит: wine-stable
Она означает, что не установлен пакет libfaudio0:i386
Для установки пакета libfaudio0:i386 подключите ещё один репозиторий и обновите систему. При добавлении репозитория снова произойдет ошибка (не обнаружится ключ Release.key), но на этот раз её можно проигнорировать.
После всего этого снова запустите установку Wine
sudo apt install —install-recommends winehq-stable
Проверить версию установленной Wine можно командой:
wine —version
Настройка Wine
Для установки .NET Framework необходимо переключить Wine в 32-битный режим командой: WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg Будет предложено доустановить пакеты wine-mono и gescko. От wine-mono отказываемся, gescko устанавливаем.Также необходимо установить версию Windows: Windows XP. Для этого нужно вызвать окно конфигурации Wine командой: WINEPREFIX=~/.wine32 winecfg
Версию ОС стоит проверить и в случае ошибки:
«Для установки и настройки Microsoft .NET Framework необходимо использовать параметр «Включение или отключение компонентов Windows» в панели управления».
Установка .NET Framework 3.5 SP1
Скачайте дистрибутив .NET Framework 3.5 SP1 на диск.Сделайте папку с дистрибутивом текущей.Запустите установку командой: WINEPREFIX=~/.wine32 wine start dotnetfx35.exe
У меня установка прошла без ошибок.
Завершающий штрих — ручная перестройка триггера Global Assembly Cache (GAC)
WINEPREFIX=~/.wine32 wine «c:\windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe» update
Работа других программ, основанных на .NET Framework, при этом не гарантирована. У меня не запустилась.
Общие вопросы
wineserver
— служба, выполняющая роль ядра ОС Windows. Для каждого префикса запускается своя служба, что позволяет одновременно выполнять несколько программ из разных префиксов. Рекомендуется использовать данную команду с ключом-k
, если префикс перестал функционировать;wineboot
— служба, выполняющая инициализацию, запуск и перезагрузку префикса. Так же она выполняет симуляцию завершения работы и перезапуска для программ, запущенных в префиксе;regedit
— аналог редактора реестра Windows. Настройки, которыми можно управлять черезwinecfg
иwinetricks
, сохраняются в ветку реестраHKEY_CURRENT_USERSoftwareWine
;winecfg
— программа для настройки префикса. Наиболее часто используемые вкладки:- Приложения — выбор того, под какую версию Windows будет изменяться префикс. На данный момент по умолчанию выбрана Windows 7;
- Диски — подключение виртуальных и физических разделов, DVD-приводов, сетевых дисков. При создании префикса по умолчанию подключено два виртуальных диска — C: и Z:. Диск C: является системным каталогом префикса, а диск Z: ведет в корень файловой системы Linux.
Как может быть установлен Wine в Astra Linux
Wine в Astra Linux может быть установлен:
-
при использовании Astra Linux Special Edition 1.7 — из расширенного репозитория (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования и Интернет-репозитории Astra Linux Special Edition x.7).
Wine, доступный в расширенном репозитории Astra Linux Special Edition 1.7, поддерживает только 64-разрядную архитектуру.
- из сторонних репозиториев (например, репозиториев Debian — см. Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов);
- из загруженных файлов пакетов .deb:
- для запуска Internet Explorer в Astra Linux Special Edition 1.7 — Wine версии 7.0.1, поддерживающий 32-разрядную архитектуру, который можно скачать по ссылке: wine_7.0.1-0-astra-se17_lsb_amd64.deb;
Из подключенных репозиториев Wine может быть установлен штатным менеджером пакетов (см. Графический менеджер пакетов synaptic) или командой apt:
sudo apt install wine
Для установки из файла с пакетом .deb:
sudo apt install ./<имя_файла>
Где располагаются файлы Wine?
Получить полный список файлов установленного пакета можно командой:
dpkg -L <имя_пакета>
Отдельно следует отметить служебные каталоги:
- Для Wine 7.0.x, установленного из репозитория Astra Linux Special Edition 1.7 или из deb-пакета используется каталог
/usr/share/wine
. Исполняемые файлы располагаются в каталоге/usr/bin/;
- Для Wine, установленного из сторонних источников, используется каталог
/opt/<установленная_версия_wine> (библиотеки)
Исполняемые файлы располагаются в каталоге/opt/<установленная_версия_wine>/bin/
. Таким образом, каждая версия устанавливается в отдельный каталог, что позволяет установить одновременно несколько версий.
Пользовательские файлы Wine располагаются в пользовательских каталогах в так называемых префиксах — см. Что такое префикс? Что располагается в префиксе?.
Что такое префикс? Что располагается в префиксе? Как указать префикс?
Префиксы — подкаталоги в домашнем каталоге пользователя. В префиксы Wine помещает все файлы, относящиеся к приложениям Windows, установленным пользователем: ПО Windows, библиотеки, реестр. В том числе:
dosdevices
— каталог, в котором перечислены виртуальные диски. В Windows разделы блочных устройств представлены в виде абстрактных дисков (томов), каждый из которых обозначается буквой. К примеру, системный диск по умолчанию называется «C:»;drive_c
— виртуальный диск C:, на котором располагаются компоненты Windows;update-timestamp
— метка времени;system.reg
,user.reg
иuserdef.reg
— файлы реестра Windows, которые являются централизованным древовидным хранилищем настроек Windows-программ;winetricks.log
— файл, содержащий список команд использованных при настройке префикса черезwinetricks
.
Префикс общего назначения имеет название .wine
. Для некоторых приложений могут создаваться свои префиксы, например для Internet Explorer — .wine-IE8
. Используемый по умолчанию префикс можно задать в переменной окружения WINEPREFIX:
export WINEPREFIX=~/.wine
Префикс также можно указать при запуске программы, переопределив переменную окружения. Например, для запуска Internet Explorer в префиксе .wine-IE8
:
WINEPREFIX=~/.wine-IE8 /opt/wine-7.13/bin/wine ~/.wine-IE8/drive_c/Program Files/Internet Explorer/iexplore.exe
Указание префиксов и архитектур через переменные окружения
Как указано в предыдущем разделе, префикс может быть задан значением переменной окружения WINEPREFIX. Аналогично могут использоваться следующие переменные окружения:
-
WINE — путь к исполняемому файлу
wine
. Например:export WINE=/opt/wine-7.13/bin/wine
-
WINEARCH — используемая архитектура префикса. Допустимые значения: win32 и win64. Например:
export WINEARCH=win32
Значения переменных окружения, заданные с помощью команды export, сохраняются до выхода из пользовательской сессии и применяются глобально ко всем командам. По необходимости для отдельных команд можно переопределить значения переменных. Например, если одновременно используются Internet Explorer и iexplore, имеющие разные префиксы и архитектуры, то команды для их запуска могут быть такими:
-
Internet Explorer (префикс — wine-IE8, архитектура — win32):
WINEPREFIX=~/.wine-IE8 WINEARCH=win32 $WINE ~/.wine-IE8/drive_c/Program Files/Internet Explorer/iexplore.exe
-
iexplore (префикс — wine, архитектура — win64):
WINEPREFIX=~/.wine WINEARCH=win64 $WINE iexplore
Для того, чтобы удалить ранее заданную переменную окружения, можно использовать команду unset:
unset WINEARCH
Виды сборок и актуальные версии Wine для ОС Astra Linux
Вид сборки | Описание | Актуальная версия |
---|---|---|
stable |
Стабильная ветка | 4.0 и 7.0.x |
devel |
Разрабатываемая сборка | 7.13 |
staging |
Экспериментальная ветка. Содержит набор нестабильных исправлений и функциональных возможностей. Не рекомендуется для использования без конкретных целей. | 7.13 |
cpro |
Разрабатываемая сборка с поддержкой КриптоПРО | 7.0 |
специализированные сборки под конкретное программное изделие | Например, T-Flex CAD, Справки БК, InnovaSystem LIS |
Запуск файлов в Wine в форматах .exe, .msi, .msp, .bat, .application
Wine, доступный в расширенном репозитории Astra Linux Special Edition 1.7, поддерживает только 64-разрядную архитектуру.
-
.exe:
wine <имя_файла>.exe
-
.msi:
wine msiexec /i <имя_файла>.msi
-
.msp:
wine msiexec /p <имя_файла>.msp
-
.bat:
wine start <имя_файла>.application
-
.application (для запуска требуется компонент .NET):
winetricks -q dotnet40
wine start <имя_файла>.application
Запуск Wine от имени суперпользователя
Запускать Wine в сессии суперпользователя (root)
или с использованием sudo
ЗАПРЕЩАЕТСЯ. Такой запуск дает приложениям Windows, потенциально содержащим вредоносный код, полный доступ к компьютеру.
Если ранее осуществлялся запуск Wine с использованием sudo
, то необходимо удалить префикс с помощью команды:
sudo rm -fR ~/.wine
Если префикс был создан в сессии суперпользователя (root)
, то удалить префикс необходимо в каталоге /root
.
Gecko и Mono
Mono — проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения (ПО). В основе проекта лежат спецификации на С# и CLI, переданные Microsoft в организации по стандартизации. Но Mono — это не просто клон .Net, здесь есть свои собственные технологии и библиотеки, которых нет в MS .NET. Цель Mono — помочь в переносе написанных для Windows .Net-программ под Linux и другие ОС. В связи с отсутствием полной совместимости, использование Mono для запуска приложений Microsoft .NET невозможно.
Gecko — это свободный движок вывода веб-страниц для браузера при работе Wine в сети Интернет. Если в Wine не предполагается использование сети Интернет (в том числе для работы Справочных страниц в ПО), то использование Gecko не требуется.
Порядок установки Mono и Geko описан в статье Установка wine на Astra Linux.
Почему не работает установка/запуск ПО 32-разрядной архитектуры в Wine в Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)?
Wine, доступный в расширенном репозитории Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), поддерживает только 64-разрядную архитектуру.
Как запустить ПО 32-разрядной архитектуры в Wine в Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)?
Для запуска 32-разрядных приложений в Astra Linux Special Edition 1.7 требуется:
- Использовать Wine версии 7.0.1, который можно скачать по ссылке: wine_7.0.1-0-astra-se17_lsb_amd64.deb;
- Создать 32-разрядный префикс.
Как создать 32-битный префикс в Wine?
Для создания префикса с 32-разрядной архитектурой выполнить следующие команды:
-
Создать переменную окружения с указанием архитектуры:
export WINEARCH=win32
После задания переменной окружения префиксы, которые будут создаваться в текущем сеансе «Терминала Fly», будут иметь 32-разрядную архитектуру.
-
Выполнить команду для создания префикса:
wineboot
Команду wineboot можно не выполнять, а вместо нее сразу выполнить команду winetricks с установкой необходимых пакетов. Нужный префикс (.wine
) при этом будет создан автоматически.
Internet Explorer и iexplore
Internet Explorer и iexplore — это два разных Web-браузера, которые можно использовать в среде Wine:
- Internet Explorer (IE, IE8) — приложение Microsoft Windows, которое может быть установлено и запущено в 32-битной среде Wine;
- iexplore — приложение Wine, которое устанавливается вместе с Wine работает в 64-битном префиксе;
Как запустить iexplore в Wine
Для запуска iexplore:
- Установить wine (см. Установка wine на Astra Linux) и настроить переменные окружения;
-
Выполнить команду:
$WINE iexplore
Предполагается, что в переменной окружения WINE сохранен путь к исполняемому файлу wine.
Как установить и запустить Internet Explorer (IE) в Wine?
Версии IE выше версии 8 в Wine не работоспособны. Версия 8 (IE8) работает стабильно с Wine версий 7.0.1 и 7.13. Далее рассматривается работа с версий 7.13.
Для установки IE8 требуется:
-
Проверить, включена ли блокировка трассировки ptrace:
sudo astra-ptrace-lock status
и, если блокировка включена (активна), то отключить блокировку:
sudo astra-ptrace-lock disable
и перезагрузить компьютер;
-
Установить пакет cabextract;
sudo apt install cabextract
-
Создать 32-разрядный префикс Wine и установить приложение:
export WINEPREFIX=~/.wine-IE8
export WINEARCH=win32
export WINE=/opt/wine-7.13/bin/wine
winetricks ie8
winetricks -q msxml6 win2kПри выполнении команд будет задан вопрос про необходимость установки компонента Mono. Для использования IE8 этот компонент не требуется, и от его установки можно отказаться.
Запуск IE8 осуществляется командой:
$WINE ~/.wine-IE8/drive_c/Program Files/Internet Explorer/iexplore.exe
Устранение ошибок, возникающих при работе с Wine
Ярлык не работает. Как запускать ПО Wine через рабочий стол?
Когда установщик приложения Windows пытается создать ярлык приложения, Wine вместо ярлыка создает файл file.desktop
. Чтобы откорректировать этот файл откройте Свойства — Ярлык — Команда и приведите команду к следующему виду:
При указании пути, где есть спец. символы (в примере: пробелы, скобки и символы «обратная косая черта» («») в указании пути Windows), такие символы требуется экранировать двумя символами обратная косая черта: «\», при этом сами символы «обратная косая черта» должны быть удвоены. То есть:
- символ пробел представляется как последовательность «\ » (две обратные косые черты и пробел);
- символы скобка представляются как последовательность «\(» или «\)» (две обратные косые черты и скобка);
- символ обратная косая черта представляется как последовательность «\\» (четыре обратные косые черты)
Так, путь «C:Program Files (x86)Name POSl.exe» будет задан в виде:
env WINEPREFIX=»/home/u/.wine-name» wine C:\\Program\ Files\ \(x86\)\\Name\ PO\\Sl.exe
Wine cannot find the FreeType font library. To enable Wine to use TrueType fonts please install a version of FreeType greater than or equal to 2.0.5
Для устранения данной ошибки требуется корректно установить пакет ia32-libs
в Astra Linux Special Edition 1.7. Для этого:
-
Удалить ранее установленный пакет
ia32-libs
:sudo apt remove ia32-libs
-
Удалить Wine:
sudo apt remove <установленный_пакет_wine>
-
Установить пакет
ia32-libs
из репозитория:sudo apt install ia32-libs
- Повторно установить Wine (см. Как может быть установлен Wine в Astra Linux).
dpkg: зависимости пакетов не позволяют настроить пакет ia32-libs
Для устранения данной ошибки выполнить действия из предыдущего пункта.
X Error of failed request: GLXBadFBConfig Major opcode of failed reqiest: 151 (GLX)
Данная ошибка может возникнуть у пользователей с видеокартами AMD, NVIDIA, IGPU. Для ее решения настроить параметр MESA_GL_VERSION_OVERRIDE
:
export MESA_GL_VERSION_OVERRIDE=3.3
Чтобы не вводить данный параметр постоянно для запуска ПО, рекомендуется внести его в ярлыки следующей командой:
sed -i ‘s~^Exec=env (.*)~Exec=env «/bin/bash -c env MESA_GL_VERSION_OVERRIDE=»3.3» 1″~’ <имя_файла_с_ярлыком>
libGL error: failed to load driver: swrast X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 151 (GLX)
Данная ошибка может возникнуть у пользователей с видеокартами NVIDIA. Для ее устранения удалить символическую ссылку на библиотеку в разделе /usr/lib32/i386-linux-gnu
:
sudo rm /usr/lib32/i386-linux-gnu/libGL.so.1
Unhandled Exception: System.ComponentModel.Win32Exception: Доступ запрещен
Для устранения данной ошибки отключить блокировку трассировки ptrace
. Отключить блокировку можно двумя способами:
-
В «Терминале Fly» ввести следующую команду:
sudo astra-ptrace-lock disable
-
Открыть Панель управления — Безопасность — Политика безопасности — Настройки безопасности — Системные параметры. Снять отметку Блокировка трассировки ptrace для всех пользователей, включая администраторов.
Для вступления в силу изменения блокировки ptrace требуется перезагрузка системы.
warning: wineserver not found!
Данная ошибка будет возникать у пользователей только при отсутствии пути к Wine. Если Wine установлен в каталоге /opt/<версия_wine>
, то для работы winetricks
следует определить значение локальной переменной wine
:
export WINE=/opt/<версия_wine>/bin/wine
После определения переменной можно работать с «winetricks».
Winetricks
Назначение и установка
Winetricks — сценарий оболочки загружающий недостающие библиотеки (DLL) и шрифты из доверенных источников.
Для корректной работы winetricks
в ОС Astra Linux перед началом установки winetricks
необходимо установить пакеты ca-certificates, cabextract
и libmspack0
.
Для работы с графической оболочкой winetricks
требуется установить пакет zenity
.
Для установки пакетов:
-
Для Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7) с подключенным расширенным репозиторием: Интернет-репозитории Astra Linux Special Edition x.7 и Astra Linux Common Edition 2.12 установить пакеты из репозиториев:
sudo apt install ca-certificates libmspack0 cabextract zenity
-
Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) загрузить с помощью web-браузера пакеты: cabextract и libmspack0. Далее предполагается, что пакеты сохранены в подкаталог «Загрузки» домашнего каталога:
sudo apt install ./libmspack0_*_amd64.deb ./cabextract_*_amd64.deb ca-certificates zenity
Загрузить и установить winetricks
:
Компонент dotnet
Компонент .NET Framework устанавливается для обеспечения взаимодействия .net-программ с другими компонентами ОС.Взаимодействие обеспечивается через обмен запросами, независимо от того, на каком языке программирования были созданы данные программы.
Используя winetricks, можно установить для архитектур amd32, amd64 компонент dotnet
, который будет взаимодействовать с программами, использующие данный фреймворк.
Для установки dotnet
выполнить:
winetricks -q dotnet48
Список доступных dotnet
для установки:
winetricks list-all| grep dotnet
Компонент vcrun
Библиотеки, позволяющие запускать программы, в разработке которых была использована среда Microsoft Visual C++, известная так же как MSVC.
Используя winetricks, можно установить для архитектур amd32, amd64 компонент vcrun
, который будет взаимодействовать с программами, использующими данные библиотеки.
Для установки vcrun
выполнить команду:
winetricks -q vcrun2019
Для получения списка доступных vcrun
для установки выполнить команду:
winetricks list-all| grep vcrun
Компонент mdac
Mdac — совокупность технологий компании Microsoft, позволяющих получить унифицированный способ доступа к данным различных реляционных и не реляционных баз данных.
Используя winetricks, можно установить для архитектуры amd32 компонент mdac
, который будет взаимодействовать с программами, связанными с базами данных.
Для архитектуры amd64 компоненту mdac
требуется создать 32-битный префикс, с установкой необходимых библиотек и изменений реестра Windows.
Для установки mdac
выполнить команды:
export WINEARCH=win32
winetricks -q mdac28
Wine — программа для запуска приложений Windows на компьютерах под Unix.
Запуск Wine на Windows был мечтой фанатов, которые следуют зову сердца «Мы делаем то, что должны, потому что не обязаны это делать», по крайней мере, с 2004 года, когда кто-то попытался скомпилировать Wine в Cygwin и сломал реестр хост-системы.
Оправдание: «А как же старые приложения, которые не работают должным образом в последних Windows?». Но мы-то понимаем, что истинная причина — «Я долго страдал за своё искусство, теперь ваша очередь».
В конце 2008 года меня одолела навязчивая мысль — и я (кажется, это был я) создал страничку WineOnWindows на вики Wine. Вкратце: это было вообще невозможно, поскольку всё работало через Cygwin, MinGW или Windows Services для Unix. Текущая страница не намного успешнее.
Windows 10 представила подсистему Windows для Linux, а Ubuntu удобно загружается из Microsoft Store. В результате наша глупая идея реализуется практически сама собой, разве что надо вручную установить переменную среды DISPLAY.
До сих пор это умопомрачительно бесполезно. Wine работает только с 64-разрядными приложениями Windows, то есть даже не со всеми приложениями, которые идут в составе самой Windows 10.
(Первоначальный проект стартовал после того, как кто-то не смог запустить Encarta 97 на Windows 10. Таким образом, как и любое настоящее гиковское решение, оно на самом деле не решает оригинальную проблему пользователя).
Но я хочу ещё раз подчеркнуть: сейчас это работает тривиально. Я не какой-то сумасшедший гений, которые реализовал фантастический проект — просто я, кажется, первым публично объявил о данном факте.
Как сделать эту глупую вещь
1. У вас же 64-битная Windows 10, верно? Это единственная версия с WSL.
2. Установите WSL. Панель управления -> Программы -> Программы и компоненты -> Включение и отключение компонентов Windows. Поставьте галочку «Подсистема Windows для Linux». Перезапустите Windows.
3. Зайдите Microsoft Store, установите Ubuntu (в основном, для её запуска и создан WSL). Я установил Ubuntu 18.04 LTS. Откройте Ubuntu, и вы увидите терминал bash.
4. Установите следующее из командной строки bash:
sudo dpkg --add-architecture i386
sudo apt update; sudo apt upgrade
sudo apt install wine-stable
Можете установить более актуальную версию Wine, если хотите помаяться дурью (не забывайте о двух новых библиотеках, которые нужны для wine-devel >=4.5 и которые ещё не вошли в Ubuntu!) Дайте мне знать, если это сработает.
5. Добавьте к своему .bashrc
такую строчку:
export DISPLAY=:0.0
Вероятно, вы захотите запустить это и в текущем окне bash.
6. Установите VcXsrv, красиво упакованную версию xorg, скомпилированную для Windows, — просто возьмите последнюю версию исполняемого файла и запустите его. Запустите X Server через кнопку «Пуск» и XLaunch. Он проведет вас через дефолты — оставьте большинство из них как есть. Я на всякий случай поставил галочку «Отключить контроль доступа». Сохраните конфигурацию.
6а. Если хотите проверить, что X-сервер настроен правильно, установите sudo apt install x11-apps
и запустите xeyes
для краткого путешествия обратно в 80-90-е.
7. Сам wine
не работает, потому что 32-битные бинарники не запускаются в WSL. На нашей 64-битной Windows 10 выдаётся ошибка /usr/bin/wine: 40: exec: /usr/lib/wine/wine: Exec format error
. Видимо, это исправили в WSL 2.
А пока запустим Блокнот в Wine!
wine64 /usr/lib/x86_64-linux-gnu/wine/fakedlls/notepad.exe
TO DO: 32-битная поддержка. Придётся подождать выхода WSL 2. Интересно, будут ли работать древние программы Win16 — по идее, они должны запуститься в Wine, даже если больше не работают в самой Windows.
32-битные приложения через qemu
Спасибо анонимному комментатору, который предложил, как подступиться к запуску 32-битных приложений.
sudo apt install qemu-user-static sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic 'x7fELFx01x01x01x03x00x00x00x00x00x00x00x00x03x00x03x00x01x00x00x00' --mask 'xffxffxffxffxffxffxffxfcxffxffxffxffxffxffxffxffxf8xffxffxffxffxffxffxff' sudo service binfmt-support start
И теперь мы можем сделать:
fun@DESKTOP-7F6DU8P:~$ wine --version wine-3.0 (Ubuntu 3.0-1ubuntu1)
Впрочем, Encarta 97 всё равно не работает:
fun@DESKTOP-7F6DU8P:/mnt/e$ wine SETUP.EXE wine: Unhandled page fault on read access to 0xffffffff at address 0x11df:0x00002c11 (thread 0011), starting debugger... 0011:err:seh:start_debugger Couldn't start debugger ("winedbg --auto 15 108") (2) Read the Wine Developers Guide on how to set up winedbg or another debugger
Для тех, кто в теме: file
говорит SETUP.EXE: MS-DOS executable, NE for MS Windows 3.x
, так что нам нужно спуститься до редких 16-битных программ.
Encarta 97 устанавливается и работает безупречно в Wine 4.13 на Linux… но в 4.13 на Windows 10 все ещё нет:
fun@DESKTOP-7F6DU8P:~$ wine /mnt/e/SETUP.EXE Xlib: extension "MIT-SHM" missing on display ":0.0". Xlib: extension "MIT-SHM" missing on display ":0.0". 0009:err:process:__wine_kernel_init boot event wait timed out 001d:err:process:__wine_kernel_init boot event wait timed out wine: Unhandled page fault on read access to 0xffffffff at address 0x11cf:0x00002c11 (thread 001e), starting debugger...001e:err:seh:start_debugger Couldn't start debugger ("winedbg --auto 28 152") (2) Read the Wine Developers Guide on how to set up winedbg or another debugger 001d:err:ntdll:RtlpWaitForCriticalSection section 0x7e6273e0 "syslevel.c: Win16Mutex" wait timed out in thread 001d, blocked by 001e, retrying (60 sec) Xlib: extension "MIT-SHM" missing on display ":0.0". Could not load wine-gecko. HTML rendering will be disabled. 001e:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7b4a6abc wine client error:1e: write: Bad file descriptor
Конечно, он выдаёт разные сообщения об ошибках в нескольких запусках…
Для запуска приложений, которые изначально разработаны для ОС Windows, пользователи Linux используют Wine. Если переводить дословно, то Wine — это НЕ эмулятор Windows, это альтернативный API. Для запуска большинства программного обеспечения Windows чистого Wine не хватает, нужны дополнительные шрифты или библиотеки.
К примеру, для запуска современных игр из под Wine требуется наличие графической библиотеки DirectX, установка под Wine которой вызывает очень много вопросов.
Столько же вопросов вызывает установка windows-шрифтов, .NET Framework`ов, библиотек MS Visual Basic и т.д.
Облегчить работу по установке всего этого может скрипт Winetricks, с помощью которого установка дополнительных библиотек и шрифтов к Wine становится очень простой.
Возможности скрипта Winetricks
Скрипт Winetricks упрощает установку некоторых приложений и библиотек Windows, которые нужны для корректной работы различных приложений и игр, запускаемые посредством Wine. С помощью скрипта Winetricks можно установить приложения и библиотеки, перечисленные ниже в таблице под спойлером.
Название пакета | Описание пакета |
---|---|
art2kmin | MS Access 2000 runtime. После этого, по-хорошему, нужна лицензия на Access 2000 |
colorprofile | Стандартный цветовой RGB-профиль Windows |
comctl32 | MS common controls 5.80 |
comctl32.ocx | MS comctl32.ocx and mscomctl.ocx, comctl32 необходимые библиотеки для VB6 |
controlpad | MS ActiveX Control Pad |
corefonts | Microsoft шрифты: Arial, Courier, Times |
d3dx9 | Основная библиотека для DirectX 9 |
dcom98 | MS DCOM (ole32, oleaut32); После этого, по-хорошему, нужна лицензия на Win98 |
dirac0.8 | Уже устаревший DirectShow-фильтр Dirac 0.8 |
directx9 | Полная версия DirectX 9 (не рекомендуется использовать совместно с отдельно установленной библиотекой d3dx9) |
divx | DivX видеокодек |
dotnet11 | .NET Framework 1.1 (После этого, по-хорошему, нужна лицензия на Windows) |
dotnet20 | .NET Framework 2.0 (После этого, по-хорошему, нужна лицензия на Windows) |
fdshow | ffdshow видеокодек |
flash | Adobe Flash Player и Firefox-плагин |
fm20 | Библиотека MS Forms 2.0 |
fontfix | Исправление плохих шрифтов, которые приводят к «падению» некоторых приложений |
fontsmooth-disable | Отключение сглаживания шрифтов |
fontsmooth-gray | Включение сглаживание шрифтов Grayscale |
fontsmooth-rgb | Включение субпиксельное сглаживание RGB |
fontsmooth-bgr | Включение субпиксельное сглаживание BGR |
gdiplus | Библиотека gdiplus.dll для корректного отображения в приложении PowerPoint |
gecko | HTML-движок рендеринга страниц (Mozilla) |
gecko-dbg | HTML-движок рендеринга страниц (Mozilla), с отладкой |
hosts | Добавляет файл C:windowssystem32driversetc{hosts,services} |
icodecs | Intel-кодек (Indeo) |
jet40 | MS Jet 4.0 Service Pack 8 |
liberation | Библиотека шрифтов ОС Red Hat (Sans, Serif, Mono) |
mdac25 | MS MDAC 2.5: Microsoft ODBC drivers и т.д. |
mdac27 | MS MDAC 2.7 |
mdac28 | MS MDAC 2.8 |
mfc40 | MS mfc40 (Microsoft Foundation Classes from Visual C++ 4) |
mfc42 | MS mfc42 |
mono20 | mono-2.0.1 |
mono22 | mono-2.2 |
msi2 | MS Installer 2.0 |
mshflxgd | MS Hierarchical Flex Grid Control |
msls31 | MS Line Services 3.1 |
msmask | MS Masked Edit Control |
msscript | MS Script Control |
msxml3 | MS XML версии 3 |
msxml4 | MS XML version 4 |
msxml6 | MS XML версии 6 |
ogg | OGG фильтры/кодеки: flac, theora, speex, vorbis, schroedinger |
ole2 | MS 16 bit OLE |
pdh | MS pdh.dll |
quicktime72 | Apple Quicktime 7.2 |
riched20 | MS riched20 and riched32 |
riched30 | MS riched30 |
tahoma | Шрифт MS Tahoma |
urlmon | MS urlmon.dll |
vb2run | MS Visual Basic 2 runtime |
vb3run | MS Visual Basic 3 runtime |
vb4run | MS Visual Basic 4 runtime |
vb5run | MS Visual Basic 5 runtime |
vb6run | MS Visual Basic 6 runtime |
vcrun6 | MS Visual C++ 6 sp4 libraries (mfc42, msvcp60, msvcrt) |
vcrun2003 | MS Visual C++ 2003 libraries (mfc71,msvcp71,msvcr71) |
vcrun2005 | MS Visual C++ 2005 libraries (mfc80,msvcp80,msvcr80) |
vcrun2005sp1 | MS Visual C++ 2005 sp1 libraries |
vcrun2008 | MS Visual C++ 2008 libraries (mfc90,msvcp90,msvcr90) |
vcrun2008sp1 | MS Visual C++ 2008 sp1 libraries |
vjrun20 | MS Visual J# 2.0 libraries (requires dotnet20) |
wininet | MS wininet.dll (requires Windows license) |
wme9 | MS Windows Media Encoder 9 (По-хорошему, нужна лицензия Windows) |
wmp9 | MS Windows Media Player 9 (По-хорошему, нужна лицензия Windows) |
wmp10 | MS Windows Media Player 10 (По-хорошему, нужна лицензия Windows) |
wsh56 | MS Windows Scripting Host 5.6 |
wsh56js | MS Windows scripting 5.6, jscript only, no cscript |
wsh56vb | MS Windows scripting 5.6, vbscript only, no cscript |
xact | MS XACT Engine (x3daudio?_?.dll, xactengine?_?.dll) |
xvid | xvid video codec |
autohotkey | Autohotkey (open source gui scripting language) |
firefox3 | Firefox 3 |
ie6 | Microsoft Internet Explorer 6.0 |
kde | KDE for Windows installer |
mpc | Media Player Classic |
vlc | Видеоплеер VLC |
allfonts | Установка шрифтов (corefonts, tahoma, liberation) |
allcodecs | Установка видеокодеков (xvid, ffdshow, icodecs) |
fakeie6 | Set registry to claim IE6sp1 is installed |
native_mdac | odbc32 and odbccp32 |
native_oleaut32 | oleaut32 |
nt40 | Запускать все приложения через Wine, как из под Windows NT 4.0 (дублирует выбор Версия Windows в окне Свойства Wine) |
win98 | Запускать все приложения через Wine, как из под Windows 98 (дублирует выбор Версия Windows в окне Свойства Wine) |
win2k | Запускать все приложения через Wine, как из под Windows 2000 (дублирует выбор Версия Windows в окне Свойства Wine) |
winxp | Запускать все приложения через Wine, как из под Windows XP (дублирует выбор Версия Windows в окне Свойства Wine) |
vista | Запускать все приложения через Wine, как из под Windows Vista (дублирует выбор Версия Windows в окне Свойства Wine) |
winver= | Можно указать любую ОС (по умолчанию используется Windows XP) |
volnum | Переименование drive_c в harddiskvolume0 |
Использование скрипта Winetricks
Чтобы установить пакет с помощью скрипта Winetricks нужно:
- Установить пакет cabextract. Установить этот пакет можно командой:
sudo apt-get install cabextract
- Загрузить скрипт Winetricks к себе на компьютер:
wget http://www.kegel.com/wine/winetricks
- Установить нужную программу можно используя графическую оболочку, запустив ее командой:
sh winetricks
Где можно выбрать нужный пакет, доступный в Winetricks, для установки:
Либо вручную установить, выбранный пакет, с помощью скрипта Winetricks:
sh winetricks directx9
- Дождаться полной установки выбранного пакета. После полной установки в консоли будет снова активна строка ввода команды.
Примечание!
Если, к примеру, библиотека DirectX 9 уже имеется загруженная, то можно подложить ее в кэш Winetricks. Для этого создаем директорию, если она еще не создана:
mkdir ~/.winetrickscache
и помещаем в нее EXE-файл с графической библиотекой DirectX 9.
Комментарии (34)
Wiki
HOW-TO: Ускорение игр под X
Автор – Димитрий Бойчев (Dimitar Boichev) Искрение спасибо за инструкцию.
Приходилось ли вам играть в оконном режиме из-за того, что не могли переключиться по alt-tab в другое окно, в котором вас ждал вызов Skype/Jabber/и т.д.? Приходилось ли вам вообще отказываться от игры из-за крайне низкой скорости прорисовки (FPS)? А не бывало ли вам обидно, когда в двухмониторной системе мышка убегала на другой монитор вместо того, чтобы прокрутить карту в StarCraft? Если бывало что-то похожее, то самое время освоить новую технологию: запуск игр в отдельном сеансе (X-session)!
Я попытался выяснить, как решить три вышеописанных проблемы, и обнаружил, что игры, запущенные в новом сеансе, работают быстрее. Counter Strike Source 640×480 с качеством LOW тормозил так, словно был запущен c NORMAL, но когда я запустил его в отдельном сеансе, он «летал» в режиме 1024×748 NORMAL. Слишком хорошо, чтобы быть правдой? Отнюдь! Позвольте объясниться.
Первое, что надо сделать, это запустить новый сеанс Х-сервера, для чего надо открыть терминал, запустить nano от имени администратора (посредством sudo) и поправить файл Xwrapper.config:
sudo nano /etc/X11/Xwrapper.config
nano – это простой текстовый редактор, работающий в консоли.
Чтобы узнать больше о /etc/X11/Xwrapper.config, откройте консоль и выполните:
man Xwrapper.config
Открыв Xwrapper.config, найдите строку «allowed_users=console» и измените ее на «allowed_users=anybody». Чтобы сохранить изменения, нажмите Ctrl+X; nano спросит, действительно ли вы хотите сохранить внесённые изменения, нажмите Y, далее редактор выведет имя файла, в который будет сохранён текст, в этой строке просто нажмите Enter – мы же хотим заменить старый файл.
Теперь мы можем запускать дополнительные Х-серверы из-под уже работающего X-сервера, но для этого не помешает перезапустить уже запущенный сервер. Я не уверен, что этот шаг необходим, но он не повредит. После перезапуска сервера настроим игры для запуска в отдельном сеансе. Сначала убедитесь, что игры запускаются не в «виртуальном рабочем столе»: запустите winecfg или откройте
Программы — Wine — Configure Wine.
Если на закладке «Приложения» упомянут EXE-файл вашей игры, щелкните по нему и откройте закладку «Графика», там не должно быть галочки в пункте «Эмулировать виртуальный рабочий стол». Если она там есть, то игра будет запущена в верхнем правом углу монитора, а это совсем не то, что нам нужно.
После этого я написал несколько сценариев для запуска нужных мне игр в отдельном сеансе. То есть я могу запустить их как в основном, так и в отдельном Х-сервере. Если вы не знаете, как писать сценарии оболочки, вот пример (для игры StarCraft и пользователя cherva. Не забудьте исправить параметры под свою обстановку):
Откройте текстовый редактор, например GEdit для GNOME или KWrite для KDE, и наберите:
#!/bin/bash
Х — это команда запуска нового сеанса Х-сервера.
X :2 -ac -terminate -config only_one_monitor.conf & sleep 2
DISPLAY=:2 nice -20 env WINEPREFIX="/home/cherva/.wine" wine "C:GamesStarcraftStarcraft.exe"
-ac — запрещает контроль доступа на уровне узлов, разрешая доступ с любого узла и позволяя любому узлу изменять список управления доступом. Используйте очень осторожно! Этот параметр обычно используется для проведения дистанционного тестирования.
-terminate — заставляет сервер отключиться после завершения запущенной в нем программы.
-config — использовать отдельный файл конфигурации для Х-сервера (помните проблемы с прокруткой в StarCraft?). Файл only_one_monitor.conf — по сути тот же самый /etc/X11/xorg.conf, из которого удалены настройки для второго монитора, так что мышка, подведённая к краю монитора, останется в пределах этого монитора, и игровое поле StarCraft будет прокручиваться. Остальные подробности можно прочесть по адресу: http://linux.die.net/man/1/xserver
Далее команда sleep 2 задерживает выполнение сценария на 2 секунды, чтобы дать новому Х-серверу достаточно времени для запуска.
DISPLAY=:2 — запустить следующую команду в нашем новом Х-сервере, а не в основном.
nice -20 — запустить процесс с наивысшим приоритетом (для большей производительности), далее указан запускаемый процесс: обычная команда, которую Wine формирует при создании ярлыка для программы в меню или на рабочем столе.
env WINEPREFIX — каталог настроек wine.
wine — собственно команда запуска эмулятора Wine. «C:GamesStarcraftStarcraft.exe» — запускаемая игра.
Набрав сценарий, сохраните его в какой-нибудь каталог. Затем откройте этот каталог в файловом менеджере (Nautilus или еще каком). Найдите сохранённый файл: нам надо сделать его исполняемым, для чего щёлкните по нему правой кнопкой мышки и выберите «Свойства». Перейдите на вкладку «Права» и поставьте галочку в строке «Позволять выполнение файла как программы». Закройте окно «Свойства» и откройте сценарий двойным щелчком. На Ubuntu вам будет предложено выбрать желаемое действие:
«Запустить в терминале / Показать / Отменить / Запустить».
Выбирайте «Запустить» и наслаждайтесь FPS >20, прокруткой в стратегиях и отсутствием проблем с переключением между окнами. Если вам понадобится вернуться в изначальный Х-сервер, нажмите Ctrl+Alt+F7, а оттуда в игру — Ctrl+Alt+F9 (или иногда — Ctrl+Alt+F8). Имейте в виду: я не бог весть какой знаток Linux, так что могут быть и другие способы сделать то же самое, но у меня и так работает, чему я очень рад.
Мой способ:
Ctrl+Alt+F1
Прирост не большой, но тоже сойдёт.
xinit -- :2
wine путь/к/папке/game.exe