Wine
Wine (рекурсивный акроним от Wine Is Not an Emulator — «Wine — это не эмулятор») — свободный слой совместимости, позволяющий запускать приложения и компьютерные игры, разработанные для Microsoft Windows, на Unix-подобных операционных системах (Linux, macOS, FreeBSD и других). Wine распространяется на условиях лицензии GNU LGPL и разрабатывается преимущественно методом обратной разработки для обхода проблем авторского права[citation:1].
Wine не эмулирует процессор или виртуальную машину, а предоставляет альтернативную реализацию Windows API, переводя вызовы Windows-приложений в вызовы POSIX. Благодаря этому приложения под Wine работают с производительностью, близкой к нативной[citation:2][citation:8]. Проект насчитывает более 15 лет разработки до первого стабильного релиза и активно поддерживается сообществом, компанией CodeWeavers (основным спонсором), а также используется как основа для многих других проектов, включая Proton от Valve для Steam Deck и SteamOS[citation:1][citation:6].
История
Ранние годы (1993–2002)
Проект Wine был начат Бобом Амштадтом (Bob Amstadt) и Эриком Юнгдалом (Eric Youngdale) в 1993 году как способ запуска 16-битных приложений Windows 3.x на Linux[citation:1][citation:2]. Идея была вдохновлена двумя продуктами Sun Microsystems: Wabi (слой совместимости для Solaris) и Public Windows Initiative (попытка создать открытую реализацию Windows API, отклонённая под давлением Microsoft в 1996 году)[citation:1].
Первые обсуждения проекта велись в новостной группе comp.os.linux в июне 1993 года[citation:1]. С 1994 года лидером разработки стал Александр Жюльяр (Alexandre Julliard), который возглавляет проект по сей день[citation:2][citation:5].
Первоначально Wine распространялся под лицензией MIT (как и X Window System), но в марте 2002 года, опасаясь появления проприетарных версий, не возвращающих изменения в основной проект, разработчики перешли на GNU LGPL 2.1 или выше[citation:1][citation:2].
Выход в бета-версию и стабильный релиз (2005–2008)
25 октября 2005 года проект официально вошёл в стадию бета-тестирование с выпуском версии 0.9[citation:1]. После 15 лет разработки, 17 июня 2008 года, вышла первая стабильная версия — Wine 1.0[citation:2][citation:5].
В последующие годы выходили новые стабильные ветки:
- Wine 1.2 (16 июля 2010)[citation:1]
- Wine 1.4 (7 марта 2012)[citation:1]
- Wine 1.6 (18 июля 2013)[citation:1]
- Wine 1.8 (19 декабря 2015)[citation:1]
- Wine 9.0 (16 января 2024)[citation:1]
Современный этап (2020–2025)
В 2020-е годы Wine продолжил активное развитие. Ключевые нововведения:
- Внедрение поддержки Vulkan для трансляции Direct3D 12 через подпроект vkd3d[citation:2].
- Поддержка Wayland (начиная с версии 8.9)[citation:3].
- Улучшение WoW64 (Windows-on-Windows 64-bit) для запуска 32-битных приложений в 64-битных окружениях[citation:3].
- Добавление поддержки Arm64EC для Windows 11 on ARM в версии 10.0[citation:6].
21 января 2025 года вышла стабильная версия Wine 10.0[citation:1][citation:6]. Основные улучшения включают автоподстройку масштабирования для high-DPI дисплеев, поддержку OpenGL в драйвере Wayland, улучшения для Direct3D 9 и множество исправлений[citation:6].
Технические особенности
Архитектура
Wine реализует ABI Windows полностью в пользовательском пространстве, без использования модуля ядра[citation:5][citation:1]. Системные службы, которые в Windows выполняются ядром, в Wine обеспечивает демон wineserver, отвечающий за базовые функции Windows, интеграцию с X Window System и преобразование сигналов в исключения Windows[citation:5][citation:1].
Windows-приложения под Wine выполняются как обычные процессы хостовой системы. Библиотеки Windows (DLL) замещаются либо встроенными реализациями Wine, либо могут загружаться из реальной установки Windows (при её наличии), хотя это может нарушить лицензионное соглашение[citation:2][citation:5].
Основные компоненты
- winecfg — графическая утилита для настройки Wine. Позволяет выбрать версию эмулируемой Windows (от Windows 2.0 до Windows 10/11), настроить звук, графику, дисковые буквы и прочее[citation:1][citation:8].
- regedit — редактор реестра Windows, совместимый с форматом реестра Wine[citation:8].
- winetricks — скрипт для установки дополнительных компонентов (шрифты, библиотеки DirectX, .NET Framework, Visual C++ runtime), необходимых для некоторых приложений[citation:2][citation:8].
- WINEPREFIX — переменная окружения, позволяющая создавать изолированные окружения (префиксы) с отдельными дисками C: и реестрами. Это удобно для запуска разных приложений с разными настройками[citation:8].
- WINEARCH — переменная, задающая архитектуру префикса: win32 (32-бит) или win64 (64-бит). По умолчанию создаётся 64-битный префикс[citation:8].
Графика и Direct3D
Для запуска игр Wine использует несколько уровней трансляции графических вызовов:
- wined3d — встроенный транслятор из Direct3D (до версии 11) в OpenGL[citation:2].
- DXVK — внешний проект, транслирующий Direct3D 9, 10 и 11 в Vulkan. Не входит в основной код Wine, но может использоваться как подключаемая библиотека для повышения производительности[citation:1][citation:2].
- vkd3d — транслятор Direct3D 12 в Vulkan. Входит в состав Wine начиная с версии 4.0[citation:1][citation:2].
- Gallium.Nine — альтернативный транслятор Direct3D 9 через драйверы Gallium3D, позволяющий добиться прироста производительности до 2 раз[citation:1].
Wine также поддерживает аудио-API (XAudio2 через библиотеку FAudio) и игровые контроллеры через XInput и Raw Input (с использованием SDL)[citation:1].
Поддержка 64-битных и 16-битных приложений
Предварительная поддержка 64-битных Windows-приложений была добавлена в Wine 1.1.10 (декабрь 2008 года)[citation:5]. Начиная с версии 1.1.44 (2010) реализована поддержка WoW64, позволяющая запускать 32-битные и 64-битные приложения в одном префиксе[citation:5].
Важной особенностью Wine является возможность запуска 16-битных Windows-программ даже на 64-битных хостовых системах, где родные версии Windows этого не поддерживают[citation:5].
Использование
Установка
На большинстве дистрибутивов Linux Wine доступен в официальных репозиториях. Для Arch Linux и производных он устанавливается из репозитория multilib (пакеты wine, wine-stable, wine-staging)[citation:8]. Для Ubuntu/Debian рекомендуется добавлять официальный репозиторий WineHQ для получения последней версии[citation:3].
Базовый запуск
После установки запустить программу можно командой:
wine имя_программы.exe
Для графического запуска часто достаточно двойного щелчка по .exe-файлу в файловом менеджере, если Wine ассоциирован с этим типом файлов[citation:4].
Создание отдельных префиксов
Для изоляции приложений используется переменная WINEPREFIX:
$ WINEPREFIX=~/myapps winecfg # создать/настроить префикс $ WINEPREFIX=~/myapps wine program.exe # запустить программу в этом префиксе
Для создания 32-битного префикса на 64-битной системе:
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg
Расширенная настройка
- Установка дополнительных компонентов через winetricks: `winetricks corefonts dotnet48 vcrun2019`.
- Настройка звука: в winecfg выбрать только одно звуковое устройство, установить пакеты lib32-alsa-plugins, lib32-pipewire или lib32-pulse (в зависимости от используемой звуковой подсистемы)[citation:8].
- Решение проблем с отображением шрифтов: установка Microsoft TrueType шрифтов через winetricks corefonts[citation:8].
Проекты, основанные на Wine
Благодаря открытой лицензии Wine стал основой для множества коммерческих и некоммерческих проектов:
- Proton — разработанный Valve слой совместимости на базе Wine, интегрированный в Steam для Linux и Steam Deck. Включает дополнительные патчи для игр, DXVK, vkd3d и поддержку античитов[citation:1][citation:6].
- CrossOver — коммерческий продукт компании CodeWeavers (основного спонсора Wine). Содержит тщательно протестированные версии Wine, дополнительные проприетарные компоненты и специализированные настройки для таких приложений, как Microsoft Office и Adobe Photoshop[citation:1][citation:2].
- PlayOnLinux / PlayOnMac — графические оболочки, упрощающие управление префиксами и установку игр через скрипты[citation:2][citation:8].
- Bottles — современный менеджер префиксов на GTK, позволяющий создавать изолированные окружения для приложений и игр[citation:8].
- Cedega (ранее WineX) — форк Wine 2002 года, созданный компанией TransGaming для улучшения поддержки игр. В настоящее время проект закрыт[citation:2].
- ReactOS — операционная система с открытым кодом, стремящаяся к бинарной совместимости с Windows. Активно использует код Wine для пользовательского режима[citation:2].
Версии и ветки
Wine распространяется в трёх основных ветках[citation:3][citation:8]:
- Stable (стабильная) — рекомендуется для большинства пользователей. Релизы выходят раз в несколько месяцев или реже. Последняя стабильная версия — 10.0 (январь 2025)[citation:1].
- Development (разрабатываемая) — содержит новые возможности и исправления; выпускается примерно раз в две недели. Наиболее актуальна для тестирования новых приложений[citation:1].
- Staging (тестовая) — основана на development-ветке, но включает дополнительные патчи, которые ещё не готовы для включения в основную кодовую базу, но полезны для улучшения совместимости[citation:1][citation:2].
Поддержка и сообщество
Основным спонсором Wine является компания CodeWeavers, которая нанимает многих ключевых разработчиков, включая Александра Жюльяра, для работы над Wine и CrossOver[citation:1][citation:5]. Ранее в развитии участвовали Corel (в рамках портирования WordPerfect на Linux) и Google (для обеспечения работы Picasa и Adobe Photoshop CS2)[citation:1][citation:5].
Проект также регулярно участвует в Google Summer of Code[citation:1].
Сообщество Wine поддерживает:
- WineHQ — официальный сайт с документацией, форумом и Bugzilla для отчётов об ошибках[citation:4][citation:7].
- AppDB (Application Database) — база данных совместимости приложений, где пользователи сообщают о степени работоспособности программ[citation:4].
- Русскоязычные ресурсы: разделы в ArchWiki[citation:8] и форумы.