СофтХабрахабр

[Перевод] Wine на Windows 10. Он работает

Wine — программа для запуска приложений Windows на компьютерах под Unix.

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

Спасибо анонимному комментатору, который предложил, как подступиться к запуску 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-битных программ.

13 на Linux… но в 4. Encarta 97 устанавливается и работает безупречно в Wine 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

Конечно, он выдаёт разные сообщения об ошибках в нескольких запусках…

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть