Решил как-то я поставить Wine. Ведь прошло уже достаточно времени, наверняка есть адекватные туториалы или мануалы по установке. Так ведь?
Как всегда, есть некоторые нюансы. Есть большинство мануалов на английском, но полезным будет тот, который ты понимаешь. Вроде бы очевидно, но многие просто копипастят команды, а потом ноют, что у них Линукс поломался.
Я же ориентировался по ветке репозитория моего дистрибутива на моём ноутбуке MAIBENBEN M545. Ветка называется "Jammy" а сама ссылка на репозитории ведёт на репу от huawei. Оказывается, что HUAWEI поставляет дистрибутивы Kubuntu в различные китайские бренды, не только Xiaomi, honor, matе-ы. Не ожидал. Почему именно Kubuntu? Возможно, из-за того, что графическая система Plasma больше всего напоминает интерфейс Windows 10. Так или иначе на этом бренде система Linux с графической системой X11.
К слову, ноутбук MAIBENBEN M545 поставляется с двумя моделями процессоров.
AMD Ryzen 5 4500U и AMD Ryzen 5 Pro 4650U.
Настраивалось всё на ноутбуке с AMD Ryzen 5 Pro 4650U. Я брал с процессором 4650U Pro, так как последний имеет удвоенное число потоков (12, вместо 6) на ядро.
Оба имеют графическую встройку "Radeon RX Vega 6 (Ryzen 4000/5000)".
Установка
Вот первый простой мануал, как установить Wine.
https://phoenixnap.com/kb/how-to-install-wine-on-ubuntu
Как видно, никаких отличий для Kubuntu нет. Отличаются только ссылки на мануалы и их заголовки. А путь и алгоритм всегда один и тот же.
Проверяем архитектуру и начинаем установку Wine с WineHQ репозитория. Cpu на MAIBENBEN M545 стоит Ryzen 4650U Pro с архитектурой x86_64
(ещё она известна как amd64). Проблем с установкой быть не должно.
Запускать Wine как в указанном мануале НЕ нужно. Просто проверяем версию Wine и всё.
Поскольку для запуска в дальнейшем потребуется определить некий WINEPREFIX - каталог в котором будет лежать окружение под Windows с указанной архитектурой (архитектура указывается переменной средой WINEARCH=win32 или WINEARCH=win64). Тут очень важный момент, на котором спотыкаются многие юзвери.
Во-первых, придумайте своё, ОБЫЧНОЕ имя для папки, путь к которой вы укажете в WINEPREFIX, это же ваша папка. Например, Win32Games или Win64Games. НЕ ИСПОЛЬЗУЙТЕ ИМЯ ".wine". Имена с точкой интерпретируются как скрытые папки.
Во-вторых, делайте всё от обычного пользователя, иначе Вы определите WINEPREFIX для пользователя root, но не для себя.
Так вот, создали у себя эту папку, допустим в каталоге home/Wine32Games и вызываем winecfg, указав архитектуру (WINEARCH) и полный путь к папке (WINEPREFIX).
cd ~
mkdir Win32Games
WINEARCH=win32 WINEPREFIX=/home/gattor/Win32Games/ winecfg
После выполнения этих команд, у Вас откроется окно настроек. В настройках выбираете версию Windows (можно выбрать Windows 10 или Windows 7 для старых игр). Проверяете, что у Вас не включена эмуляция экрана раб. стола. Она Вам не понадобится.
Далее, ставим саму игру, например Plants Vs Zombies или Warcraft 3. Exe-шник открываем командой wine, не забыв всё так же указать две переменные WINEPREFIX и WINEARCH перед самой командой, как дано ниже.
WINEARCH=win32 WINEPREFIX=/home/gattor/Win32Games/ wine /home/gattor/Downloads/PvZ.exe
Запустится инсталлятор, где Вы стандартно ставите игру. После установки, если у Вас всё было настроено правильно, то на рабочем столе у Вас появится ярлык с игрой и иконкой. В содержимом файле ярлыка, например, "Plants Vs Zombies.desktop", Вы увидите строчки
[Desktop Entry]
Name=Plants vs. Zombies
Exec=env WINEPREFIX="/home/gattor/Win32Games/" wine C:\\\\users\\\\Public\\\\Desktop\\\\Plants\\ vs.\\ Zombies.lnk
Type=Application
StartupNotify=true
Path=/home/gattor/Win32Games/dosdevices/c:/Program Files (x86)/Plants vs. Zombies
Icon=B87A_PlantsVsZombies.0
StartupWMClass=plantsvszombies.exe
Создавать ярлыки вручную ВАМ НЕ НАДО! Если у Вас не работает ярлык, то поздравляю, где-то Вы накосячили. (Ошиблись именем папки, забыли выйти из рута).
DirectX и прочее.
Для этого есть программа, как winetricks. Скачиваем её через менеджер пакетов, затем запускаем.
Если нужно, Вы можете вручную скопировать *.dll файлы и настроить библиотеку как встроенную. На YouTube был ролик, как Китаец копировал исходники (https://www.youtube.com/watch?v=BefTUxsRiwY).
Wineprefix на других разделах дисков
Окей, а если я хочу поставить префикс на большой раздел, где много места? Тут появляются сюрпризы. Во-первых Вам НЕ НАДО это делать через winecfg, не добавляйте диски. Вам же нужно создать новый префикс на устройстве с достаточным объёмом памяти, так ведь? Просто берёте и создаёте новый каталог на новом устройстве.
Итак, в чём же может быть проблема? В файловой системе.
Китайцы поделили диск на три раздела (плюс первый раздел для загрузчика ОС). Так вот основной раздел, к которому монтируется корневой каталог "/" и где лежат файлы для системы Linux, монтируется стандартно под файловую систему ext4. С ней проблем нет. Но вот два свободных раздела на 190 GB смонтированы под файловую систему "ntfs". Эта файловая система "ntfs" не смонтирована в пользовательском пространстве, и, скорее всего они её оставили, под установку Windows. Если Ваш префикс лежит на диске с файловой системой "ntfs", то у Вас всплывёт проблема доступа, wine просто не запустится. Вам нужно перемонтировать нужный Вам раздел под файловую систему "fuseblk" с помощью программы ntfs-3g (не mount), она монтирует ntfs в пользовательском пространстве. Чем это отличается от обычного mount ? Можно об этом почитать здесь
Причём, если Вы хотите, чтобы Ваш раздел монтировался при запуске под нужную файловую систему, (а не делать каждый раз вручную в терминале) то Вам необходимо создать службу, которая стартует при запуске ОС через systemd и запускает простой скрипт, который выполняет данную команду.
Как определить такую службу описано в ниже данном туториале, доступный по ссылке:
https://www.lw92.me/index.php/archives/550
Я просто создал файл скрипта rc.local, положил его в /etc, внутри скрипта написал.
#!/bin/bash
ntfs-3g -o rw,uid=1000,gid=1000,iocharset=utf8,uhelper=udisks2,umask=0000,fmask=0000,dmask=0000 /dev/nvme0n1p4 /media/gattor/<uuid>/
Где "<uuid>" - это uuid устройства, вы его можете найти в каталоге "/dev/disk/by-uuid/" где определены символические ссылки на файлы устройств в каталоге "/dev". Здесь реальное устройство описано файлом "/dev/nvme0n1p4", а папка "/media/gattor/<uuid>/" - его точка монтирования. Перед аргументами стоит список опций, указанных после флага "-o". Их описание приведено по ссылке здесь, А также в этом мануале
Почему бы не прописать монтирование устройства в файл /etc/fstab ?
Очень просто, потому что Вы можете его испортить и сломать запуск системы. К тому же нам нужна ntfs в пользовательском пространстве (fuseblk), а монтирование ntfs по прежнему смонтирует его как было. А указав тип ntfs-3g, вместо ntfs, Вы упадëте в Recovery Mode из-за неизвестной файловой системы.
Поэтому да, ntfs-3g это программа, а не файловая система. Она монтирует NTFS в пользовательском пространстве.
Далее, я определил файл "rc-local.service" в каталоге "/etc/systemd/system/". В него вписал следующее содержимое
[Unit]
Description=Local Startup Script
[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Обратите внимание, на тип сервиса "oneshot" и свойство "RemainsAfterExit=yes". По сути это означает одноразовый запуск скрипта при старте системы, который не уничтожается сразу же, а остаётся активным в фоне. Это нужно, потому что при выгрузке, могут пропасть изменения, сделанные этим скриптом.
Не забываем про разрешения на эти файлы. Скрипт делаем исполняемым (+x) а файл сервиса доступный для чтения и записи владельцу а также для чтения остальным (644).
sudo chomd +x /etc/rc.local
sudo chmod 644 /etc/systemd/system/rc-local.service
И запуск службы
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
Проверяем, что смонтировано всё правильно через команду
df -hT
Wineprefix для других пользователей.
Здесь ждёт ещё один сюрприз. По умолчанию, разделы, которые были смонтированы с файловыми системами, монтируются под рутом. Когда Вы создаёте пользователя и его группу при первом запуске, для доступа к разделам он добавляется в список контроля доступа файла (FACL - File Access Control List). А какого файла? А файла - папки "/media/<user_name>/". (где <user_name> - Ваше имя пользователя). Если Вы решите добавить новых пользователей, то обнаружите, что они не имеют доступа к другим разделам (тем самым, которые смонтировали Китайцы aka Basic Data Partition). Всё, что нужно, для исправления, так это выполнить одну простую команду. Я лишь добавил доступ для своей группы так:
setfacl -m g:gattor:r-x /media/gattor/
И ни в коем случае НЕ ЛЕЗЬТЕ в перемонтирование разделов. Это не решение проблемы с доступом.
Итак, а что же с префиксом? Мы можем добавить новый префикс (каталог) в котором будут ссылки на старый префикс. В конкретном случае, в качестве примера я создал ещё одного пользователя с той же группой "gattor" и именем "gattortest". Настроил его, что он в той же группе, что и я с помощью команды
usermod -g gattor gattortest
Далее я создал папку для WINEPREFIX-а "/home/gattortest/Win32Games/". Скопировал оттуда файлы "*.reg" из корневого каталога "/home/gattor/Win32Games/". Назначил им нового владельца - данного пользователя gattortest. Затем определил ссылки на папки "dos_devices" и "drive_c" из префикса. А в корневом каталоге старого префикса поставил биты setuid, setgid для всех файлов через chmod.
chmod -R 6755 /home/gattor/Win32Games/
И всё. Ах да, вручную придётся создавать ярлыки, т. к. они не создаются автоматом при настройке для нового пользователя. При запуске программы, автоматом всё настроится так, как надо. Инструкцию я брал из этого источника: https://obu4alka.ru/multi-wine-linux.html#Nastrojka_mnogopolzovatelskogo_wine
ИТОГИ
Я ставил Wine 9.0 стабильной ветки. Plants VS Zombies спокойно запустились.
Warcraft 3 же я ставил на другой раздел, который смонтировал в "fuseblk" (ntfs-3g). У этой игры на Wine есть косяк с запуском роликов из папки "movies". Дело в том что они проигрываются через всторенный плеер "Player.exe" а wine запрещает его запуск в целях безопасности.
Для устранения косяка, самое простое было - это переименовать папку в "movies_bk". И игра запустилась. Что касается рекомендации по запуску с флагом "-opengl", то ставить этот флаг мне не понадобилось. Игра летала на высоких настройках по умолчанию.
P. S. Заметил особенность, что разрешение по умолчанию в браузере подставляется автоматом на 1080p. Это такой процессор со встройкой хороший?
Комментарии (7)
whocoulditbe
28.10.2024 16:45если Вы хотите, чтобы Ваш раздел монтировался при запуске под нужную файловую систему, (а не делать каждый раз вручную в терминале) то Вам необходимо
прописать строчку в /etc/fstabЧестно говоря, ожидал в статье хотя бы сборку wine из исходников, а тут рассказывают, как выполнить apt-get install wine и ярлык сделать. И это "средний" уровень сложности статьи!
Потраченного времени жаль.
stanukih
Почему выполнена версия kubuntu? Есть проблемы с kde? Отличия от Ubuntu? Вроде лет за 10 использования не сталкивался. Что за версия 22.02? Вроде есть 22.04. Почему не 24.04?
Что на счёт
sudo apt update
sudo apt install playonlinux
Там и префиксы сами ставятся и для конкретных программ настройки уже есть. И можно разве версии wine. Может есть какие-то реальные причины для написания этой статьи?
OldNileCrocodile Автор
Насчёт версии - поправил опечатку.
Kubuntu ставили Китайцы, видимо посчитали, что рабочий стол на KDE ближе к интерфейсу Windows 10. Можно обновить и до 24.04. Вот на MAIBENBEN стоит именно Kubuntu.
Отличие kubuntu от ubuntu в наборе программ (драйверов) и графических систем. Например, у ubuntu по умолчанию файловый менеджер - Nautilus, а у Kubuntu - Dolphin.
Рабочий стол в ubuntu основан на GNOME, а в Kubuntu свой KDE фреймворк (написанный на Qt, в отличие от GTK). Ну и графические системы могут отличаться, где-то Wayland, а где-то X11. Вот на MAIBENBEN стоит X11.
Никто Вам не мешает ставить GNOME на kubuntu и иметь два типа графических cеансов. (Как говорится, делай настройки под себя). Можете даже юзать программы с пакетов из GNOME на плазме (я так сочетания клавиш менял, ибо в KDE Plasma с этим проблема).
Wine по умолчанию определяет единый префикс "~/.wine" для всех приложений, если его не переопределять через WINEPREFIX. Вот как раз WINEPREFIX и надо указывать для специфического окружения конкретных программ. Конечно, если у Вас есть универсальный playonlinux - это уже надстройка над Wine, позволяет управлять сразу несколькими версиями Wine и кидает каждую программу в отдельный префикс. Т. е. это уже следующий уровень.
stanukih
Я прекрасно знаю чем отличается kde от Gnome. Вопрос был, есть ли разница в контексте wine. Так можно надевать 20 статей, установка на Kubuntu, Lubuntu, Edubuntu, Linux Mint Cinnamon, Linux Mint Mate... Прибавим сюда версии дистрибутивов... И для каждой программы партия статей.
И того весь habr завален шелухой
LuchS-lynx
мне нравится playonlinux, но там битые ссылки на библиотеки для винды и проект долгое время застрял на версии 4.3.4
t3n3t
Он мертв. Есть lutris и portproton. Рекомендую последнее.