Как стать автором
Обновить

Wine на Windows 10. Он работает

Время на прочтение 4 мин
Количество просмотров 65K
Автор оригинала: David Gerard
Wine — программа для запуска приложений Windows на компьютерах под Unix.

Запуск Wine на Windows был мечтой фанатов, которые следуют зову сердца «Мы делаем то, что должны, потому что не обязаны это делать», по крайней мере, с 2004 года, когда кто-то попытался скомпилировать Wine в Cygwin и сломал реестр хост-системы.

Оправдание: «А как же старые приложения, которые не работают должным образом в последних Windows?». Но мы-то понимаем, что истинная причина — «Я долго страдал за своё искусство, теперь ваша очередь».

В конце 2008 года меня одолела навязчивая мысль — и я (кажется, это был я) создал страничку WineOnWindows на вики Wine. Вкратце: это было вообще невозможно, поскольку всё работало через Cygwin, MinGW или Windows Services для Unix. Текущая страница не намного успешнее.

Windows 10 представила подсистему Windows для Linux, а Ubuntu удобно загружается из Microsoft Store. В результате наша глупая идея реализуется практически сама собой, разве что надо вручную установить переменную среды DISPLAY.

До сих пор это умопомрачительно бесполезно. Wine работает только с 64-разрядными приложениями Windows, то есть даже не со всеми приложениями, которые идут в составе самой Windows 10.

(Первоначальный проект стартовал после того, как кто-то не смог запустить Encarta 97 на Windows 10. Таким образом, как и любое настоящее гиковское решение, оно на самом деле не решает оригинальную проблему пользователя).

Но я хочу ещё раз подчеркнуть: сейчас это работает тривиально. Я не какой-то сумасшедший гений, который реализовал фантастический проект — просто я, кажется, первым публично объявил о данном факте.

Как сделать эту глупую вещь


1. У вас же 64-битная Windows 10, верно? Это единственная версия с WSL.

2. Установите WSL. Панель управления -> Приложения -> Программы и компоненты -> Включение и отключение компонентов Windows. Поставьте галочку «Подсистема Windows для Linux». Перезапустите Windows.

3. Зайдите Microsoft Store, установите Ubuntu (в основном, для её запуска и создан WSL). Я установил Ubuntu 18.04 LTS. Откройте Ubuntu, и вы увидите терминал bash.

4. Установите следующее из командной строки bash:

sudo dpkg --add-architecture i386
sudo apt update; sudo apt upgrade
sudo apt install wine-stable

Можете установить более актуальную версию Wine, если хотите помаяться дурью (не забывайте о двух новых библиотеках, которые нужны для wine-devel >=4.5 и которые ещё не вошли в Ubuntu!). Дайте знать, если это сработает.

5. Добавьте к своему .bashrc такую строчку:

export DISPLAY=:0.0

Вероятно, вы захотите запустить это и в текущем окне bash.

6. Установите VcXsrv, красиво упакованную версию xorg, скомпилированную для Windows, — просто возьмите последнюю версию исполняемого файла и запустите его. Запустите X Server через кнопку «Пуск» и XLaunch. Он проведет вас через дефолты — оставьте большинство из них как есть. Я на всякий случай поставил галочку «Отключить контроль доступа». Сохраните конфигурацию.

6а. Если хотите проверить, что X-сервер настроен правильно, установите sudo apt install x11-apps и запустите xeyes для краткого путешествия обратно в 80-90-е.

7. Сам wine не работает, потому что 32-битные бинарники не запускаются в WSL. На нашей 64-битной Windows 10 выдаётся ошибка /usr/bin/wine: 40: exec: /usr/lib/wine/wine: Exec format error. Видимо, это исправили в WSL 2.

А пока запустим Блокнот в Wine!

wine64 /usr/lib/x86_64-linux-gnu/wine/fakedlls/notepad.exe



TO DO: 32-битная поддержка. Придётся подождать выхода WSL 2. Интересно, будут ли работать древние программы Win16 — по идее, они должны запуститься в Wine, даже если больше не работают в самой Windows.

32-битные приложения через qemu


Спасибо анонимному комментатору, который предложил, как подступиться к запуску 32-битных приложений.

sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
sudo service binfmt-support start


И теперь мы можем сделать:

fun@DESKTOP-7F6DU8P:~$ wine --version
wine-3.0 (Ubuntu 3.0-1ubuntu1)

Впрочем, Encarta 97 всё равно не работает:

fun@DESKTOP-7F6DU8P:/mnt/e$ wine SETUP.EXE
wine: Unhandled page fault on read access to 0xffffffff at address 0x11df:0x00002c11 (thread 0011), starting debugger...
0011:err:seh:start_debugger Couldn't start debugger ("winedbg --auto 15 108") (2)
Read the Wine Developers Guide on how to set up winedbg or another debugger

Для тех, кто в теме: file говорит SETUP.EXE: MS-DOS executable, NE for MS Windows 3.x, так что нам нужно спуститься до редких 16-битных программ.

Encarta 97 устанавливается и работает безупречно в Wine 4.13 на Linux… но в 4.13 на Windows 10 все ещё нет:

fun@DESKTOP-7F6DU8P:~$ wine /mnt/e/SETUP.EXE
Xlib: extension "MIT-SHM" missing on display ":0.0".
Xlib: extension "MIT-SHM" missing on display ":0.0".
0009:err:process:__wine_kernel_init boot event wait timed out
001d:err:process:__wine_kernel_init boot event wait timed out
wine: Unhandled page fault on read access to 0xffffffff at address 0x11cf:0x00002c11 (thread 001e), starting debugger...001e:err:seh:start_debugger Couldn't start debugger ("winedbg --auto 28 152") (2)
Read the Wine Developers Guide on how to set up winedbg or another debugger
001d:err:ntdll:RtlpWaitForCriticalSection section 0x7e6273e0 "syslevel.c: Win16Mutex" wait timed out in thread 001d, blocked by 001e, retrying (60 sec)
Xlib: extension "MIT-SHM" missing on display ":0.0".
Could not load wine-gecko. HTML rendering will be disabled.
001e:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7b4a6abc
wine client error:1e: write: Bad file descriptor

Конечно, он выдаёт разные сообщения об ошибках в нескольких запусках…
Теги:
Хабы:
+84
Комментарии 117
Комментарии Комментарии 117

Публикации

Истории

Работа

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн