Wine на Windows 10. Той работи

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.

А за сега да стартираме Notepad в Wine!

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

Wine на Windows 10. Той работи

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 'x7fELFx01x01x01x03x00x00x00x00x00x00x00x00x03x00x03x00x01x00x00x00' --mask 'xffxffxffxffxffxffxffxfcxffxffxffxffxffxffxffxffxf8xffxffxffxffxffxffxff'
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)
Прочетете ръководството за разработчици на Wine как да настроите winedbg или друг отстраняващ грешки.

За тези, които разбират: файл казва SETUP.EXE: MS-DOS изпълним файл, NE за 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

Разбира се, той генерира различни съобщения за грешки при няколко старта…

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster