Although it’s hard for us Linux fanatics to delve into the world of Windows, we all need to embrace Windows from time to time for some specific tasks. Despite all its rewards, Linux is still not a household name among regular computer users, and the chances are that most of your non-technical friends use Windows as their primary system.
So, if you want to share some standard software or play the latest games, Windows is still the way to go. However, we Linux folks can’t permanently switch to Windows and overlook the flexibility Linux has afforded us over the years.
Luckily, a comprehensive set of powerful Windows emulators for Linux exists to make our lives more comfortable and allow us to benefit both systems concurrently.
Best Windows Emulators for Linux
We’ve selected a compelling set of robust Windows emulators for Linux that will allow you to utilize some exceptional but Windows-specific software. If you’re a die-hard gamer, stop worrying, as we’ve also outlined some great methods that will enable you to run your favorite games from your Linux machine seamlessly.
Although the title emphasizes Linux Windows emulator, think of the below picks as workarounds that let you run Windows programs in Linux instead.
1. Wine
Wine is the de-facto Windows emulator for Linux users who want to run Windows applications, software, and games in their Unix systems effortlessly. In its fourth major release, Wine allows you to run your favorite Windows-only programs without any extra hassle.
It’s very easy to install Wine on virtually every POSIX-compliant operating system, including Linux, macOS, & BSD. Moreover, Wine supports many modern-day applications out of the box, thus eliminating the need to tweak them inside your Linux environment.
Features of Wine
- Wine comes with pre-built support for the X-11 window system and allows users to stream their display on remote X terminals.
- Wine supports DirectX (up to version 11) based games and applications out of the box and Windows MultiMedia (WinMM) layers.
- You can interface Windows programs with your Linux system devices, such as sound devices, keyboards, modems, serial devices, ASPI scanners, and such, very easily.
- Wine Linux has excellent API coverage, making it a viable choice for running everyday Windows programs effortlessly.
Get Wine
2. VMware Workstation
VMware is a powerful virtualization platform enabling Linux users to run Windows applications seamlessly inside their machines. You can think of VMware as software that allows you to run an operating system inside another operating system.
This is a very popular Linux Windows emulator among Linux enthusiasts who need to run Windows-based applications regularly. Although proprietary, VMware is arguably among the best Windows emulators you can use for Linux.
Features of VMware Workstation
- VMware Workstation allows users to run multiple instances of Windows operating systems on Linux machines.
- It is paid software, but you can utilize the VMware Workstation Player, its free version, to run Windows programs.
- VMware Workstation allows your system to share up to 3 GB of shared video memory and supports OpenGL out of the box.
- This Linux Windows emulator supports DirectX 10.1, 4K resolution, Wayland protocol, SSH login, Virtual networking, and many more.
Get VMware Workstation
3. CrossOver Linux
CrossOver Linux is, without any doubt, one of the best Windows emulators for Linux you can use on any Linux machine. It is, in effect, a Microsoft Windows compatibility layer that enables Linux users to run their favorite Windows apps inside their Linux system.
CrossOver Linux is based on Wine and packs a select set of widely used Microsoft Windows applications. It integrates seamlessly well with modern GNOME and KDE-based Linux distributions.
Features of CrossOver Linux
- Installing standard Windows applications is much easier in CrossOver Linux than in other ordinary Linux Windows emulators.
- CrossOver Linux doesn’t require you to buy a Windows license like most Windows emulators for Linux require.
- Applications run from CrossOver Linux are faster because they do not depend on virtual machines.
- CrossOver Linux offers Bottles, a unique feature that allows separate Windows environments to be packaged and self-contained with user-selected programs.
Get CrossOver Linux
4. QEMU
QEMU is a robust virtual machine emulator and hardware visualizer that can run Windows programs directly inside a Linux system. It can act in different ways, but you’ll primarily use it as a full system emulator for running a Windows system inside Linux.
You can then install applications developed for Windows in your Linux system. It is maintained very well and takes care of bugs and errors faster than most Windows emulators for Linux.
Features of QEMU
- QEMU can save the current state of installed Windows systems alongside the running apps and restore them accurately.
- Users can access and utilize their Linux system’s peripherals, including hard disks, CD-ROM drives, network cards, audio interfaces, and USB devices, directly from QEMU.
- QEMU is written in the C programming language and is faster than most Windows emulators for Linux.
- It comes out with a GNU GPL license, allowing users to tweak the emulator as required.
Get QEMU
5. VirtualBox
VirtualBox is a free hypervisor that can act as a compelling Windows emulator for Linux. A hypervisor is a virtualization platform that allows users to install and run an operating system inside from another. So, Linux users can install VirtualBox and utilize it to run Microsoft Windows applications in their Linux system.
Although many people don’t like the notion of using a virtual machine as their Linux Windows emulator, as of now, it is the best method if you want all the functionalities of a working Windows system.
Features of VirtualBox
- VirtualBox is written in C, C++, and x86 assembly language, thus offering faster performance than most contemporary Windows emulators for Linux.
- It is maintained by Oracle, which updates it very frequently and patches bugs pretty fast.
- Corporations widely use VirtualBox to power resource-intensive clouds and for testing software.
- Oracle has made the source public so that open-source enthusiasts can modify VirtualBox according to their requirements.
Get VirtualBox
6. PlayOnLinux
PlayOnLinux is an impressive graphical frontend built on top of the Wine compatibility layer for Linux. It aims to make it easier for users to run their favorite Windows applications, such as video games, Microsoft Office, Microsoft Internet Explorer, and Quicken, as well as many others, directly inside their Linux computer.
PlayOnLinux removes many of the redundancies you’d have to face otherwise when installing these and provides an easy-to-deal solution for every Linux user.
Features of PlayOnLinux
- PlayOnLinux isolates Windows environments and apps, much like CrossOver does with Bottles.
- Users can create flexible bash scripts to automate the configuration of their Windows apps in this Linux Windows emulator.
- It comes under an open-source GNU GPL license, which allows Linux users to modify the source without requiring explicit permission.
- PlayOnLinux is written in Python and is easy to understand and customize.
Get PlayOnLinux
7. Lutris
Lutris is an exceptionally robust and powerful open-source gaming platform built for GNU/Linux. It allows users to play a compelling set of video games available only for Microsoft Windows systems.
It provides a robust interface that enables users to install, configure, and launch Windows-only games acquired from any source. It performs relatively well at playing many games than most Windows emulators for Linux.
Features of Lutris
- Lutris employs robust installation scripts curated by community members to provide an optimal experience of modern Windows games.
- This Linux Windows emulator comes with pre-built support for various games, including games for both Windows and retro gaming consoles.
- Lutris is entirely free to use and provides a top-notch gaming performance matched by only a handful of Windows emulators for Linux.
- Popular games supported by Lutris include The Elder Scrolls, League of Legends, Overwatch, The Witcher 3, Warframe, Battlefield V, and World of Warcraft.
Get Lutris
8. Q4Wine
Q4Wine is not an entirely new Windows emulator for Linux. It is, instead, a Qt4 fork of the popular Wine software. It aims to provide a handy and flexible GUI frontend for Wine, making managing the emulator easier.
If you’re having trouble installing and configuring Wine in your everyday Linux machine, you can easily opt-in for Q4Wine. It offers every functionality Wine offers, binds a compelling user interface that is easy to deal with, and enables Windows applications to run flawlessly.
Features of Q4Wine
- Q4Wine allows users to run two different versions of Wine simultaneously.
- Due to its robust user interface, it is very easy to access and control multiple Wine processes with Q4wine.
- Q4wine comes with in-built support for the Wine AppDB browser and FuseISO\Embedded FuseISO mount profiles.
- Thanks to its GNU GPL license, the source can be modified easily to accommodate new features.
Get Q4Wine
9. Steam Play
Steam Play is like a breeze of fresh air for PC gamers who prefer not to switch to Windows entirely from their Linux system. Valve released Steam Play to enable Linux users to access their favorite Windows games directly from their Linux machines, and we can say they did a fair job with it. It supports most titles, but a slight lag in performance can be experienced when playing these games in Linux.
Features of Steam Play
- Users need to install the Steam Beta Client in their Linux systems to access Steam Play.
- Steam Play supports most if not all, Steam games that can be played on major Windows systems.
- It leverages Wine under the hood to enable Linux users to run their favorite Windows-only games.
- Steam Play utilizes Vulkan to enable users to run games that require DirectX support.
Know More
10. JSLinux
JSLinux is one of the most innovative Windows emulators for Linux, and you can use it today to power Windows applications inside your Linux machine. This Linux Windows emulator is different from others because JSLinux doesn’t require you to install a new virtualization platform. Instead, it is run directly from inside your web browser. Fabrice Bellard, the brain behind projects like QEMU and FFmpeg, wrote this mesmerizing PC/x86 emulator.
Features of JSLinux
- JSLinux is written using JavaScript and can be used to benchmark JavaScript applications or runtimes effectively.
- It can only run software available for the Windows 2000 SP4 pack in Linux browsers but provides access to the command prompt and standard Windows filesystem.
- Apart from traditional Windows apps, JSLinux can emulate devices such as PCI bus, VirtIO console, VirtIO 9P filesystem, VGA display, frame buffer, and many more.
- It allows users to connect to the internet from the emulated Windows system but limits connections to two connections.
Get JSLinux
11. Vineyard
Vineyard is a collection of open-source software and utilities that aim to simplify running Windows applications for Linux users. More accurately, Vineyard tries to integrate Wine with everyday Windows software like Office and Microsoft Money, and it is easy and effortless. It also enables Linux users to develop programs that sync seamlessly with Wine and are portable across different systems.
Features of Vineyard
- The vineyard has built-in support for CrossOver Linux and automatically detects supported Wine features.
- It allows users to run Windows applications inside their Linux system’s terminal.
- Vineyard comes with nautilus-wine, an extension for Nautilus, GNOME’s default file manager, that allows users to configure Windows executables properly.
- The vineyard-preferences configuration utility lets users separate their Wine configurations just like CrossOver Linux does with Bottles.
Get Vineyard
12. WinConn
WinConn is one of the most lightweight and straightforward Windows emulators for Linux, and it can run Windows apps directly on Linux machines. It aims to simplify the creation, management, and integration of remote Windows software in traditional Linux systems like Ubuntu, Mint, Arch, and Elementary. If you’re looking for a Windows emulator for Linux free of charge, WinConn might be a viable solution.
Features of WinConn
- WinConn is aimed towards network administrators and only facilitates remote Windows applications like TeamViewer and Chrome Remote Desktop.
- It allows sysadmins to access and manage local folders from remote tools and redirect local printers.
- It works with several different Windows installations, including Windows XP, Vista, 7, and Windows Server 2008.
Get WinConn
13. bochs
bochs is arguably one of the best Windows emulators for Linux when it comes to portability. It is a robust, flexible, and open source IA-32 (x86) PC emulator that allows you to install Windows applications inside your Linux machine.
bochs is very lightweight and requires minimal resources to emulate Windows-based applications. However, it is known for crashing several times when running very resource-intensive Windows applications like Microsoft Office for an extended period of time.
Features of bochs
- bochs is very lightweight and fast due to its low-overhead design and implementation in C++.
- It can emulate various Windows operating systems such as DOS, Windows 95/98, Windows 2000, XP, and Vista.
- bochs can compile and execute instructions for a range of architectures, including 386, 486, Pentium/PentiumII/PentiumIII/Pentium4, or x86-64 CPUs.
Get bochs
14. bhyve
bhyve, pronounced as “bee hive,” is a hypervisor system that allows Linux users to emulate different versions of Windows operating systems and run applications that are available only on the Windows platform.
It can emulate a wide range of traditional Windows environments, including Windows XP, Vista, 7, 8.1, and 10. This Windows emulator for Linux can also run MS Windows Server editions.
Features of bhyve
- It is developed on top of FreeBSD and tested on various GNU Linux distributions, including RHEL, CentOS, Debian, Fedora, OpenSUSE, and Ubuntu.
- This Linux Windows emulator comes with in-built support for UEFI, OmniOS, Hyper-V, and AHCI devices.
- bhyve is open source and can be extended easily without any restrictions.
Get bhyve
15. Cedega
Cedega is an extremely powerful and robust Windows emulator for Linux, which aims specifically at enabling Linux users to play games that are only available for Windows systems.
It was formerly known as WineX, a fork of Wine by TransGaming Technologies. Although the software is currently discontinued and no future updates are scheduled, you can still use it as a workaround when playing old-school Windows games in Linux.
Features of Cedega
- It supports pixel shaders 3.0, vertex shaders 3.0, 3D acceleration, and DirectX support for up to version 9.
- Cadega comes with in-built support for the Joystick, including remapping axes.
- Cedega features a list of popular Windows-based games, including Diablo 2, Fallout 2, Soldier of Fortune 2, and other retro games.
Get Cedega
Ending Notes
Thanks to a comprehensive list of Linux Windows emulators, it is possible to run Windows applications on Linux. However, people often get confused when choosing the best Windows emulator for Linux for various reasons.
Some of them include the lack of modernized Windows emulators for Linux, legacy or old-school virtualizers that often require excess tweaking to begin with, and, of course, improper documentation.
Hopefully, our guide will provide you with the essential insights necessary to find the best solution. If you need to run Windows applications almost every day or play cutting-edge games, we’d recommend dual-boot Windows alongside Linux.
Если вы считаете, что GIMP не ровня Photoshop, и не можете жить без офиса от Microsoft.
1. Wine
Название Wine расшифровывается как Wine Is Not an Emulator. Это своего рода прослойка между приложениями Windows и системой Linux. Он позволяет устанавливать и запускать многие популярные Windows-программы и работать с ними так, как будто это родные приложения Linux.
Чтобы установить Wine, воспользуйтесь соответствующей командой.
1. Ubuntu, Debian, Mint:
sudo dpkg --add-architecture i386
wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo add-apt-repository "deb https://dl.winehq.org/wine-builds/ubuntu/ artful main"
sudo apt-get update
sudo apt-get install --install-recommends winehq-stable
2. Fedora:
sudo dnf install winehq-stable
3. openSUSE:
sudo zypper install wine
4. Arch, Manjaro:
sudo pacman -S wine
Когда Wine установлен, откройте его через ваше меню приложений или с помощью команды winecfg
. При первом запуске Wine может попросить установить некоторые дополнительные пакеты — позвольте ему это сделать. После этого все Windows-программы формата EXE ассоциируются в системе с Wine.
Теперь скачайте установщик нужного вам приложения Windows, найдите папку с ним в вашем файловом менеджере и откройте файл. Либо введите команду wine путь_к_приложению
.
Windows-приложение запустится и будет работать так же, как и всегда. Если вы открыли установочный файл, начнётся установка приложения — как в Windows. Если программа не требует установки, вы сможете начать работать с ней немедленно.
Не все приложения могут быть установлены и запущены в Wine, хотя количество поддерживаемых впечатляет. Полный список можно посмотреть здесь.
2. Winetricks
Wine — неплохой инструмент, однако интерфейс у него оставляет желать лучшего. Если вы намучились с этой программой, но так и не добились результата, попробуйте Winetricks. У неё приятный графический интерфейс для установки и запуска Windows-приложений, в котором куда проще разобраться новичку.
Установить Winetricks можно так:
1. Ubuntu, Debian, Mint:
sudo apt-get install winetricks
2. Fedora:
sudo dnf install winetricks
3. openSUSE:
sudo zypper install winetricks
4. Arch, Manjaro:
sudo pacman -S winetricks
Winetricks позволяет установить различные версии Microsoft Office и Photoshop, плеер foobar2000 и множество других программ. Поддерживаются и такие популярные игры, как Call of Duty, Call of Duty 4, Call of Duty 5, Biohazard и Grand Theft Auto: Vice City. Некоторые программы загружаются автоматически, для других будет предложено вставить установочный носитель. И, естественно, вы можете открывать собственноручно скачанные файлы формата EXE.
3. PlayOnLinux
PlayOnLinux — ещё один удобный инструмент для запуска Windows-приложений в Linux. Как и Winetricks, он обладает простым графическим интерфейсом. Но, в отличие от него, PlayOnLinux позволяет вам выбирать конкретную версию Wine для того или иного приложения. Это полезно, если какая-то из нужных вам программ некорректно работает с новыми версиями Wine. В целом PlayOnLinux выглядит куда симпатичнее и практичнее, чем Winetricks.
Чтобы установить PlayOnLinux, выполните в терминале одну из следующих команд:
1. Ubuntu, Debian, Mint:
sudo apt-get install playonlinux
2. Fedora:
sudo dnf install playonlinux
3. OpenSUSE:
sudo zypper install playonlinux
4. Arch, Manjaro:
sudo pacman -S playonlinux
В меню установки PlayOnLinux можно найти множество предварительно сконфигурированных приложений и игр, которые вы можете загрузить и установить парой щелчков. Кроме того, PlayOnLinux можно скармливать собственные EXE-установщики. Приложение заботливо выберет за вас версию Wine и создаст значок установленной программы на рабочем столе.
4. Crossover
Изредка бесплатные PlayOnLinux и Winetricks не справляются с установкой какого-нибудь особенно привередливого приложения. В таком случае вам может помочь Crossover. Эта программа очень проста в использовании. Вам достаточно указать, какое приложение вы хотите установить, и подсунуть Crossover установочный файл. Всё остальное будет сделано за вас.
Лицензия Crossover на год стоит 39,95 доллара, но у программы есть и бесплатная пробная версия. Рекомендуется сначала установить необходимое вам приложение в ней, чтобы убедиться, что оно работает корректно.
Crossover →
5. VirtualBox
Если ваше приложение упорно отказывается запускаться в перечисленных выше программах, можно пойти на решительные меры и установить его в виртуальной машине. Учтите, что она отнимает гораздо больше системных ресурсов, поэтому использовать её стоит в крайних случаях.
Для запуска приложения в виртуалке вам понадобится установочный образ Windows в формате ISO. Загрузите и установите VirtualBox, создайте в нём виртуальную машину, укажите ей ISO с Windows, а затем просто установите систему как обычно.
Неоспоримый плюс виртуальной машины — в ней работает полноценная операционная система, а значит, запустится абсолютно всё. Минус — прожорливость в плане системных ресурсов, да и тратиться на лицензию Windows для виртуалки накладно.
VirtualBox →
Привет, хабр!
Моя текущая статья будет посвящена работе с полезной утилитой в Unix-подобных ОС как Wine.
Почему я вообще делаю ещё одну статью по работе с Wine, если их и так есть уже очень много? Если в кратце, меня очень расстраивает их качество.
У большинства материалов по Wine нет практической части, очень многое опускается. В них не рассказывается как запускать подавляющее большинство программ, в них просто показывают как запустить простенький EXE из Windows и на этом всё.
Почему это плохо — практически все программы, которые были мною запущены на Wine, требовали ручной доработки среды, иначе не запускалось ничего. Или запускалось, но с огромными проблемами, такие как вылеты, “непрогрузы” UI/UX, лаги, баги и многое другое.
В данной статье речь пойдёт про все эти аспекты работы с программой. В основном будет затронут оригинальный, консольный Wine от WineHQ и скрипт, который позволяет скачивать зависимости — Winetricks, но я также затрону такие графические программы как: Bottle и Lutris, упомяну PortProton(portwein, Linux Gaming).
Я не вижу смысла затрагивать такие программы как PlayOnLinux или CrossOver, так как они уже, можно сказать, устарели.
Что такое Wine
Начну я своё статью с того, а что вообще такое Wine.
Wine — это OpenSource программа, которая позволяет запускать Windows Софт на Unix-подобных ОС(Linux, BSD, macOS и тд), благодаря подмене API системы на таковую из Windows.
Отсюда и следует его полное название, которое является акронимом — Wine Is Not an Emulator.
Wine ничего не эмулирует, он транслирует код из одной среды, в другую. Это не эмуляция, как например в эмуляции консоли NES(misen) или GameCube(Dolphin Emulator). Он не воссоздаёт среду с нуля, как это делают эмуляторы, он предоставляет Windows API для программ, а сам транслирует(для картинки используется протокол от Xorg или XWayland для Wayland протокола) всё это на хост систему — Linux.
В wine есть уже множество встроенных утилит, которые позволяют сделать ощущение для программ, что они работают в привычной для себя среде Windows.
В нём есть CMD, реестр, файловый менеджер(х2), поддержка кастомных DLL-библиотек, IE(который на самом деле не InternetExplorer, а очень урезанный и переделанный Firefox) и многое другое.
Установка Wine в Debian/Ubuntu
Вся статья будет проходить исключительно на debian-based системах, так как они более удобны с точки зрения нахождения всех нужных компонентов(поверьте, на арче найти всё для wine это та ещё задачка, что-то всё равно норовит отвалиться).
Все знания из статьи будут актуальны на любом дистрибутиве Linux, независимо от того, на чём он был основан, но на debian-based будет проще найти всё необходимое.
Для начала нужно обновить пакеты в системе. Введём:
sudo apt update
sudo apt upgrade -y
После того, как обновили пакеты, введём:
sudo dpkg --add-architecture i386
Данная команда добавит в наш дистрибутив поддержку 32-битной архитектуры(в случае с arch, нужно редактировать файл для пакетного менеджера вручную).
К огромному сожалению, без этого нормально настроить работу 32-битных приложений(игры в том числе) не получится. Если вы опустите этот шаг, то большинство приложений у вас работать не будут, так как они до сих пор 32-битные(огромное количество legacy-кода никто не обновляет на современные архитектуры, так как это очень трудозатратно. А ещё, некоторые 64-битные приложения требуют 32-битный библиотек, а они тоже не будут иначе работать).
В этом минус установки wine “нативно”, а не через wine-менеджеры, ибо они идут в flatpak вариантах(предпочтительная установка), которые не взаимодействуют своими пакетами с вашей системой.
Далее, нужно создать папку для ключей от wineHQ. Она нужна для работы, так как с помощью них проверяется целостность файлов, которые вы загрузили с сайта. Введём следующую команду:
sudo mkdir -pm755 /etc/apt/keyrings
После, загрузим ключ и положим его в нашу созданную папку:
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
Далее, добавим файл репозитория в папку, где apt хранит свои репозитории:
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
Обновим репозитории с помощью команды:
sudo apt update
И установим последнюю версию Wine:
sudo apt install --install-recommends winehq-stable -y
После того как её установили, напишем команду:
wine --version
На момент написания статьи(4-6.04.25) последняя актуальная версия wine это 10.0. Если у вас ниже, то значит вы скачали версию не от wineHQ.
WineHQ — это официальные сборки wine. Они наиболее стабильные и наполненные функционалом. Если у вас что-то не работает, это может быть последствием кривой сборки. Нужно это учитывать, когда вы пытаетесь получить помощь(всегда указывайте версию и поставщика wine, например — Soda 9.0 от Bottles).
В Lutris позже мы будем использовать отличную версию от HQ, поскольку в том контексте она будет наиболее оптимальной(по моим личным наблюдениям и тестам).
Встроенные переменные, которые использует Wine для работы
Пришло время познакомиться с некоторыми базовыми понятиями, которыми оперирует wine.
Первое из них — это префикс(prefix).
Префикс — это виртуальное окружение, которое wine использует для хранения файлов(библиотек, windows-бинарников и тд). Именно туда будут устанавливаться все наши приложения, библиотеки и тд.
По сути, это всего лишь папка, но я настоятельно не рекомендую использовать стоковый префикс для хранения приложений(я очень часто видел ситуацию, когда в стоковом префиксе образовывалась лютая помойка и по итогу не работало ничего).
Почему? Всё просто. Конфликты зависимостей.
Очень часто можно наблюдать, что какие-то библиотеки перекрывают работу других(иногда .NET и .NET Core конфликтуют между собой), отчего возникает тонна ошибок, решить которые бывает очень сложно.
Например, вы установили игру из репака. Репак притянул с собой DirectX 9, DotNet Framework 6 и что-то ещё.
Позже, вы поставили ещё одну игру, которая тоже использует DX9, но при этом он старее. Возникают конфликты, которые на Windows достаточно легко устраняются самой системой, но wine — не windows. Некоторые проблемы устранить он не в состоянии. Поэтому совет — никогда не держите все приложения в одном префиксе. Делайте хотя бы логическое разделение на программы и игры(а ещё лучше — группируйте игры между собой, для более эффективного использования дискового пространства).
Рассмотрим пример использования префиксов, чтобы не сильно усложнять себе жизнь.
Например, вы используете графический софт, любите поиграть в старые 3D GTA и визуальные новеллы.
Сделайте 3 префикса — для софта, ГТА и новелл. Почему так? Старые ГТА будут использовать +- свои библиотеки и они не будут мешать другим приложениям существовать, графическому софту вообще DX не нужен, у него свои библиотеки, которые не затрагивают DX, но при этом могут ему помешать работать, а визуальные новеллы, практически все, работают на одном движке, поэтому мешать друг другу тоже не будут(вот тут я не эксперт, но то, во что играл я, в основном использовало один и тот же движок).
Если у вас есть очень специфические игры, которые вы очень долго настраивали(об такой я расскажу в примерах), то держите их обособленно от других. Полностью свой префикс, который не будет пересекаться никакой иной программой, иначе могут возникнуть конфликты.
Стандартный префикс, где wine хранит свои файлы, всегда находится по пути ~/.wine
В чём ещё преимущества префиксов — у них есть битность архитектуры. Вы должны использовать для 32-битных приложений 32-битный префикс, а для 64 — 64(кстати, во всей статье я так и не менял битность ни одного префикса, но это не помешало запускать x86 приложения в x86-64 префиксе).
Да, в современных версиях wine они могут быть взаимозаменяемы(если 32 запускается в 64, но не наоборот), но я бы рисковать не стал, особенно если программа “привередлива”. Поэтому если у вас что-то не работает, то добро пожаловать создавать новый префикс конкретно под неё, с необходимой битностью, зависимостями и тд.
Как создать кастом-префикс
Чтобы создать кастомный префикс, нужно сделать папку в его предполагаемом месте и сделать переменную с её полным путём.
Например, я хочу сделать префикс для игр по пути /home/yan/wine/games
, значит я должен сделать переменную WINEPREFIX
и положить в неё этот путь(можно полностью, либо заменить часть /home/yan
на ~
или $HOME
, тут всё на ваше усмотрение).
export WINEPREFIX=~/wine/games
Дальше нужно запустить wine. Все переменные, которые экспортируются, автоматически подхватываются wine и указывать их не нужно(полезно в скриптах, где нельзя указывать переменные перед командой).
wine
Если вы не хотите экспортировать переменную, можно каждый раз писать полный путь перед wine
WINEPREFIX=~/wine/games wine
Я рекомендую последний вариант, ибо если вы сделали переменную, то:
-
Она сбросится после перезапуска системы, а если вы запускаете программы внутри префикса, то все зависимость поедут, ибо wine будет их искать в стандартном префиксе
~/.wine
, где их просто нет -
Любой запуск wine будет происходить в этом префиксе. Поэтому если вы захотите его сменить, нужно будет сделать
unset WINEPREFIX
, а потом уже заново присваивать другой путь. И так делать каждый раз при его смене. Это не удобно, поэтому проще каждый раз писать полностью только для одной команды, а как закончите с настройкой приложения, чтобы оно работало, сделать скрипт для запуска(я приложу свой пример чуть позже в статье) и положить его в папку с приложением, который он запускает. Далее, вы сможете сделать .desktop значок и запускать приложение из “старта” или с рабочего стола.
Архитектура префикса
Чтобы задать архитектуру префикса, при первом запуске(инициализационный) задайте ещё одну переменную с указанием битности этого префикса
WINEARCH=win32
или WINEARCH=win64
(по умолчанию в современных версиях wine) и запустите команду
WINEARCH=win32 WINEPREFIX=~/wine/games wine
Таким образом у нас создастся 32-битный префикс в папке ~/wine/games
.
Дебаг(отладка) запуска приложения
Я считаю, что самое большое упущение, которое допускают большинство статей — это забивают на возможность отладки запуска приложения и как это делать.
Почему это важно — если вы пробуете запустить приложение и у вас оно просто не запускается, то часто вы не можете понять почему. Вы даже не знаете в какую сторону копать для решения проблемы.
У меня такое было очень часто, когда запускаешь exe игры, видишь открывшийся экран, который тут же крашится без каких либо выводов. Вопрос — а почему? Да чёрт его знает. Без дебага тут делать нечего.
Сам дебаг представляет собой тоже переменную, в которую записываются “каналы” для сбора данных о запуске приложения. Это и встроенная утилита для отслеживания порядка подгрузки DLL-библиотек(где можно понять, что приложению не хватает для работы), и полный вывод лога в консоль о том, что происходит при запуске приложения и тд. Вот самые необходимые(на мой взгляд) каналы для отладки, какие мы будет использовать в дальнейшем:
-
WINEDEBUG=+loaddll
— как понятно из названия — это дебаг для просмотра загрузки dll на всём периоде запуска приложения. Тут можно узнать, что приложение не смогло подтянуть, и что стоит доставить для возможной починки запуска приложения(если дело, конечно, в библиотеке) -
WINEDEBUG=+heap
— что происходит в “куче” при запуске приложения. Может быть особенно полезно при запуске .NET приложения(если хотите узнать больше про “кучу”, вот ссылка(и ещё одна для конкретно .NET) на википедию) -
WINEDEBUG=+module
— подробнее чем +loaddll, иногда может быть полезнее, чем первое -
WINEDEBUG=+relay/+snoop
— показывает подробные вызовы “нативных” DLL(те, которые вы поставили либо ручным копированиям по путям(чуть далее) либо через winetricks). Также, может показывать их имплементацию и целые куски кода, что нарушает политику wineHQ о “Reverse Engineering” -
WINEDEBUG=+fps
— показывает кол-во кадров в секунду в приложениях, работающих на OpenGL, Vulkan и D3D(сокращённое название от Direct3D) -
WINEDEBUG=+seh
— показывает ошибки Windows в 16-ти ричном виде(вы их точно встречали, когда не могли запустить какую-либо игру). -
WINEDEBUG=+all
— показывает абсолютно всю информацию, которая практически всегда является избыточной и делает крайне трудным отладку запуска. Не рекомендую использовать.
Также, можно исключить какой-либо канал из вывода, просто написав «-» перед ним.
Есть ещё очень много каналов отладки, вы можете с ними ознакомиться по этой ссылке.
Как включить дебаг при запуске программы
Добавьте переменную перед wine. Также помните, что каналы можно комбинировать через запятые. Пример запуска с дебагом
WINEDEBUG=+loaddll,+fps WINEPREFIX=~/wine/games wine $PATH_TO_EXE
Переназначения встроенных библиотек нативными
Это очень важный пункт для некоторых программ. Это позволяет изменить библиотеку, которую использует программа для запуска.
Например, у вас есть игра, которая “притянула” с собой DirectX 9, или любую другую библиотеку, которая по магическому стечению обстоятельств просто не работает в wine. Что тогда делать? Если удалить dll из папки с игрой, и поставить dll в wine, то ничего работать также не будет.
Решение тут одно — заменить используемую библиотеку на нативную, которая установлена была в wine. Сделать это очень просто. Нужно взять переменную, в которую положить следующую запись:
WINEDLLOVERRIDES=”ddraw.dll=n,b”
где ddraw.dll соответствует заменяемой библиотеки(в данном случае DirectX 9), а n,b что стоит использовать Native, Built in(нативную, встроенную).
Для того, чтобы это сработало, нужно ещё установить все необходимые библиотеки, которые используются в программе.
То есть, если нужно запустить приложение с дебагом, в префиксе с изменёнными библиотеками, нужно использовать следующую конструкцию:
WINEDEBUG=+loaddll,+fps WINEPREFIX=~/wine/games WINEDLLOVERRIDES=”ddraw.dll=n,b” wine $PATH_TO_EXE
Да, команда монструозная. Если все переменные сначала экспортировать:
export WINEDEBUG=+loaddll,+fps
export WINEPREFIX=~/wine/games
export WINEDLLOVERRIDES=”ddraw.dll=n,b”
А потом использовать, то можно существенно сократить команду до:
wine $PATH_TO_EXE
Но минусы данного подхода я уже описал выше. Я не буду использовать подобные конструкции, только если в скриптах, где я буду сначала экспортить все библиотеки, запускать приложение, а потом их убирать из переменных окружения, с помощью unset.
Смена версии Wine
Чтобы сменить версию wine(например, у вас 2-3 установленных в системе, и вам нужно выбрать одну, которую использовать), можно воспользоваться ещё одной переменной. Как ни странно, но называется она WINE
, где в присваивание вы вписываете путь до бинарника другой версии.
Например, вы собрали wine самостоятельно, и его главный бинарь лежит по пути /opt/wine_8.4/bin/wine, то в переменную вы присваиваете вот такой путь:
WINE=/opt/wine_8.4/bin/wine
И далее вы можете просто писать wine для использования, собственно, wine:
WINE=/opt/wine_8.4/bin/wine WINEPREFIX=~/wine/games wine ….
Встроенные компоненты в wine
Я считаю необходимым рассказать про то, какие встроенные компоненты есть у wine, которые позволяют работать в вашем префиксе, через графический интерфейс(иногда нужно это сделать именно из wine, а не через GUI линукса. Пример использования будет чуть позже).
-
winefile
— проводник, похожий на таковой из windows 3.1; позволяет запускать exe изнутри. Также именно он будет возникать в “попапах”, если приложение будет предлагать сохранить файл. Важное замечание: у вас будет как минимум 2 диска —C:\
,Z:\
.C:\
— это ваш префикс, прям вот весь, ибо prefix по сути и есть дискC:\
вашей “виртуальной windows”(если в него зайдёте, то поймёте почему я так говорю),Z:\
— это корень диска Linux (/
) -
winecfg
— настройка конкретного prefix, настройки очень скудные. По идее, может предоставлять графический подход для замены dll(на n,b например), но у меня никогда это не работало. Также позволяет изменить эмулируемую версию Windows(рекомендую ставить windows 10, если нет потребности в более ранних), добавить диски в систему(если, например, нужен отдельный диск для /home/name, сделать виртуальный рабочий стол и задать ему конкретное разрешение. Это иногда выручает, если приложение не хочет нормально открываться напрямую, или если оно открывается с кривым разрешением. Остальные настройки бесполезны, там настраивать нечего, но иногда нужно туда заходить. -
explorer
— проводник, чем то похожий на первый. Я чаще запускаю его, чем первый. -
regedit
— редактор виртуального реестра(да, wine же предоставляет реестр) -
notepad
— блокнот для редактирования файлов -
taskmgr
— диспетчер задач -
cmd
— консоль -
msiexec
— установка msi файлов(да, с установкой msi пакетов тут есть некоторые “трудности”, о которых позже -
start
— запуск bat/msi/exe файлов с контекстом(очень полезная программа, пример использования будет чуть позже) -
control
— панель управления -
hh
— чтение документации к программам в html файлах(очень редко нужно, если вообще когда-либо нужно) -
uninstaller
— программа для удаления программ, установленных в данный префикс(иногда проще “грохнуть” весь префикс(опять же, один префикс — одно приложение), а не удалять приложения)
Это все встроенные компоненты, которые могут как-то пригодиться.
Чтобы их запустить напишите
wine <название приложения>
Например, давайте запустим winecfg в моём префиске, напишем:
WINEPREFIX=~/wine/games wine winecfg
Также, я рекомендую инициализировать ваш префикс именно такой командой. Так он точно сделает всё правильно.
Как устанавливать зависимости(DLL-библиотеки)
Я считаю, что это один из самых главных разделов статьи, ибо без библиотек у вас может не заработать ни одно приложение(кроме некоторых исключений).
К моему огромному разочарованию, wine не предоставляет инструмента для установки библиотек не в ручном виде. Рассмотрим его и более современный способ.
Как устанавливать библиотеки вручную
Для начала нам нужно узнать, какой именно библиотеки нам не хватает. Давайте предположим, что это библиотека dxvk для трансляции вызовов DirectX 9-11 в нативные(для linux) вызовы Vulkan.
Порядок действий:
-
Ищем нашу библиотеку в интернете или, если есть компьютер с Windows, мы можем скопировать библиотеку оттуда, но я не рекомендую этого делать, ибо могут быть конфликты.
-
Далее, нужно определить её битность. Если это библиотека 32-битная, то мы должны её скопировать в папку
C:\windows\system32
, а если 64-битная, то в папкуC:\windows\syswow64
.
Данный способ установки крайне не рекомендуем, так как можно навредить неправильно установленной библиотекой, или забыть для некоторых сделать копии в 32-битную и 64-битную папку.
Что же делать, если wine не даёт встроенной утилиты для установки? Использовать сторонний скрипт — winetricks.
Установка winetricks
Для начала, обновим пакеты в пакетнике. Напишем:
sudo apt update
sudo apt upgrade -y
Далее, установим winetricks. Для этого напишем:
sudo apt install winetricks -y
Всё, winetricks установлен.
Winetricks предполагает 2 варианта использования — графический и консольный. Начнём со второго.
Установка консольным вариантом
Чтобы установить необходимые библиотеки в префикс, нужно перед командой использовать переменную WINEPREFIX
и просто написать название библиотеки, которую хотите установить, например, установим 3 библиотеки:
WINEPREFIX=~/wine/games winetricks d3dx9_30 d3dx9_31 d3dx9_42
Далее, WT начнёт скачивание библиотек в префикс, который мы ему указали. Он ещё спросит о ваших намерениях, действительно ли вы хотите их установить. Процесс может занять некоторое время, ибо некоторые зеркала, откуда он берёт библиотеки, недоступны из России, и поэтому он будет перебирать все зеркала, пока не найдёт доступное. Иногда данный процесс может затянуться до минут 5-6.
Помните ещё, что данные библиотеки являются частью большой библиотеки d3dx9, которая в свою очередь является библиотекой DirectX 9, которая в качестве DLL будет называться как ddraw.dll.
Установка через графический режим
Далее, графический режим. Тут всё проще, нужно всего лишь написать префикс и WT:
WINEPREFIX=~/wine/games winetricks
У нас откроется следующее окно:
Тут выбираем “Select the Default wineprefix”(он откроет тот, который мы написали перед командой, это для него дефолтный. Просто winetricks тоже позволяет создавать префиксы(вообще, он может выступать как полноценная графическая надстройка над классическим wine, но сделано это несколько топорно и неудобно), и только в том случае он будет “не дефолтным”).
Далее, мы видим следующее окно:
Тут выбираем что хотим установить, в моём случае это DLL, поэтому это первый пункт. Жмём ок и видим следующее окно:
Тут просто долистываем до наших библиотек и жмём чекбоксы у них. Дальше — ок.
Это предупреждение игнорируем всегда. Оно ничего полезного не даёт и, скорее, подбешивает только.
Так выглядит установка библиотек.
После установки нас вернёт на предыдущее окно(оно никогда само не закрывается, только если вылетает. Поэтому обязательно ждите открытия WT снова. Если этого не происходит, то он вылетел и, скорее всего, установленные библиотеки стали битыми).
Давайте установим шрифт! Выбираем второй пункт и жмём ок.
Отмечаем чекбоками шрифты и жмём ок.
В процессе он сыпет ошибками, которые мы тоже смело игнорируем.
Вот установка шрифтов.
В процессе он снова дал ту ошибку, тоже игнорируем.
Всё, шрифты тоже установлены. Нас вернуло на тоже окно. Выходим отсюда, ибо всё что хотели, мы установили.
Мы разобрали самые основные понятия в wine, думаю пришло время переходить к практике и сделать всё поэтапно. От создания префикса, до установки приложений.
Пошаговая настройка wine со скриншотами
Моя система:
Для начала, проверим то, что wine и winetricks установлены.
Напишем в терминал
wine --version
winetricks --version
Создадим папку для нашего префикса с названием “Apps”
Напишем в терминале
mkdir -p ~/wine/Apps
Далее, инициализируем wine в префиксе. Напишем следующую команду в терминале
WINEPREFIX=~/wine/Apps wine winecfg
У нас начнёт выводится подробный лог в терминал и откроется следующее окно:
Если хотите, можете поизучать настройки, но они ничего вам не дадут.
Например, в этом окне вы можете сменить оформление на старое
Вот старая тема wine:
Довольно страшненькая. Я останусь на новой теме.
Да, кстати, как вы можете заметить, снизу у нас есть папки, которые прокинуты в нашу систему. Если, например, вы загрузите файл с браузера, то он окажется в Загрузках вашего пользователя Linux. И все значки на рабочий стол, которые будут делать программы при установке, окажутся на вашем рабочем столе и вы сможете их оттуда запустить. Но очень часто они ломаются, поэтому мы их использовать не будем. Также стоит помнить, что я покажу вам чуть позже скрипт, который я использую для запуска приложений в префиксах.
Всё, мы можем закрывать это окно, оно нам пока-что не нужно.
Запуск Total(Double) Commander в wine
Далее, покажу вам достаточно стандартный пример запуска приложения, которое не требует дополнительных зависимостей и должно 100% запуститься и у вас. Это мною любимый Total Commander(я буду использовать вместо него Double Commander, но сути это не меняет).
Скачиваем Double Commander с сайта.
Скачиваем 64-битную версию в exe формате(msi у меня не захотел устанавливаться, покажу чуть позже на другой программе как с ним работать).
Далее, когда наш установочный пакет скачался, напишем следующую команду в терминал:
WINEPREFIX=~/wine/Apps wine '/home/yan/Downloads/doublecmd-1.1.23.x86_64-win64.exe'
Установочный экран
Тут выбираем папку, куда он будет устанавливаться. Я буду ставить в C:\Apps\DCMD
, что эквивалентно пути в linux $HOME/wine/Apps/drive_c/Apps/DCMD/
Кстати, данный “менеджер файлов” не умеет создавать папки, поэтому придётся создавать из нашей хост системы(можете как в windows просто написать несуществующий путь и он сам создат папки до него).
Когда программа установилась, можем проверить наш рабочий стол, так как я сделал ярлык на рабочий стол при установке.
Вот ярлык появился тут. Откроем его свойства.
Как мы можем видеть, команда запуска тут точно такая же, какую использовал и я. Далее и мы сможем делать такие же ярлыки.
Откроем приложение, только вручную из терминала. Напишем команду:
WINEPREFIX=~/wine/Apps wine start "C:\\Apps\\DCMD\\doublecmd.exe"
Сразу предрекаю вопросы, а что это за такой странный путь в кавычках. Это всё из-за того, как Linux оборачивает любые символы после \. Бэкслеш используется только для спец. знаков, таких как \n, который переведёт “каретку” на следующую строку при печати в консоли. Так как нам нужен именно бэкслеш для путей, мы его оборачиваем в него же, поэтому тут такой странный путь.
В start мы обязаны писать такие пути, или же, мы можем поступить чуть иначе. У программы start есть ключ /unix(да, у всех программ в wine ключи пишутся в стиле DOS(где используется / для ключей, а не как в linux или powershell -)), после которого мы пишем в одинарных кавычках(да, это очень важно) полный путь до нашего исполняемого файла. Пример команды запуска:
WINEPREFIX=~/wine/Apps wine start /unix '/home/yan/wine/Apps/drive_c/Apps/DCMD/doublecmd.exe'
Внимание, тут не работают ссылки для вашей домашней директории, такие как ~
или $HOME
, wine будет выдавать следующую ошибку:
Запускаем приложение и видим, что оно открылось без каких-либо проблем:
А теперь я хочу пояснить, почему практически все используют для примера того, что всё работает именно Total(Double) Commander и Notepad++. Нет, не потому что они такие популярные и всем нужны,а из-за того, что они имеют встроенные зависимости, которые не отторгаются wine.
Total(Double) Commander вообще написан на паскале в среде Borland Delphi(в случае DC это не Delphi, а Lazarus, но сути это не меняет и Double Commander обладает полной обратной совместимостью с любыми расширениями от TC), которые тянет с собой все библиотеки.
Переходим в более сложным приложениям для запуска с “некоторыми проблемами”.
Запуск веб-приложений и этап проблем
Я имею в виду тех приложений, которые написаны на NodeJS с использованием Electron. Почему это важно?
Сейчас всё больше и больше приложений переходят на веб модель, чтобы его можно было запускать как в браузере, так и на десктоп системах, без особых доработок. Electron это вообще по сути Chromium с убранными браузерными особенностями.
Одним из ярчайших примеров является Figma. Давайте запустим её.
Качаем приложение с официального сайта устанавливаем его в тот же префикс.
Напишем команду:
WINEPREFIX=~/wine/Apps wine '/home/yan/Downloads/FigmaSetup.exe'
Как мы видим, само приложение установилось и запустилось, но вот… а что с интерфейсом?
На этом этапе фигма просит войти в свой аккаунт, но вот беда, wine не умеет перенаправлять запросы в системный браузер.
Хорошо, поставим браузер напрямую в wine. Чтобы это сделать, нужно скачать какой-либо браузер. Допустим, firefox.
Качаем exe с сайта. Запускаем уже известной командой:
WINEPREFIX=~/wine/Apps wine '/home/yan/Downloads/Firefox Installer.exe'
Установка началась, перед этим попросив поставить wine gecko.
Установка закончилось, но ничего не запустилось, а почему? А тут начинаем дебагать.
Сначала, нужно узнать куда устанавливать FF. Устанавливается он по пути /home/yan/wine/Apps/drive_c/Program Files/Mozilla Firefox
.
Хорошо, пробуем запускать его через start:
WINEPREFIX=~/wine/Apps wine start /unix '/home/yan/wine/Apps/drive_c/Program Files/Mozilla Firefox/firefox.exe'
Снова мимо. Пробуем поменять путь на виндовый.
WINEPREFIX=~/wine/Apps wine start "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
Тоже мимо. Значит начинаем изучать лог, где можно заметить странное поведение dll.
Значит, запустим с дебагом на dll.
WINEDEBUG=+loaddll WINEPREFIX=~/wine/Apps wine start "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
И тут выясняется интересная проблема, когда мы начинаем смотреть в лог. Вот как выглядят успешные подключения библиотек:
А вот наша проблемная:
Заметили тут приписку “not found”? Вот это символизирует, что какая-то библиотека не смогла подключиться, ибо не смогла найтись. Но она лежит около exe в папке. Тут что-то не то. Вероятно, что не смогло подтянуться окружение. А это уже беда. Давайте я немного про это расскажу.
Если вы знакомы с JS, то вы знаете что такое “область видимости” или же “контекст”. Вот у wine тоже есть контекст. Вы не задумывались, почему я использую start а не просто wine и exe? Start позволяет подтянуть необходимый контекст, иначе приложение просто не сможет увидеть файлы, лежащие в папке.
То есть, контекст у нас есть, он успешно подключён, но работать оно всё равно не желает. Можем попробовать заменить библиотеку на скачанную из интернета по ссылке.
Заменяем ей ту библиотеку в папке с FF, но всё равно ничего не запускается.
Попробуем положить её в папку C:\windows\syswow64
и запустить.
Всё равно мимо.
А если попробовать указать, чтобы приложение использовало нативную библиотеку? Пробуем следующей командой:
WINEDEBUG=+loaddll WINEPREFIX=~/wine/Apps WINEDLLOVERRIDES="mozglue.dll=n,b" wine start "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
И опять мимо
Но, я заметил ещё одну библиотеку, которая не смогла подтянуться:
Причём присмотритесь-ка к ней. Она нужна для mozglue! Следовательно, давайте попробуем её скачать и положить в папку с FF.
Причём смотрите, что говорит сайт:
Это ведь библиотека от Microsoft! Логично, что её не будет в нашем префиксе. Качаем по ссылке и кладём в папку syswow64(дополнительно скачайте ещё и 32-битную и полжите в system32). Смотрим, что будет происходить:
Я вас поздравляю, ошибка изменилась. Теперь её можно прогуглить по коду.
Так, начинает что-то проясняется. Как будто, FF, который 64-битный, нуждается в библиотеке, которая 32-битная, отсюда и возникает ошибка.
А возможно ошибка в другом, если приглядеться к ответу, тут есть ещё совет установить .net
А давайте его поставим. Но какой ставить? Давайте попробуем последний с сайта microsoft(тут я серьёзно тупанул и скачал не тот рантайм, но сути это всё равно бы не поменяло, так как не работает ничего что так, что так).
Устанавливаем вот это
Exe для 64-битной системы есть, запускаем для установки
Ну, оно открылось
И установилось.
Пробуем запускать снова.
Но снова мимо… В чём может быть проблема… А! Я вспомнил. Я же не ставил в этом префиксе mono. Давайте исправим ситуацию(mono может поставиться само при создании префикса, но чаще всего придётся самостоятельно качать и ставить вручную).
Качаем с этого сайта msi. Выбираем тут версию 10.0(так как у меня 10.0 вайн).
Тут выбираем wine-mono.msi
Устанавливаем командой
WINEPREFIX=~/wine/Apps wine msiexec /i '/home/yan/Downloads/wine-mono-10.0.0-x86.msi'
Тут ключ /i отвечает именно за установку. Никаких графических окон не будет. Вот такой должен быть вывод в терминал:
Откроем wine uninstaller чтобы убедится, что mono установлен командой:
WINEPREFIX=~/wine/Apps wine uninstaller
Да, он тут есть. Это хорошо. Пробуем снова запускать FF.
Да чтоб тебя. Ладно, есть идея его просто переустановить, может быть поможет.
Удаляем его из прошлой программы и устанавливаем заново.
Установка идёт, надеемся, что всё запустится.
Но снова мимо… Пробовать дальше исправлять проблему уже бессмысленно, так как поломано что-то внутри. Я не знаю точно в чём проблема, поэтому исправить её и не могу. Предлагаю попробовать установить Chrome.
Качаем, ставим.
Проблема вся в том, что если заходить на сайт как я, с linux системы, то возможность скачки с него windows версии просто не будет. Поэтому я скачаю с другого сайта, чисто exe.
Но тут возникло 2 проблемы.
-
Установщик итальянский
-
Ошибка даже не дающая его поставить
Ладно, качаем другой браузер — ungoogled chromium и, О ЧУДО, оно соизволило установиться и даже запуститься.
(правда криво, но это мелочи. Мы ведь не планируем его прям использовать, оно нужно лишь для редиректа запросов от Figma в браузер)
Пробуем запустить фигму, и та же ошибка, что и раньше. Интерфейса нет и всё кривое. Скриншот давать не буду, так как ничего не поменялось. Значит, переживём без фигмы. Некоторые проблемы решить бывает очень непросто и чаще самое верное решение это искать другую программу.
Но я решил поставить pixso, которое, о чудо, работает!
Правда дальше логинки я не уйду, ибо аккаунт у меня привязан к google, а входить он в него категорически не хочет. Ладно, создам на почте и попробую снова.
УРА! С почты оно вполне зашло.
Правда, если его открыть на полный экран, то тут будет таже проблема, что и у хромиума, но тут это не мешает.
Пробуем что-нибудь нарисовать.
Ну, оно работает и очень даже шустро.
Веб приложения завести можно, но, как вы видели, с большим трудом, и не факт что оно вообще будет тут работать. В чём проблема с фигмой я так и не понял.
Я считаю на этом можно завершить эту главу, и переходить уже к более существенным программам, которые требуют серьёзного решения проблем для запуска. На решение следующей проблемы мне понадобилось около 3 лет поиска информации, которой очень мало.
Запуск Fallout 1/2 с модами под wine
Для меня это отдельная больная тема. Каждый раз, когда я переходил на линукс, я пытался его завести, но всё время терпел фиаско с одной и той же ошибкой, правда пока в один день я не нашёл решение, на сайте с модом.
Давайте я опишу саму проблему, почему не получается завести, казалось бы старую игрушку на wine.
Любые моды требуют модлоадера. В случае F1/2 это sfall, который требует наличия DirectX 9, чего в оригинальном F1/2 не требовалось.
Плюс, тут нужно понимать как устроены модификации под F1/2. Вся графика(скорее все текстуры) для него зашита в exe файл(в этом можно удостоверится, просто заменив exe от мода оригинальным, игра потеряет любые текстуры из модов.
Например, в моде Fallout 0.5 пропадает текстура(и предмет), который является основным для его прохождение и вы получаете софтлок. Я это понял ещё тогда, когда играл в моды на телефоне с использованием приложения ExaGear и заменил exe от мода, на оригинальный. Игра запустилась, локации работают, но вот предмет — пропал. И я получил софтлок. Плюс невозможно начать новую игру, ибо игра просто вылетает.
Ошибка, при запуске модов на оригинальном wine без библиотек следующая — Error loading cities
(картинка не моя, чуть позже будет моя)
Игра без DX9 просто не может прогрузить локации.
У меня даже есть собственное видео на YouTube(кому интересно, я оставлю ссылку на него, можете посмотреть), потому что я понял, что кроме меня это никто больше не сделает.
Для решения данной проблемы, нужно установить 3 библиотеки и заменить ими встроенные в игру. Как раз те, которые я разбирал в примере для замены библиотек — d3dx9_30,31,42. Также, в процессе возникли ещё проблемы — например, отваливающиеся скрипты и шрифты. Это тоже нужно будет поправить вручную, отредактировав пару файлов игры.
Само описание решения проблемы я нашел на этом сайте.
Только дойти до этого объяснения было очень трудозатратно, пришлось перелопатить целый форум, где только в одном сообщении была ссылка на эту страницу, а иначе это даже не гуглится(если ошибка появляется исключительно в wine, но при этом она не возникает почти никогда в windows, то будьте уверены — решения скорее всего нет и вам придётся думать самостоятельно).
Привыкайте, с wine такое часто, некоторые проблемы имеют решение, но настолько узкое и настолько находящиеся далеко, что дойти до них вы можете либо сами, либо по счастливой случайности.
Давайте приступать к практике. Для запуска нам нужно:
-
Сама игра(настоятельно рекомендую GOG релиз)
-
Мод Restoration Project
-
Wine + Winetricks
-
Полчаса свободного времени на решение всех проблем
Для начала, создадим новый префикс, ибо старый уже “грязный”.
WINEPREFIX=~/wine/Fallout wine winecfg
Далее, устанавливаем оригинальный Fallout 2 из GOG релиза.
Ещё со времён создания видео, у меня есть архив для полной установки, воспользуюсь им.
Установка F2
Устанавливаю F2.
WINEPREFIX=~/wine/Fallout wine '/home/yan/Downloads/fallout_02/setup_fallout2_2.0.0.12.exe'
Путь я меняю от изначального, чтобы было удобнее до него дойти.
Решение проблемы со шрифтами
После установки не спешите его открывать, сначала нужно отредактировать конфигурацию(но я открою для демонстрации ошибки)
Нас встречает вот такая ошибка — продолбанные шрифты. Нужно исправлять. Это возникает, если F2 не может понять какие файлы ему нужно грузить. Под windows он как-то их находит, а вот в wine уже не может.
Идём в папку, куда установлен Fallout
И открываем файл fallout2.cfg
в любом текстовом редакторе.
Сейчас он выглядит вот так:
Сюда нужно дописать 5 строчек, чтобы он выглядел вот так:
Разбираем, что дописали.
Critter_dat
и master_dat
— данные для игры откуда грузить ресурсы(в тч. шрифты)
Critter_patches
и master_patches
— откуда брать патчи.
Language=english
— обязательно для русской и английской версии, иначе кодировка игры слетит. Да, можно поменять язык wine и тогда кодировка будет нормальной, но поскольку я всегда пользуюсь только английскими версиями ОС и программ, для меня это необходимость.
Пути должны быть в стиле windows. В абсолютных linux путях это будет примерно следующем:
/home/yan/wine/Fallout/drive_c/GOG/Fallout2/critter.dat
/home/yan/wine/Fallout/drive_c/GOG/Fallout2/master.dat
Запускаем F2 с помощью команды, которая прикрепит контекст к запуску:
WINEPREFIX=~/wine/Fallout wine start "C:\\GOG\\Fallout2\\fallout2.exe"
PS: в процессе запуска обнаружилось, что моя система не имеет некоторых библиотек, из-за которых у меня F2 не смог загрузить разрешение. Нужно доставить libvulkan.so.1
и libGL.so.1
.
Решение проблемы подсказал мне deepseek. Вот необходимые команды, если вы вдруг столкнулись с той же проблемой:
sudo apt install libvulkan1:i386 mesa-vulkan-drivers:i386
sudo apt install libvulkan1 libgl1-mesa-dri mesa-vulkan-drivers vulkan-tools
Всё, F2 запущен, проблем больше нет, дальше идти в саму игру нам не нужно.
Установка мода Restoration Project
Запускаем установщик
WINEPREFIX=~/wine/Fallout wine '/home/yan/Downloads/fallout_02/F2_Restoration_Project_2.3.3.exe'
Устанавливаем мод, оставляем всё как есть(язык в игре не меняем)
Мод установлен, время идти дальше.
Решение ошибки из-за библиотек — error loading cities
Для начала, я покажу как выглядит та самая ошибка. Запускаю игру без библиотек.
PS. Это немного не то, на что я рассчитывал, но допустим.
Каким боком это снова вылезло? Ну, лог в помощь…
Эээм… У меня нет слов… Я же исправил эту ошибку ещё при запуске без мода… Что не так…
Снова мне помог Deepseek. Нужно было установить dxvk
WINEPREFIX=~/wine/Fallout winetricks dxvk
Ошибка загрузки контекста и как её можно временно решить
Но тут вылезла проблема, с которой я сталкивался, когда запускал его ещё давно. Он не видит контекста. Заодно я покажу что можно предпринять в таком случае. Запускаем игру через встроенный файловый менеджер. Тогда он точно подтянет контекст.
Пишем:
WINEPREFIX=~/wine/Fallout wine explorer
Открывается вот это:
Ручками доходим до папки с F2.
И запускаем Fallout2.exe
И вот моя родимая ошибка
Чтобы её поправить, нужно поставить несколько библиотек.
Пишем:
WINEPREFIX=~/wine/Fallout winetricks d3dx9_30 d3dx9_31 d3dx9_41
И у нас всё установилось.
Дальше, загружаем explorer с заменой библиотек следующей командой
WINEPREFIX=~/wine/Fallout WINEDLLOVERRIDES="ddraw.dll=n,b" wine explorer
Запускаем F2 и бинго!
Всё запустилось. Давайте создадим персонажа и посмотрим работает ли всё в самой игре.
И… да. Всё работает.
Можем закрывать, своей цели мы достигли, мы запустили и всё работает.
Но что если мы хотим запустить игру не загружая при этом отдельно файловый менеджер, используя терминал и всё остальное?
Нам нужен обычный скрипт запуска приложения на bash, который всё будет делать за нас. Нам нужно будет лишь запустить его и он сам всё запустит. Вот вам пример моего скрипта. Может быть он не очень хороший с точки зрения кодинга, но свою задачу он выполняет на все 100%. Он запускает игру всегда и без каких-либо проблем.
Написание скрипта
Сам скрипт. Что он делает:
-
Мы переходим прямо в папку, где располагается игра. Это важно.
-
Мы создаём переменные, которые будут автоматически подтягиваться wine(ибо если переменная задана, он будет использовать её для запуска. То есть тут он всегда будет запускаться в необходимом нам префиксе с необходимыми заменами библиотек)
-
Запускаем саму игру
-
А потом отменяем наши переменные, которые создали, чтобы они не влияли на наши другие запуски wine
Всё просто и довольно прямолинейно, но оно работает и это главное. Теперь, сделаем данный файл исполняемым командой:
chmod +x ./start.sh
И запустим его
./start.sh
Всё запустилось и работает.
Создание симлинки скрипта
Если хотите этот скрипт запускать из другого места(рабочий стол, например), то сделайте симлинку на рабочий стол.
ln -s ~/wine/Fallout/drive_c/GOG/Fallout2/start.sh ~/Desktop/Fallout_Start
Вот симлинка на рабочем столе.
Запустим её.
И у нас всё запустилось.
Всё, со скриптом и классическим wine мы закончили. По сути, мы разобрали всё, что нужно для работы — как скачивать/устанавливать приложения/библиотеки, как отлаживать приложения и решать проблемы. Теперь время переходить к более “человечным” графическим решениям.
Wine-loaders или графические приложения по запуску и настройки wine
После того, как мы разобрались со стоковым консольным вайном, пришло время сделать нашу жизнь немного легче.
Из графических оболочек я могу выделить как минимум 4, но рассмотрим мы далеко не все.
Из именно wine-based — Bottles, Lutris и Heroic Games Launcher.
Из proton(steam-wine) based — PortProton(или же Gaming On Linux).
Расскажу я про 2 оболочки — Bottles и Lutris. Про HGL я смысла рассказывать не вижу, так как он очень похож на Лутрис, а в случае с PortProton у меня с ним “натянутые” отношения, так как работать часто он отказывается у меня. И интерфейс у него, мягко скажем, не интуитивный, как у того же Lutris.
Bottles
Bottles — это достаточно современная оболочка по запуску wine приложений, сделана в стилистике последних Gnome DE, по настройкам очень скудная, по функционалу бедная. Советую использовать только для запуска приложений, а не игр.
Все эти приложения будут установлены из Flatpak
. Я не советую их ставить из системного пакетного менеджера, чтобы они не ломали системный wine.
Установка Flatpak на Ubuntu 24.04
Введём в терминал следующие команды
sudo apt update
sudo apt install flatpak -y
После того, как установлен Flatpak, у вас может быть уже добавлен репозиторий Flathub, а может нет. Лучше его добавить руками, чтобы точно избежать проблем.
Для того чтобы это сделать введите следующую команду:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Далее, введите следующую команду, чтобы проверить наличие подключённого репозитория:
flatpak remotes
Терминал должен показать следующее:
Далее, введите:
flatpak update
И после синхронизации введите:
flatpak install com.usebottles.bottles
Но тут есть некоторая проблема. Если вы только что поставили flatpak, то у вас в “старте” не появится иконка установленных приложений. Для того, чтобы всё починилось — перезагрузите систему.
Или же вы можете запустить приложение из терминала с помощью команды:
flatpak run com.usebottles.bottles
Также, я советую поставить приложение Flatseal, чтобы можно было управлять папками, которые доступны приложениям в Flatpak, иначе они не буду видеть вашу домашнюю папку или другие диски в системе.
Установим Flatseal с помощью команды:
flatpak install com.github.tchx84.Flatseal
Настройка Flatseal
После, запустим Flatseal. Вас встретит следующее окно:
Поскольку это тестовая машина и я не обеспокоен безопасностью системы, я добавлю сразу всем приложениям(и текущем установленным и будущим) доступ к системному руту и домашней папке. Вам я так делать не рекомендую.
Переходим на 1 вкладку(синяя иконка) и крутим до этой секции:
Тут нажимаем на иконку “новой папки” на Other Files.
Тут откроется вот такая строчка, куда вводим интересующие нас пути, для доступа приложениям.
Например, как это выглядит у меня:
На этом можно закрывать Flatseal, так как данное изменение применилось ко всем приложениям в системе, установленные из Flatpak.
Пример как это выглядит у Bottles:
Пути Flatpak приложений
Важно помнить, куда Flatpak устанавливает приложения, и где они хранят данные. Стандартный путь установки приложений:
/var/lib/flatpak/app
У меня 3 приложения — 3 папки.
А данные они хранят по пути:
/home/yan/.var/app
Запуск Bottles
Ну, запускаем Bottles.
Нас встречает следующее окно.
Тут он скачивает необходимые версии wine для работы и некоторые библиотеки.
Стандартный интерфейс бутылок.
Создание префикса в бутылках
Предлагаю создать новый префикс для приложений(или как тут они их называют — бутылки)
Нажмём на + в левом верхнем угле.
Тут мы можем выбрать категорию(она нужна для того, чтобы бутылки понимали, какие библиотеки им нужно скачивать изначально, чтобы работало большинство приложений. Например — для приложений гораздо нужнее .NET, чем DirectX 9-11 и наоборот) или сделать кастомную, но я не любитель тут делать кастомные префиксы, с ними будет больше гемора. Оставляем выбор на приложениях, так как мы будем тут сначала запускать именно их.
В качестве загрузчика выбираем соду(это форк wine).
Bottle Directory не трогаем(это, кстати, новая фича. Раньше нельзя было настраивать путь префикса не в кастомном. Это удобно).
Называем просто — Apps и нажимаем Create.
Пошло создание префикса, скачка библиотек и настройка конфигураций.
По логу можно видеть что бутылки ставят в префикс. Шрифты, поддержку .NET и DirectX Vulkan для 3д.
Настройка префикса
Бутылка появилась и давайте её откроем.
Вот интерфейс префикса. Тут мы можем сразу открыть exe по синей кнопке или настроить префикс. Сначала пройдёмся по настройкам.
По сути, тут настраивается всё, что мы настраивали через переменные в консольном wine. Кстати, настрое за полгода прибавилось, раньше их было в разы меньше.
Несомненный плюс бутылок в том, что они предлагают “перенос” снапшотов, чтобы их можно было распаковать в автоматическом режиме на любом пк, где есть бутылки. Они сами поставят все библиотеки, все настройки сразу применятся и будет работать также, как и на хост машине, откуда был сделан снапшот.
Установка приложений
Я предлагаю установить какое-нибудь приложение. Например, AIMP. Он также как и Total commander не требует дополнительных библиотек, и должен сразу установиться без проблем.
Скачиваем exe по ссылке.
Открываем exe по синей кнопке в главном меню префикса.
Установщик загрузился. Прокликиваем и устанавливаем.
Как мы видим, бутылки сразу подхватили установленное приложение и вывели быстрые кнопки запуска, но мне интересно куда же установилось это приложение по путям в Linux. Вот путь до них по стандартным путям, куда бутылки кладут свои файлы:
/home/yan/.var/app/com.usebottles.bottles/data/bottles/bottles/Apps/drive_c
Как вы видете, путь очень длинный и дойти до него самостоятельно достаточно проблематично. При желании, можно сделать симлинку на папку в домашнюю папку, чтобы быстрее сюда попадать при надобности, но я этого делать не буду.
Запускаем AIMP.
Он работает без каких либо проблем.
А давайте попробуем тут установить Firefox, как помните на стоковом wine у меня были с ним проблемы. Возможно тут ситуация изменится.
Установка пошла.
Тут запуск тоже появился.
Пробуем открывать.
И также мимо. Давайте попробуем отладить FF тут. Чтобы это сделать нужно открыть 3 точки около запуска приложения и нажать на иконку терминала сверху.
В этом случае откроется .
И да, проблема таже, что и у обычного wine. Можно скипать, её я не решу.
Нужно ещё приложение для теста. Желательно с зависимостями, которые нужно поставить.
Попробую запустить приложение, которое мне было нужно для университета и которое не запускалось у меня. Logic Circuit. Скачать его можно здесь.
Кстати, MSI установщик запустился сразу, никаких специфических действий не требуется.
Прокликиваем до установки.
Не запускается. Открываем терминал и начинаем смотреть где он крашится.
Ага. Что-то связанное с .NET и библиотека. Пробуем найти библиотеку и что это вообще такое.
Быстрый гугл дал мне информацию, что ему не хватает .NET Runtime. Но какой версии? Давайте попробуем поставить последнюю. Снова качаем с того сайта, который я давал ранее.
Ставим и смотрим поможет ли.
Не похоже что это помогло.
Последнее изменение .NET было до версии 8. Пробуем поставить его вкладки Dependencies в настройках префикса.
Вот он. Жмём на иконку дискетки для установки.
Установился. Пробуем снова запускать.
Снова мимо. Ошибки даже не поменялись.
Попробую сунуть данный вывод в Deepseek.
Мой запрос:
Ну его ответ мне мало помог…
Можно попробовать.
Ставим 6 дотнет и 4.8, и 4.8.1.
Пробуем запускать снова.
Нет, ошибки не изменились. Либо это проблема в Bottles либо в установщике зависимостей. Ради интереса можно запустить в стандартном wine.
Запуск в стандартном wine
Опа. А у меня открылось начальное окно и тут же закрылось. Значит дело всё таки в Bottles.
Что интересно, установка .NET в winetricks немного другая, с графикой.
Тут есть надежда на запуск. Но в winetricks нет .NET8. Либо его нет в “графике”, либо вообще. Нужно попробовать через терминал.
И более новые версии .NET устанавливаются через графику…. Кажется что-то в Bottles поломано, либо они устанавливают зависимости иначе.
И бинго! Через обычный wine у меня всё открылось сразу после установки .NET.
Дело было в Bottles. Именно поэтому я него, скажем так, недолюбливаю. У меня в нём нормально не работало буквально ничего. Я настоятельно рекомендую его избегать, лучше поставить всё самому, либо через Lutris.
Установка и запуск Lutris
Для установки Lutris введите в терминал:
flatpak install net.lutris.Lutris
В случае с Lutris я хочу остановиться особенно подробно, поскольку на моей практике он запускал 90% всего, что я ему давал(не без проблем с установкой зависимостей,но всё же), тогда как тот же Bottles меньше 10%.
Важно чтобы Lutris был установлен именно из Flatpak, так как из пакетника у меня он хотел запускать и половины того, что я ему давал. Я не знаю с чем это связано, возможно нативно не все библиотеки устанавливаются, или что-то ещё, но мои наблюдения были именно такие.
Открываем Lutris и смотрим что к чему в нём.
Интерфейс тут сложнее чем в бутылках, но он и мощнее его раз в 10. В первый запуск(слева) он загружает библиотеки для работы. Пока можно загрузить wine. Делается это во вкладке слева с названием Runners>wine
Наводимся на киоск и нажимаем.
Попадаем в такое меню. Почему-то у меня щас тут очень мало версий wine(обычно их в десятки раз больше, ~30-40 версий. Не знаю с чем связано, возможно они почистили их), но нам нужен как раз WineGE, поэтому ничего страшного.
Устанавливаем её.
Как установится, можно закрывать данное окно.
Я немного отойду от темы и расскажу про то, что такое Lutris в целом. Лутрис это огромный “комбайн” для игр. В его составе вы можете устанавливать десятки эмуляторов, лаунчеров игр(например — EGS или GOG Galaxy), он умеет в себе хранить все ваши игры с линукс(нативные из стима), или устанавливать напрямую в wine(например поставить Steam напряму в wine для большей совместимости).
Тут также как и в стиме есть счётчик времени игры. У лутриса есть свой аккаунт, который может синхронизировать ваши данные.
Он также позволяет делать импорт/экспорт префиксов и многое другое.
Список эмуляторов, которые он может установить автоматически. Всего их 55(как видно вверху). От эмуляторов NES до Swtich и PS3.
Но я отвлёкся. Вайн.
Как добавить префикс
На главном экране нажмите + в левом углу и выберете тут Install Local Game.
Тут идёт вся настройка префикса. Назовём его и выберем раннер.
Тут в первой строчке нужно указывать путь до exe, который надо запустить. Пока пропустим. Аргументы тоже.
В Working Directory нужно указать рабочую папку игры, но у нас пока её нет, поэтому тоже опустим. Она по факту и не нужна никогда.
В префикс вписываем путь до папки для префикса(логично, да?).
Также можно выбрать архитектуру префикса, но я оставляю auto, обычно он всегда сам нормально определяет и проблем не возникает.
Тут идёт настройка конкретно раннера. У меня всё так как надо, ничего не трогаем.
В последний раздел тоже не лезем.
И вот у нас создалась “карточка игры”. Если её назвать по другому, то подгрузится картинка игры(как в карточках в стиме).
Пример “полки” с играми.
Можно просто выделить мышкой и удалить из своей библиотеки(данные в папках лутрис, естественно, не трогает).
Чтобы установить(запустить) EXE/MSI файл, нажмите на карточку с игрой и нажмите на “галку” снизу.
Тут выберете Run EXE(запускает в тч. и msi). Эта галка нам будет ещё много где нужна.
Сразу скажу, что все префиксы от Lutris я кладу в ~/Lutris/НазваниеПрефикса
Неудачная попытка запуска Logic Circuit
Установим тот же Logic Circuit и проверим его поведение под лутрис.
Тут выбираем exe.
Установщик запустился и установил программу.
Далее, допустим, мы хотим привязать его исполняемый файл к нашей карточке. Нажимаем по нашей карточке ПКМ > Configure
Далее идём в Game Options и там указываем путь как на фото.
Далее сохраняем и теперь по 2му клику по карточке у нас запуститься выбранный exe.
Запуск неудачный. Давайте установим зависимости. Нажимаем снова на галку снизу и там выбираем winetricks.
Когда он открылся, ставим необходимые библиотеки(как это делать я рассказывал в части про классический wine).
Я устанавливаю следующие библиотеки.
Также игнорируем это сообщение.
Всё поставилось и можно открывать приложение.
Возникла проблема, данные библиотеки не установились. У меня завис winetricks и всё. Я пересоздам весь префикс.
Никогда не допускайте той ошибки, которую я сейчас сделал. Все установки winetricks через лутрис делает в тихом режиме, и если вам кажется, что он вылетел, то это ещё не значит что он действительно вылетел. Откройте htop и посмотрите что происходит на самом деле. В тот раз, я запустил ещё раз WT и переустановил библиотеки в момент, когда предыдущая инстанция не завершила свою работу, поэтому библиотеки получились битые.
Так, оно всё равно не хочет запускаться. Ну значит время дебага. Тут с этим всё проще, чем в бутылках. Нужно открыть птичку у Play и там выбрать show logs.
Открывается терминал с логом:
Ему снова не хватает .NET, значит я что-то забыл поставить, что ставил когда запускал на чистом wine.
В общем… Не помогло. Я даже попробовал запустить с системного wine, но тоже мимо. В общем, как мы видим, где-то стоковый wine показывается себя в разы лучше, чем его более “дружелюбные” аналоги.
Запуск Игр
Запуск Blade Runner GOG
Первой из всех будет ремастер Blade Runner. Это старый Point ‘n’ Click Quest, основанный на киберпанк-фильме Blade Runner.
Под каждую игру я буду делать отдельный свой префикс, чтобы библиотеки не накладывались на друг друга(ну и соответственно симулировать как бы вы ставили это на чистый префикс).
Некоторые игры я буду ставить из GOG, а некоторые из репаков. Эту, в частности, из GOG.
Меньше всего проблем именно с GOG релизами, так как они имеют в себе уже всё необходимое для запуска. Все библиотеки и зависимости. В этом с GOG релизами всё проще. Если есть возможность, игры я советую ставить именно так.
Игры из GOG я рекомендую запускать по INK файлам(да, лутрис их понимает хорошо, насчёт стокового вайна не уверен, не проверял).
Ну, запускаем.
Всё прекрасно запустилось и работает.
Запуск Katana Zero GOG
Дальше будет Katana Zero, тоже GOG релиз, тоже отдельный префикс.
Кстати, хочу показать вам интересный способ установки GOG игр.
При создании нового префикса, тут есть вот такая иконка
Нажимаем на неё и вводим название игры.
Видим нашу игру и платформы, на которых лутрис её может запустить. Нажимаем на неё.
И видим вот такой список всего, что она готова поставить. Выбираем GOG.
Указываем путь установки.
И выбираем GOG установщик.
Лутрис сам качает необходимые для запуска зависимости.
Всё также запустилось и работает.
Установка репаков и новые проблемы
Теперь время запускать репаки. С ними всё сложно.
Репаки от хатаба не установят ничего. Установщик в репаке нормально не понимается лутрисом/вайном. Репаки от механиков тоже мимо. Некоторые старые или кастомные установщики тоже будут чудить(проверено на собственном многочисленном опыте поиске нормального репака). Также, если у вас есть старый диск с игрой, то очень большая вероятность, что она тоже не установится.
А если игра требует диск для запуска, то это только искать DVD-rip бинарник, благо щас такие есть под многие старые игры. Установить можно либо просто примонтировав iso/bin образ в самом Linux командой mount, либо открыв как zip и скопировав все файлы в папку, откуда уже и производить установку.
Установка репака Готики 2
Я буду ставить репак 2й готики(да, классика как она есть).
И такое вы будете видеть очень часто. Скорее всего, тут кодировка DOS-1211 или Koi-8, которые не поддерживаются wine. У этого есть решение.
Если вот тут поставить русский.
Вуаля, всё починилось.
То, что установщик корректно завершился уже некая победа(учитывая что я писал выше).
Пробуем запускать.
Вот тут вопрос какой exe брать для запуска. Пробуем просто Gothic2.exe
И обламались мы с запуском. Ради интереса попробую другой exe перед тем как дебажить.
Идентично посыл на 3 буквы.
Однако минималистично. Ну и что тут не так? Там вон ошибка с локалью связана. Пробуем вернуть английскую.
Ошибка то ушла, а вот всё равно не запускается. Что делать? Лог не блещет подробностями… Для таких случаев есть расширенный лог. Его надо включить самостоятельно в настройках.
Делается это вот тут внизу в Output debugging info.
Ставим Enabled(я не могу заскринить диалоговое окно, но там 4 пункта).
Информации стало в разы больше. Ищем за что можно зацепиться.
Лог большой, но не информативный абсолютно. Тут цепляться не за что. Как вариант, попробовать обходный путь.
Если вы откроете “птичку” на нижней панели у play, то там есть такая кнопка, как “Open Bash Terminal”. Нажимаем и попадаем в терминал.
Там нужно дойти до папки с игрой и сделать то, что я делал на большей части статьи — открыть с дебагом. Только уже со своим.
Удивительное всего то, что в таком режиме у меня всё запустилось.
Это оригинальная игра без модов. Значит как сам факт проблем в запуске нет. Пробую другой бинарник и…
Вот тут уже возникают проблемы. И мы видим что не подгружается. Winevulkan.dll Нужно доставить и всё будет работать.
Вообще, я почти убеждён что это проблема в неустановленном DirectX 9. Давайте отключим DXVK в настройках. Это делается вот тут:
Лог просто кардинально преобразился. Теперь понятно чего именно тут не хватает! А именно: d3d9.dll и vdfs32g.dll.
К слову, оказывается я всё это время запускал не тот exe…
PS. На этом моменте я вернул dxvk и больше его не отключал, мешал не он, а кривая игра(подробности ниже)
Там есть такой файл как GothicStarter.exe. Вот нужен именно он.
Но игра всё равно запускается некорректно. Продемонстрировать я это не могу, так как скринить нечего. Она постоянно переоткрывает окно, закрывает и так по кругу.
Причём так она не страдает фигнёй. Что тут конкретно не работает сказать трудно.
Каким то магическим образом у меня получилось включить катсцену и она перестала переоткрываться. Проблема в том, что она не пропускается вообще.
Как только катсцена кончилась и дошло дело до геймплея она стала делать тоже самое, что и перед ней. Возможный фикс — нужно отключить полный экран при запуске(пришло в момент написания такой вариант решения проблемы, до этого я об этом даже не думал).
Поменял вот тут на 1(zStartupWindowed). Попробую запустить и посмотреть что получится.
Она стала работать просто безупречно… Значит она пыталась открыть полноэкранный режим, почему то безуспешно, и сразу же закрывала и делала это циклично. Отчасти проблема решена. Игра работает.
Геймплейно тоже всё хорошо. Но придётся играть в окне. Я уверен, что в сети есть нормальные гайды по установке, но так как я тут рассказываю именно свой опыт решения проблем, тут оно будет именно в таком виде. Хоть криво-косо, но это то, до чего дошёл я не искав полноценных советов.
Переходим к самому сладкому — Биошок. Причём с ремастером. Это тоже репак, поэтому могут быть проблемы с установкой(собственно что и получилось… накаркал).
Кодировка… Не буду менять, прокликать установщик можно и так(ладно, пришлось. Установщик матюкнулся, а на что так не поймёшь).
Сегодня, кажется, без биошока. Данный установщик прекрасно работает под windows, но совершенно не хочет под wine. Ещё один в копилку нерабочих…
Я могу скачать другой установщик.. Даже GOG релиз, но смысла в этом будет не очень много. ГОГ заработает точно, я проверял. Это ГОГ, он работает всегда. А может и не всегда.
Запуск Stalker Зов Припяти GOG
Никто не хочет поиграть в сталкер? А вот я что-то захотел.
Сталкер это одна из тех игр, которую на wine запустить проблемнее всего. Особенно небо и зов. Если кто играл в те времена, когда он только только выходил помнят “зелёного жучка”. Вот тут это перманентное состояние, без фиксов. Ну как, они то есть, но работают раз через раз.
Я буду ставить как раз зов припяти с GOG установщика, ибо даже он тут иногда бессилен(у меня уже были попытки запуска раньше, которые меня посылали в пешее эротическое сразу после установки).
Поставится то оно поставилось, а вот запустится ли это большой вопрос.
Ладно, тут даже я в шоке. Гог версия помогла обойти того гадского жука, который был всегда, когда я ставил репаки. Вот что лицензия животворящая делает!
Ладно, это победа. Окончательно. Оно работает. Не вылетает. Стабильно. Я считаю, на такой приятной ноте можно и закончить.
PortProton я разбирать не буду, так как там ситуация схожая с той, что была у нас в Bottles. Ничего не работает, так ещё и как это решать не понятно. Статья и так громадная, так что, думаю, оно и не нужно. Тут всё равно статья преимущественно про wine,а не протон(хоть это и форк).
Заключение
В данной статье я достаточно подробно расписал то, как нужно работать в wine, разобрал его сферу применения, и показал подводные камни при работе с ним. Показал и рассказал как дебажить приложения, что часто одно из самых нужных и необходимых для решения проблем.
От себя добавлю пару строк.
Я специально оставлял все фейлы. Я хочу чтобы вы поняли, что настройка wine это далеко не самое простое и там могут возникнуть проблемы, которые как решать даже в голову не придёт по первой.
Абсолютно всё я писал параллельно с тем, как я это делал на реальной системе, поэтому все решения были приняты в момент написания, без особой гуглёжки для поиска решения. Поэтому они могут и быть нерабочими, иногда глупыми и наивными.
У меня крайне скудный набор исконно windows приложений, которые мне надо прям запустить на Linux. Отчасти, это наверно весь софт Adobe и на этом всё. Но у Адоб есть огромная проблема. Они являются не запускаемыми ни в каком случае под wine.
Вернее как, запустить то их можно, но вот назвать это состояние “работоспособным” у меня язык не повернётся. Всё лагает, багает, вылетает и работает очень нестабильно. Да и я смысла в этом не вижу.
Примерно также ведёт себя софт от Affinity. Его запустить у меня вообще не удавалось, если я запускал Photoshop CS6, CC 2017,19,21 и Illustrator CS6, CC21(правда вот с ним у меня и были наибольшие лаги), то вот продукты Affinity не поддаются. Они все используют очень специфический набор библиотек и редактируют реестр так, что wine это просто не переваривает и его клинит.
Также не думайте, что wine это “манна небесная”, которая запустит всё как древний артефакт. Ничего подобного. Wine в состоянии запустить от силы 40% софта, и 80% игр(игр больше, так как его основное направление это они, как минимум из-за Valve, которые в них вложили очень много денег и сами активно его развивают, но как Proton для Steam и Steam Deck).
Если вам срочно нужен какой-либо софт — используйте виртуалку. Ваши нервы скажут вам огромное спасибо после этого.
Для решения всех проблем с запуском конкретной программы может уйти от минут 5 до нескольких дней на решение пары проблем, которые всплыли слишком поздно и очень неочевидно.
Не пробуйте запускать на wine проф. софт. Это касается Adobe, Affinity и Autodesk. С последним я лично намучался с неделю без результатов. В чём конкретная проблема “отторжения” я сказать не могу, скорее всего, как я писал выше, реестр.
Я желаю всем удачи по запуску именно ваших приложений под этой адской программой, терпения и успехов.
Если остались какие-либо вопросы — комментарии и лс всегда открыты, буду рад помочь.
If you’ve ever found yourself in need of running Windows-specific applications on your Linux system, a Windows emulator could be the solution you’re looking for.
But how do you go about finding the right emulator for your needs?
And once you’ve found it, how do you install, configure, and optimize it for the best performance?
These are just a few of the questions that we’ll explore as we delve into the world of Windows emulation on Linux.
Benefits of Using a Windows Emulator
Using a Windows emulator on your Linux system can significantly enhance your compatibility with Windows-specific software. This means you can access a wider range of applications without having to switch between operating systems or invest in additional hardware.
By running a Windows emulator, you can enjoy the freedom to choose the software that best suits your needs, regardless of its native platform. This flexibility is especially valuable for individuals and businesses that rely on specific Windows programs for their work or productivity.
Additionally, using a Windows emulator on your Linux system allows you to take advantage of the security and stability of the Linux environment while still being able to utilize essential Windows tools. This can lead to a more streamlined and efficient workflow, as you won’t have to sacrifice the benefits of either operating system.
Ultimately, the use of a Windows emulator empowers you to maximize your software options and seamlessly integrate Windows-specific applications into your Linux environment.
Did you know: Winfy allows users to use Wine online for free to try Windows apps on Linux.
Installing a Windows Emulator on Linux
So, you’re ready to install a Windows emulator on your Linux system.
Let’s talk about the compatibility of the emulator with Linux and the straightforward installation process.
Compatibility With Linux
To install a Windows emulator on your Linux system, you can follow a straightforward process that involves selecting the appropriate emulator and ensuring compatibility with your Linux distribution. First, you need to choose a Windows emulator that aligns with your requirements and the capabilities of your Linux system. Then, you should verify that the emulator is compatible with your specific Linux distribution to ensure a smooth installation and optimal performance. Below, you can find a table that compares the compatibility of popular Windows emulators with various Linux distributions, helping you make an informed decision for a seamless experience.
Windows Emulator | Ubuntu | Fedora | Debian |
---|---|---|---|
Wine | Yes | Yes | Yes |
PlayOnLinux | Yes | Yes | Yes |
CrossOver | Yes | Yes | Yes |
This table illustrates the compatibility of popular Windows emulators with different Linux distributions, giving you the freedom to choose the best option for your system.
Installation Process
Consider selecting a Windows emulator that aligns with your system requirements and Linux distribution to ensure a smooth installation and optimal performance.
Start by checking the official website of the Windows emulator you’ve chosen for specific installation instructions. Most emulators offer easy-to-follow guides for Linux users.
Before installation, ensure that your system meets the emulator’s minimum requirements. Then, download the installation package from the official source or use a package manager if available.
Follow the step-by-step instructions provided by the emulator to complete the installation process.
Once installed, configure the emulator settings according to your preferences.
Finally, test the emulator with a simple Windows application to ensure everything is working as expected.
Enjoy the freedom of running Windows applications on your Linux system.
Configuring and Setting Up the Emulator
How can you efficiently configure and set up the Windows emulator for Linux on your system? Follow these steps to ensure a smooth and hassle-free setup process:
- Choose the Right Emulator: Select a Windows emulator that aligns with your system specifications and requirements. Options like Wine, PlayOnLinux, or CrossOver are popular choices for Linux users.
- Install the Emulator: Use your package manager or download the emulator from the official website. Follow the installation instructions provided to complete the setup.
- Configure Emulator Settings: Adjust the emulator settings according to your preferences. You can customize graphics, audio, and input settings to optimize the Windows environment on your Linux system.
- Install Windows Software: Once the emulator is set up, install the Windows software you want to run. This could include games, productivity tools, or any other Windows applications.
- Test and Troubleshoot: After installation, test the compatibility and functionality of the Windows software. If you encounter any issues, refer to the emulator’s documentation or community forums for troubleshooting tips.
Running Windows Applications on Linux
So, you’ve configured and set up the Windows emulator for Linux.
Now it’s time to explore how to run Windows applications on your Linux system.
You can dive into the compatibility of Wine.
You can also explore the virtual machine options available.
Another option to consider is cross-platform development for a seamless experience.
Compatibility With Wine
Running Windows applications on Linux with Wine can provide a seamless experience for users looking to utilize their favorite Windows software on a Linux system. Compatibility with Wine offers several benefits:
- Flexibility: You can run a wide range of Windows applications, including productivity tools, games, and multimedia software.
- Customization: Wine allows for tweaking and optimizing settings to ensure the best performance for your specific applications.
- Independence: By using Wine, you can avoid being tied down to a specific operating system and enjoy the freedom to choose your preferred software.
- Community Support: Wine has a large and active community, providing valuable resources, tips, and support for running Windows applications on Linux.
- Security: Running Windows applications through Wine can help minimize the security risks associated with dual-booting or using a virtual machine.
Virtual Machine Options
When exploring options for running Windows applications on Linux, you may consider utilizing virtual machine technology as an alternative to Wine compatibility. Virtual machines allow you to run a Windows operating system alongside your Linux system, providing a seamless way to access Windows applications without compromising the freedom of your Linux environment.
Virtual Machine Options | Description |
---|---|
VirtualBox | An open-source virtualization tool that supports running Windows applications on Linux. It offers a user-friendly interface and is suitable for personal and small business use. |
VMware | A powerful virtualization software that provides advanced features for running Windows applications on Linux. It is well-suited for enterprise-level and professional use. |
KVM (Kernel-based Virtual Machine) | A Linux-based virtualization solution that offers high performance and scalability for running Windows applications on Linux. It is ideal for users who prioritize performance and efficiency. |
These virtual machine options provide the flexibility to run Windows applications on Linux while maintaining the freedom and openness that Linux users value.
Cross-Platform Development
Consider leveraging a Windows emulator for seamless cross-platform development, allowing you to run Windows applications on your Linux system without constraints. By doing so, you can enjoy the freedom to work with a wider range of software and tools, regardless of the operating system they’re designed for.
With a Windows emulator, you can:
- Access popular Windows productivity applications such as Microsoft Office suite.
- Utilize specialized Windows software for design, engineering, and gaming purposes.
- Run legacy Windows applications that may not have Linux equivalents.
- Test your cross-platform software projects in a native Windows environment.
- Seamlessly integrate Windows and Linux workflows for a more flexible development experience.
Embracing a Windows emulator empowers you to break free from platform limitations and fosters a more versatile and efficient development environment.
Compatibility of Different Windows Programs
Users may encounter varying degrees of compatibility when attempting to run different Windows programs on a Linux system using an emulator. While some programs may work seamlessly, others may experience glitches or not run at all. It’s important to research the compatibility of specific programs before attempting to run them on the emulator.
Many popular software, such as Microsoft Office, Adobe Photoshop, and various games, can be run on Linux through an emulator, but the performance and functionality may differ from running them on a native Windows system.
It’s essential to consider the purpose of running Windows programs on Linux. If it’s for professional use, ensure that the programs necessary for your work are fully compatible and perform well. For personal use, experimentation with different programs and assessing their compatibility and performance can be a part of the freedom that Linux offers.
Additionally, staying updated with the latest versions of the emulator and the Windows programs can improve compatibility and performance. Overall, while the compatibility of different Windows programs on a Linux system using an emulator may vary, the freedom to explore and customize one’s computing environment is a significant advantage of using Linux.
Tips and Tricks for Optimizing Performance
To optimize performance when using a Windows emulator on Linux, focus on adjusting settings and allocating resources efficiently. Here are some tips and tricks to help you get the most out of your Windows emulation experience:
- Close Unnecessary Background Applications: Keep your system resources focused on running the Windows emulator smoothly by closing any unnecessary background applications.
- Allocate Sufficient RAM: Ensure that you allocate enough RAM to the Windows emulator to prevent slowdowns and improve overall performance.
- Optimize Graphics Settings: Adjust the graphics settings within the emulator to find the right balance between visual quality and performance.
- Regularly Update Emulator Software: Stay updated with the latest version of the Windows emulator to benefit from performance improvements and bug fixes.
- Consider Hardware Upgrades: If you frequently use resource-intensive Windows applications, consider upgrading your hardware, such as adding more RAM or switching to a faster storage device.
Troubleshooting Common Issues
If you encounter common issues while using a Windows emulator on Linux, start by checking for updates and ensuring compatibility with your system.
Many problems can be resolved by simply updating your emulator and ensuring that it’s compatible with your version of Linux.
If you continue to experience issues, consider adjusting the emulator settings to better match your system’s specifications. Sometimes, lowering the graphics or adjusting the memory allocation can greatly improve performance.
Additionally, ensure that you have the necessary drivers installed for your hardware, as this can often be a source of compatibility issues.
If you’re encountering specific error messages, searching online forums and communities for solutions can be incredibly helpful. Many users have likely experienced similar issues and can offer valuable insights and solutions.
Lastly, consider reaching out to the emulator’s support community for assistance. They may have specific troubleshooting steps or patches to address common issues.
Frequently Asked Questions
Can a Windows Emulator for Linux Run All Windows Applications Without Any Limitations?
Yes, a Windows emulator for Linux can run most Windows applications without limitations. However, some complex or resource-intensive software may not work perfectly. It’s best to research specific applications before relying on the emulator.
Is It Possible to Use Hardware Acceleration With a Windows Emulator on Linux?
Yes, it’s possible to use hardware acceleration with a Windows emulator on Linux. This feature allows you to boost performance and run graphics-intensive applications seamlessly, providing a more efficient and enjoyable user experience.
Are There Any Legal Considerations When Using a Windows Emulator for Linux?
When using a Windows emulator for Linux, it’s important to consider legal implications. Make sure to use licensed Windows software and be aware of any licensing restrictions, as some versions may not be permitted for emulation.
Can a Windows Emulator for Linux Support the Latest Windows Operating System Versions?
Yes, a Windows emulator for Linux can support the latest Windows operating system versions. It allows you to run Windows applications on your Linux system without having to dual boot or use a separate machine.
How Does a Windows Emulator for Linux Handle Updates and Security Patches for Windows Applications?
Just like a vigilant guardian, a Windows emulator for Linux constantly monitors for updates and security patches, ensuring your Windows applications remain protected and up-to-date, allowing you to navigate the digital world freely and confidently.
Conclusion
In conclusion, using a Windows emulator on Linux offers the benefits of running Windows applications seamlessly on your Linux system.
By installing, configuring, and optimizing the emulator, you can enjoy the compatibility of different Windows programs while troubleshooting common issues.
Embrace the power of parallelism in your approach to utilizing a Windows emulator for Linux and elevate your experience with the best of both operating systems.
Может ли Win4Lin заменить установку Windows?
Если вы иногда запускаете Windows, но при этом регулярно работаете с Linux, то в голове рано или поздно возникнет путаница. Как бы это сказать, вы оказываетесь левшой в мире, где у всех главной является правая рука. Действительно, Windows сегодня доминирует на рабочих столах пользователей, и до тех пор, пока это состояние не изменится, каша в голове не исчезнет. Всё это знакомо бывшим пользователям Windows, кому приходится возвращаться к этой ОС для работы или игр.
Возникают своеобразные “трудности перевода”, связанные с разницей в формах, функциях или опциях приложений Windows и эквивалентных программ под Linux. Иногда просто не находишь должной замены привычному приложению Windows или Linux под другой платформой.
Если же вы относитесь к тем храбрецам, кто смог перейти из мира Windows в Linux, то всегда остаются какие-то места, где функциональность Windows превосходит платформу Linux, либо где в Linux нет должной замены. Удобство интерфейса – ещё один фактор, и до последнего времени между сообществом разработчиков Linux и специалистами в области интерфейсов было весьма мало сотрудничества. К счастью, сегодня ситуация налаживается, и в некоторых интерфейсах Linux могут разобраться даже новички.
В качестве примера можно привести такие достойные уважения инициативы, как форум Free Desktop, проект Better Desktop (финансируется Novell, распространителем дистрибутива Suse Linux) и организацию Open Usability. Все они работают над тем, чтобы Linux была проще и удобнее в работе. В идеальном случае хорошее приложение Linux должно содержать все удачные находки, которые есть в дизайне приложения Windows. Конечно, если поставить целью дать тот же уровень удобства и привлечь ту же целевую аудиторию. Но если нужного приложения под Linux нет, то на помощь может прийти Win4Lin.
Игры DirectX используют сложную графическую библиотеку, существующую только в Windows, которая энтузиастам Linux, к сожалению, совершенно не подходит. В отличие от игр OpenGL. OpenOffice по-прежнему не в полной мере поддерживает формат MS Word и продолжает выдавать предупреждение при открытии, модификации или записи документа Word в OpenOffice Writer. В итоге при открытии в Microsoft Office мы иногда получаем неправильно отформатированный документ Word. Поэтому приходится тратить дополнительное время на составление документа под Linux и его сопоставление с документом Windows. И хотя флагманская программа редактирования изображений под Linux, называемая Gimp, прекрасно справляется со многими профессиональными задачами, ей всё равно далеко до глубины и охвата Adobe Photoshop или Jasc Paintshop Pro.
Но не стоит отчаиваться и разрываться между Linux и Windows. Есть вполне удобное компромиссное решение под названием Win4Lin Pro. За последние годы Win4Lin существенно улучшился, как и другие эмуляторы под Linux.
Двойная загрузка
Двойная загрузка – практика вполне распространённая, проверенная и очень даже подходящая для работы в нескольких ОС. Простая установка и выделенные разделы позволяют создать хорошее рабочее окружение, в котором можно загружать ту или иную изолированную от других операционную систему. Можно устанавливать, конфигурировать, удалять и перекраивать ОС независимо от других. Но самым большим недостатком, конечно, является выгрузка одной операционной системы и запуск другой. В частности, подобная система не очень хороша для отладки приложений для нескольких ОС, когда приходится часто перезагружаться.
Хотя кросс-платформенные продвижения привели к немалому числу успешных побед Linux, здесь упомянем лишь рабочий драйвер NTFS, позволяющий осуществлять чтение и запись на разделы NTFS. Но всё равно возможности остаются весьма ограниченными, особенно для программистов. Хорошим выходом здесь как раз является эмуляция, позволяющая работать с приложениями Windows в простом и удобном формате.
Что такое эмуляция?
Множество решений на рынке, по сути, делают одно и то же: создают эмулированное (абстрактное) окружение на платформе Linux, внутри которого можно запускать другие ОС и приложения для них (например, под Windows). Концепция, методы, инструментарий и возможности у разных продуктов сильно отличаются, поэтому весьма сложно напрямую сравнивать решения между собой. Существуют и частичные окружения эмуляции, например, переводчик API, преобразующий специфические вызовы функций Windows в язык библиотек Linux и наоборот. Конечно, есть и более полные решения, предлагающие более широкий спектр возможностей, а также параллельную работу одной или нескольких разных ОС (обычно в виде гостевых систем внутри host-ОС).
Пару слов о виртуализации
Если эмуляция пытается воссоздать аппаратные и программные ресурсы в текущей аппаратной и программной среде, то виртуализация подразумевает раздел аппаратно-программной среды на несколько обособленных рабочих окружений. Под виртуализацией также часто подразумевают возможность создавать виртуальное окружение гостевой ОС под host-системой, но это определение не полное. Виртуализация может происходить на программном уровне, с модификациями (или без них) гостевой и host-системы, а также с использованием ресурсов процессоров (AMD Pacifica или Intel VT).
Точно так же существует множество типов и разновидностей методов виртуализации. Полная виртуализация симулирует полное аппаратное окружение, позволяющее использовать немодифицированное окружение ОС (Bochs); паравиртуализация вводит специальное API, которое требует модификации ОС (Xen); а “родная” виртуализация симулирует часть аппаратных ресурсов для полностью изолированной гостевой системы (VMware). Существует виртуализация на уровне ОС, на уровне приложений и даже на аппаратном уровне, которую можно разделять на ещё на меньшие уровни, чтобы более эффективно использовать существующие ресурсы по сравнению с простым методом эмуляции.
Эмуляция API
Здесь в качестве примера можно привести технологию TransGaming от Cedega, которая позволяет запускать под Linux популярные игры (кстати, Cedega есть и под Mac OS), разработанные только под ОС Windows. Как такое возможно? С помощью связи интерфейсов прикладного программирования (API, библиотеки, служащие строительными блоками для приложений) вроде Direct3D, DirectInput и DirectSound, с их аналогами под платформу Linux: OpenGL, X11 GUI, Open Sound System (OSS) и Advanced Linux Sound Architecture (ALSA).
В отличие от уровня абстракции, который просто эмулирует Win32 API, полноценные эмулированные окружения наподобие Win4Lin дают функциональность ОС в гостевом окружении, созданном на ресурсах host-ОС. Подобные продукты предоставляют широкий спектр возможностей. В окне эмуляции можно загружать, работать и перезапускать гостевую ОС без какого-либо влияния на host-ОС и без изменения её окружения.
Win4Lin или VMware?
Розничная коробка Win4Lin Professional Desktop.
Если не вдаваться в подробности, то основные отличия между Win4Lin и VMware можно свести к следующему: Win4Lin – это специализированное окружение эмуляции, разработанное с учётом лёгкости использования, установки и настройки для единственной цели запуска Windows под Linux. С другой стороны, VMware преследует более сложную цель: эмулировать различные платформы ОС в масштабируемом и гибком варианте. Поэтому Win4Lin несёт меньше операционных издержек по сравнению с VMware, но приносит масштабируемость в жертву простоте.
Внутри обе технологии полностью отличаются. Win4Lin базируется на свободно доступной и популярной платформе QEMU, которая задействует эмуляцию пользовательского режима (user mode) для запуска многоплатформенных программ и системный режим (system mode) для полной эмуляции “железа”. VMware использует собственное окружение эмуляции и собственные технологии для схожей цели: обеспечить работу гостевой ОС в более широком контексте ресурсов. Если VMware можно назвать общим подходом, то Win4Lin (с помощью QEMU) – специализированным.
Знакомимся с Win4Lin
Как мы отметили выше, NeTraverse Win4Lin Professional более специализирована по масштабу и области применения, поэтому она хорошо подходит для определённых задач (запуск при необходимости нескольких нужных приложений Windows) для неопытных пользователей и тех, кто недавно перебрался с Windows. Действительно, далеко не всегда имеет смысл прибегать к мощной и сложной эмуляции типа VMware Workstation и Server, поскольку требования этих продуктов и операционная нагрузка весьма проблематичны для перегруженных или слабых компьютеров. В отличие от собственного окружения, которое использует VMware, Win4Lin построена на бесплатном окружении эмуляции под названием QEMU.
QEMU обеспечивает полную эмуляцию окружения для архитектур x86. Но это окружение постоянно дорабатывается, да и не может обеспечить ряд возможностей, которые есть в более полных пакетах Bochs или EMC VMware. Среди ограничений QEMU можно отметить неполную поддержку версий ОС Windows и их функций (например, Windows XP без пакетов обновлений или графики DirectX), а также отсутствие “родных” драйверов для многих типов устройств (то есть мы получаем дополнительную системную нагрузку при обработке мультимедийных задач). Впрочем, QEMU – простое и достаточно стабильное окружение, позволяющее эмулировать Windows под Linux. Обеспечивается как полная системная эмуляция, включая процессор и периферию, так и эмуляция пользовательского режима для запуска кросс-платформенных программ.
Есть и ускоритель QEMU с закрытым кодом под названием KQEMU (от того же автора), который бесплатен и даёт пользователям QEMU практически “родную” скорость окружения i386. Win4Lin использует оба упомянутых компонента.
Что хорошего?
Поддержка Интернета работает сразу же. Internet Explorer под эмуляцией вполне отзывчив и загружает страницу по умолчанию (web-сайт Win4Lin Professional) без задержек, что не может не радовать сердце неопытного пользователя. В целом, установка проходит быстро и без проблем.
Win4Lin Pro также поддерживают опцию снапшотов для эмулированных систем, то есть возможность откатиться до первоначального состояния. Прекрасная функция, позволяющая защититься от вирусов и почтовых программ, а также других вредоносных или нестабильных программ под Windows. Пробный период работы составляет 30 дней.
Можно использовать три режима установки гостевой ОС.
- Image – самый простой режим. Все файлы, документы и настройки гостевой ОС хранятся в файле GUEST.IMG.
- Shared – режим по умолчанию. Все файлы, за исключением папки “Мои документы” (“My Documents”) хранятся в файле GUEST.IMG. Документы можно совместно использовать в системе Linux.
- Integrated – настройки и файлы учётной записи Windows хранятся в файловой системе Linux вместо файла GUEST.IMG, что даёт своего рода перемещаемый профиль.
Ограничения
К сожалению, под Win4Lin не поддерживаются некоторые специализированные библиотеки вроде Microsoft DirectX, поэтому приложения, написанные под этот API, работать не будут. Раньше мы использовали для тестирования разницы в производительности “родного” и эмулированного окружения Windows пакет SYSMark2000. Более поздние версии SYSMark требуют DirectX, что не позволяет использовать их для тестов.
Существует и несколько других ограничений окружения Win4Lin Professional, значимость которых меняется в зависимости от обстоятельств. Ниже мы приводим краткий список ограничений. Если вам нужен полный список, то ознакомьтесь с документом Release Notes, расположенным в каталоге /opt/win4linpro/docs/Release-Notes.html.
Образы ОС
Образы гостевой ОС (окружение Windows) ограничены максимумом в 64 Гбайт. Поддерживаются только следующие версии ОС: Windows 2000 до SP3 и Windows XP (в вариантах Home и Professional) с SP1 или более поздними версиями.
Платформы
Не поддерживаются Windows 2000 с пакетом обновления SP3 и более поздним, Windows XP без пакетов обновления, версии Windows Recovery и Original Equipment Manufacturer (OEM). Как показывает опыт, все эти версии работают действительно нестабильно.
Ограничения работы
Максимальный объём физической памяти, который может использовать Win4Lin Professional, составляет две трети от общего объёма памяти. То есть для каждых 256 Мбайт ОЗУ Win4Lin может использовать не более 160 Мбайт. Значение занимаемой памяти можно менять и после установки Windows, но вот выделенное дисковое пространство после создания образа изменить уже не получится.
Установка
Уже во время установки Windows XP (SP2) начинаешь ощущать разницу в производительности и времени, которое уходит на весь процесс. Под эмулированным окружением Win4Lin Windows XP SP2 весьма медленно копирует файлы во время текстового этапа установки. Обратившись к документу Win4Lin Pro Release Notes (раздел Anomalies and Caveats), мы обнаружили описание этой проблемы, но вряд ли её можно назвать такой уж критической. Кстати, проблема возникает лишь с некоторыми дистрибутивами Windows.
Подготовка к установке
Каждый дистрибутив Linux содержит свои требования и зависимости. В нашей статье мы использовали Fedora Core 5, поэтому процедура ниже приводится для FC5. Для помощи по установке на другие дистрибутивы Linux обратитесь к документу Win4Lin Pro User Guide, расположенному по адресу /opt/win4linpro/docs. Если система не подготовлена, то вы получите следующее сообщение об ошибке.
Приведённые ниже команды специфичны для Fedora Core.
$ yum update kernel
$ yum install kernel-devel gcc
Первой командой вы обновляете ядро, а второй устанавливаете последние исходники ядра и хедеры с помощью популярного GNU-компилятора. Затем следует собрать ускоренный драйвер ядра KQEMU.
$ /opt/win4linpro/bin/build_kqemu.sh
К сожалению, на нашей тестовой машине комплект KQemu не смог правильно откомпилироваться, сообщая о различиях в версиях ядра и хедеров. Опытный пользователь Linux может легко решить такую проблему, обновив исходный код, но что делать новичкам? А что делать в ответ на другие ошибки сборки? В конце концов, система Win4Lin Professional призвана закрыть брешь, в том числе и брешь по опыту использования, между платформой Linux и Windows.
К счастью, можно скачать готовую сборку с Red Hat RPM. Одна из таких сборок расположена по адресу qemu-0.8.0-3.fc5.i386.rpm, её можно установить с помощью следующих команд.
$ su
Password: <введите пароль ROOT>
# rpm -ivh qemu-0.8.0-3.fc5.i386.rpm
В общем, если у вас возникнут проблемы с исходным кодом Win4Lin KQemu, то обратитесь к упомянутой версии RPM.
Установка пакета
Установка пакета Win4Lin Pro производится с помощью следующих команд. Вам нужно будет поднять привилегии.
$ su
Password: <введите пароль ROOT>
Успешный процесс сборки проиллюстрирован ниже.
Процесс установки следует начинать не с учётной записи root, поскольку запуск Win4Lin возможен только с не-root входа.
Установка носителя гостевой ОС
Установку носителя гостевой ОС можно выполнить следующей командой.
$ loadwinproCD /dev/cdrom
В данном примере /dev/cdrom является символической ссылкой на реальное устройство /dev/scd0, соответствующее приводу Plextor SATA DVD-ROM. Для ваших приводов строчка может различаться в зависимости от расположения и нумерации. Именно поэтому в нашем примере мы использовали /dev/cdrom.
Работа с гостевой ОС
Установка
Важное замечание: сразу же следует указать максимальный объём диска, который вам потребуется. Как только образ будет завершён, изменить объём вы уже не сможете. По умолчанию предлагается 4 Гбайт, но этого может не хватить для ряда сценариев. На примере ниже мы создали раздел в 6 Гбайт, а режим установки выбрали по умолчанию (Shared).
$ installwinpro -w winxppro -g 6G -m shared
Команда запускает процесс установки, который показан на следующей иллюстрации (там указан раздел в 4 Гбайт).
Когда гостевое окружение появится на экране, вы получите что-то подобное следующей иллюстрации.
Для получения более подробной информации о режимах установки и рабочих параметрах обратитесь к руководству пользователя Win4Lin.
Инициация
Когда предварительные процедуры будут завершены, программа установки завершит работу окружения для подготовки к начальной установке гостевой ОС. Вызвать только что созданный образ Windows очень легко: с помощью соответствующего значка “One Click to Windows” в панели задач или с рабочего стола ярлыком “Win4Lin Pro”. Можно и использовать командную строку /opt/win4linpro/bin/winpro.
Работа с гостевой системой очень простая: стоит навести курсор мыши на активное окно эмуляции, как он сразу же оказывается в гостевой системе. Поэтому здесь не нужно набирать комбинации с CTRL, как в VMware. Наконец, Win4Lin выдаст ещё одно предупреждение.
Изменяем размер экрана
В окружении Win4Lin можно легко менять разрешение экрана, привычно через настройки дисплея. Когда настройки будут применены, Win4Lin динамически изменит размер окна. Перезагрузки не требуется. Кстати, разрешение гостевой ОС 1152×864 при любой глубине цвета официально не поддерживается. Под окружением Win4Lin вы не сможете получить доступ к видеовходу и другой периферии, хотя host-система может их использовать. То же самое относится и к устройствам USB.
На иллюстрации ниже показана страница Internet Explorer с разрешением экрана 1024×768:
Тестовая конфигурация
За последние годы были внесены изменения, касающиеся поддержки интерфейсов PCI Express и Serial ATA (SATA), а также специфических графических библиотек, которые требуют некоторые тестовые пакеты.
Наша тестовая система использует процессор AMD Athlon 64 3500+ на 2,2 ГГц с 2 Гбайт памяти DDR400 и жёстким диском Western Digital SATA на 7200 об/мин. Мы собрали систему на материнской плате Chaintech VNF4 с чипсетом nVidia nForce4, взяв видеокарту eVGA GeForce 6600 PCIe со 128 Мбайт памяти (конечно, не самый быстрый вариант, но для Linux подойдёт). Как видим, обычный средний ПК, который можно встретить у многих пользователей.
Самой свежей версией Windows XP сегодня является Service Pack 2 (SP2), но вскоре уже выйдет Windows Vista. Под Fedora Core 5 мы установили именно Windows XP (SP2).
Производительность
Использовать тестовый пакет SYSmark от BAPCo под Win4Lin не получится, поскольку ему нужна поддержка DirectX. Мы связались с Джимом Куртином (Jim Curtin), CEO Win4Lin, чтобы узнать, какие тесты позволяют объективно сравнить производительность. Нам порекомендовали провести следующие тесты.
- Полное время установки. Замеряется время, которое требуется на установку Windows в обычной и эмулированной среде.
- Полное время загрузки. Замеряется время от “холодного” включения до появления рабочего стола.
Полное время установки
В следующей таблице приведены результаты первого теста. Время мы считали от момента, когда установщик Windows начнёт отображать проценты (во время копирования файлов).
Прогресс установки | Эмуляция | Обычная среда |
10% | 3:10 | 1:20 |
25% | 6:42 | 1:43 |
40% | 10:37 | 2:30 |
50% | 16:28 | 3:04 |
100% | 32:03 | 5:45 |
Запрос ключа | 35:40 | 10:03 |
Завершение | 55:08 | 25:01 |
Можно выделить несколько интересных особенностей: процесс замедляется где-то около отметки 30%. Сначала до 24% установка проходит быстро, а затем скорость существенно снижается. На отметке 51% скорость в эмулированной среде вновь снижается. В обычной среде установка замедляется где-то на три минуты на отметке 50%, но всё равно по скорости мы получаем существенный прирост. Как видим, результаты говорят не в пользу Win4Lin Pro, и на них влияют много факторов.
Полное время загрузки
Как было сказано выше, мы замерили время загрузки с момента “холодного” включения до появления рабочего стола. Если установка ОС – процесс разовый, то загружать систему приходится часто. Ниже приведены результаты.
Прогресс | Эмуляция | Обычная среда |
Время загрузки (первый вариант) | 2:18 | 1:15 |
Время загрузки (второй вариант) | 1:09 | 1:24 |
Время загрузки (третий вариант) | 0:53 | 1:03 |
Открытие документа PowerPoint
В третьей таблице приведено время открытия документов PowerPoint разного размера. Файлы были взяты с web-сайта Space Symposium. Мы взяли обе презентации об исследовании солнечной системы (Human and Robotic Space Exploration of the Solar System) и презентацию Джима Герингера (Jim Geringer) объёмом 29 Мбайт.
Открытие документа PowerPoint | Эмуляция | Обычная среда | ||||
Объём файла | Первый | Второй | Третий | Первый | Второй | Третий |
3 Мбайт | 0:08 | 0:09 | 0:08 | 0:03 | 0:02 | 0:01 |
10 Мбайт | 0:06 | 0:07 | 0:09 | 0:02 | 0:02 | 0:01 |
29 Мбайт | 0:27 | 0:26 | 0:26 | 0:09 | 0:05 | 0:04 |
Что ж, результаты неудивительны. Мы замеряли время с момента щелчка по документу до того момента, когда PowerPoint можно использовать. Затем мы закрывали приложение и запускали следующий файл, не соблюдая какой-либо порядок. Как видим, в некоторых случаях производительность обычной системы оказывается определённо выше, особенно при третьем открытии документа (третья колонка). Даже без соблюдения порядка каждое следующее открытие происходило быстрее.
Заключение
Вряд ли можно однозначно ответить, может ли Win4Lin полностью заменить “родную” установку Windows для некоторых сценариев. Не слишком “тяжёлые” приложения, например, из пакета Microsoft Office, работают очень хорошо. Но, скажем, для профессиональной графической работы задержки в работе Windows под Linux могут оказаться критичными. Программы наподобие Adobe Photoshop или Jasc Paintshop требовательны к ресурсам и могут полностью нагрузить систему даже на задачах средней степени тяжести. Поэтому для таких сценариев можно рекомендовать либо двойную загрузку, либо серьёзные аппаратные ресурсы.
Приложения, использующие графические библиотеки DirectX, не могут работать под Win4Lin. Сегодня DirectX используется во многих приложениях, от игр до разных утилит, включая даже тесты производительности, которые были бы полезными в нашем тестировании.
Впрочем, это отнюдь не означает, что Win4Lin не подходит для типичных рабочих задач. Учтите, что игры существенно отличаются от других настольных приложений, и для игр можно использовать специальное окружение TransGaming Cedega. Поэтому Win4Lin справляется со своими задачами. А именно, с запуском рабочих приложений Windows под Linux, когда это требуется. Но если вы планируете серьёзно работать с приложениями Windows, то лучше воспользоваться системой промышленного уровня: VMWare или российскими “Параллелями” (parallels.com). Кстати, “Параллели” хорошо поддерживают аппаратную реализацию VT в отличие от VMWare, которая вынуждена использовать VT только в 64-битном режиме, поскольку в 32-битном должного прироста скорости нет.