Запуск 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
Конечно, он выдаёт разные сообщения об ошибках в нескольких запусках…
ссылка на оригинал статьи https://habr.com/ru/post/463375/
Добавить комментарий