Wine na Windows 10. Działa

Wine — program do uruchamiania aplikacji Windows na komputerach z Unixem.

Uruchomienie Wine na Windows było marzeniem fanów, którzy odpowiadają na wezwanie serca: „Robimy to, co musimy, ponieważ nie jesteśmy do tego zobowiązani”, przynajmniej od 2004 roku, kiedy ktoś próbował skompilować Wine w Cygwin i zepsuł rejestr hosta.

Uzasadnienie: „A co ze starymi aplikacjami, które nie działają poprawnie w najnowszych wersjach Windows?”. Ale my wiemy, że prawdziwą przyczyną jest „Długo cierpiałem za moje sztukę, teraz twoja kolej”.

Pod koniec 2008 roku nękała mnie natrętna myśl — i ja (chyba to byłem ja) stworzyłem stronę WineOnWindows na wiki Wine. Krótko mówiąc: to było w ogóle niemożliwe, ponieważ wszystko działało przez Cygwin, MinGW lub Windows Services for Unix. Bieżąca strona nie jest dużo bardziej udana.

Windows 10 wprowadził podsystem Windows dla systemu Linux, a Ubuntu wygodnie można pobrać ze Sklepu Microsoft. W efekcie nasz głupi pomysł realizuje się prawie sam, wystarczy ręcznie ustawić zmienną środowiskową DISPLAY.

Do tej pory to szaleńczo bezsensowne. Wine działa tylko z 64-bitowymi aplikacjami Windows, co oznacza, że nawet nie ze wszystkimi aplikacjami, które są częścią samego Windows 10.

(Pierwotny projekt rozpoczął się po tym, jak ktoś nie mógł uruchomić Encarta 97 na Windows 10. Tak więc, jak każde prawdziwe rozwiązanie geekowskie, tak naprawdę nie rozwiązuje ono pierwotnego problemu użytkownika).

Ale chcę jeszcze raz podkreślić: teraz to działa prosto. Nie jestem jakimś szalonym geniuszem, który zrealizował fantastyczny projekt — po prostu wydaje się, że jako pierwszy publicznie ogłosiłem ten fakt.

Jak zrobić tę głupią rzecz

1. Masz 64-bitowy Windows 10, prawda? To jedyna wersja z WSL.

2. Zainstaluj WSL. Panel sterowania -> Aplikacje -> Programy i funkcje -> Włączanie i wyłączanie składników systemu Windows. Zaznacz „Podsystem Windows dla systemu Linux”. Uruchom ponownie Windows.

3. Wejdź do Sklepu Microsoft, zainstaluj Ubuntu (głównie, aby uruchomić i stworzyć WSL). Zainstalowałem Ubuntu 18.04 LTS. Otwórz Ubuntu, a zobaczysz terminal bash.

4. Zainstaluj następujące z wiersza poleceń bash:

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

Możesz zainstalować nowszą wersję Wine, jeśli chcesz pomażyć się (nie zapomnij o dwóch nowych bibliotekach, które są potrzebne dla wine-devel >=4.5 i które jeszcze nie zostały dodane do Ubuntu!). Daj znać, czy to zadziała.

5. Dodaj do swojego .bashrc taką linię:

export DISPLAY=:0.0

Prawdopodobnie będziesz chciał to uruchomić również w bieżącym oknie bash.

6. Zainstaluj VcXsrv, ładnie zapakowaną wersję xorg, skompilowaną dla Windows — po prostu pobierz najnowszą wersję pliku wykonywalnego i uruchom go. Uruchom X Server przez przycisk „Start” i XLaunch. Prowadzi cię przez domyślne ustawienia — pozostaw większość z nich bez zmian. Ja dla pewności zaznaczyłem opcję „Wyłącz kontrolę dostępu”. Zapisz konfigurację.

6a. Jeśli chcesz sprawdzić, czy serwer X jest poprawnie skonfigurowany, zainstaluj sudo apt install x11-apps i uruchom xeyes na krótką podróż wstec do lat 80-90.

7. Sam wine nie działa, ponieważ 32-bitowe binarki nie uruchamiają się w WSL. Na naszej 64-bitowej Windows 10 pojawia się błąd /usr/bin/wine: 40: exec: /usr/lib/wine/wine: Exec format error. Wygląda na to, że naprawili to w WSL 2.

A tymczasem uruchomimy Notatnik w Wine!

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

Wine na Windows 10. Działa

DO ZROBIENIA: wsparcie 32-bitowe. Będzie trzeba poczekać na WSL 2. Ciekawe, czy będą działać stare programy Win16 — teoretycznie powinny uruchomić się w Wine, nawet jeśli nie działają już w samej Windows.

32-bitowe aplikacje przez qemu

Dziękuję anonimowemu komentatorowi, który zasugerował, jak podejść do uruchamiania 32-bitowych aplikacji.

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

A teraz możemy zrobić:

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

Jednak Encarta 97 i tak nie działa:

fun@DESKTOP-7F6DU8P:/mnt/e$ wine SETUP.EXE
wine: Nieobsłużony błąd podczas próby odczytu dostępu do 0xffffffff na adresie 0x11df:0x00002c11 (wątek 0011), rozpoczynanie debugera...
0011:err:seh:start_debugger Nie można uruchomić debugera ("winedbg --auto 15 108") (2)
Przeczytaj Przewodnik dla programistów Wine, aby dowiedzieć się, jak skonfigurować winedbg lub inny debuger

Dla tych, którzy wiedzą, o co chodzi: plik mówi SETUP.EXE: plik wykonywalny MS-DOS, NE dla MS Windows 3.x, więc musimy zejść do rzadkich programów 16-bitowych.

Encarta 97 instaluje się i działa bez zarzutu w Wine 4.13 na Linuxie… ale w 4.13 na Windows 10 nadal nie działa:

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

Oczywiście, on generuje różne komunikaty o błędach przy kilku uruchomieniach…

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster