Автор Тема: Запуск Windows/x86 приложений на OPI PC  (Прочитано 5608 раз)

Оффлайн ua3nbw

Запуск Windows/x86 приложений на OPI PC
« : Ноябрь 05, 2016, 08:35:44 pm »
использовал OPI PC с имиджем Armbian_5.20_Orangepipc_Debian_jessie_3.4.112_desktop.img
QEMU+Wine

команды от user:root

предупреждение:
•Никогда не запускайте программы с подозрительных сайтов
•Никогда не используйте root пользователя для запуска приложений!

Обновление системы:
apt-get update && apt-get upgrade -y

Проверка ядра системы
modprobe binfmt_misc && [ -e /proc/sys/fs/binfmt_misc/status ] && echo works
если вывод "works", ставим QEMU
QEMU - виртуальная машина. В QEMU можно поставить почти любую ОС - любой Windows (начиная с Windows95 до WindowsXP включительно)

apt-get install qemu-user-static -y

debootstrap установит базовую систему Debian i386 в подкаталог установленной системы.

apt-get install debootstrap
debootstrap --arch=i386 --foreign jessie chroot-jessie-i386 http://ftp.de.debian.org/debian
echo "deb http://ftp.de.debian.org/debian/ jessie main" > /root/chroot-jessie-i386/etc/apt/sources.list
dpkg --add-architecture i386
sudo apt-get update

Wine — Wine Is Not a (CPU) Emulator это прослойка, которая транслирует Win32API в POSIX API, то есть свободная реализация Windows API, которая позволяет запускать программы Windows, переводя вызовы программы под Windows в вызовы Linux

apt-get install wine:i386 -y
mv  /usr/lib/i386-linux-gnu/wine/bin/wine-preloader  /usr/lib/i386-linux-gnu/wine/bin/wine-preloader.renamed

библиотеки I:386
apt-get install libsdl-mixer1.2:i386 libcurl3-gnutls:i386 libgl1-mesa-dev:i386 libode1:i386 -y

создаем префикс:
при старте системы эту строку надо добавить в автозагрузку например в файл rc.local
echo ':i386:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/usr/bin/qemu-i386-static:' > /proc/sys/fs/binfmt_misc/register

WINEARCH=win32 WINEPREFIX=~/.wine winecfg

Всё. Отдельный префикс создан. Там хранятся различные конфигурации реестра и сами программы.
Установку программы также производим через консоль.

для проверки запускаем windows notepad++ 

mkdir /root/notepadpp
cd notepadpp
wget http://download.tuxfamily.org/notepadplus/archive/6.7.5/npp.6.7.5.bin.zip
unzip npp.6.7.5.bin.zip
запуск notepad++.exe в терминале:

sudo qemu-i386-static /usr/lib/i386-linux-gnu/wine/bin/wine /root/notepadpp/notepad++.exe

Документация пользователя эмулятора процессора QEMU http://jack.kiev.ua/docs/qemu-doc-ru.html
Wine ARM support https://wiki.winehq.org/ARM
Run x86 code on OPI http://wiki.orange314.com/Run_x86_code_on_OPI
I got Wine/x86 1.5.11 to run on Linux/ARM with qemu! https://forum.winehq.org/viewtopic.php?f=8&t=17701
Старые утилиты для Windows http://www.oldapps.com/index.php
« Последнее редактирование: Ноябрь 05, 2016, 09:46:36 pm от ua3nbw »

Оффлайн VeterMir

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #1 : Ноябрь 06, 2016, 06:09:17 pm »
Я верно понимаю, что запускать win приложение мы будем, эмулируя команды х86 через qemu, запуская дебиан в виртуальной машине, навешивая на него вино и оттуда работая?
« Последнее редактирование: Ноябрь 06, 2016, 06:10:53 pm от VeterMir »
Ко мне лучше на "ты". Я ещё слишком молод =)

Оффлайн VeterMir

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #2 : Ноябрь 06, 2016, 08:53:26 pm »
На этапе
sudo apt-get update
Получаю
W: Failed to fetch http://apt.armbian.com/dists/jessie/InRelease  Unable to find expected entry 'main/binary-i386/Packages' in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.
И при выполнении
apt-get install wine:i386
ругается
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 wine:i386 : Depends: wine64:i386 (>= 1.6.2-20) but it is not installable or
                      wine32:i386 (>= 1.6.2-20)
E: Unable to correct problems, you have held broken packages.

В общем-то прошу помощи, ибо прикрутить сюда одно приложение хотелось бы. Его аналога под линухи не существует, к сожалению.
« Последнее редактирование: Ноябрь 06, 2016, 09:06:21 pm от VeterMir »
Ко мне лучше на "ты". Я ещё слишком молод =)

Оффлайн ua3nbw

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #3 : Ноябрь 06, 2016, 10:26:51 pm »
На этапе
sudo apt-get update
Получаю
W: Failed to fetch http://apt.armbian.com/dists/jessie/InRelease  Unable to find expected entry 'main/binary-i386/Packages' in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.


не обращайте внимания.

Цитировать

И при выполнении
apt-get install wine:i386
ругается

попробуйте
apt-get install -f
apt-get purge wine*

Как вариант можно вместо apt-get попробовать aptitude. Он сам подскажет варианты решения проблемы.
aptitude install wine:i386
Если там ответить 'n', то будет предложено другое решение
но проще переустановить систему

Оффлайн VeterMir

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #4 : Ноябрь 06, 2016, 10:51:19 pm »
Я немного продвинулся
В строке echo "deb http://ftp.de.debian.org/debian/ jessie main" > /root/chroot-jessie-i386/etc/apt/sources.list
Заменил конечный пункт назначения на /etc/apt/sources.list, т.е. репозиторий прикрутил к своей машине.
Вино стартануло, notepad запустился.
Сижу прикручиваю свое приложение, mt4. Сейчас копирую с машины под виндой в установленном виде, вино ставить не хочет его, ругается.
Ко мне лучше на "ты". Я ещё слишком молод =)

Оффлайн VeterMir

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #5 : Ноябрь 06, 2016, 11:28:24 pm »
В общем.
Приложение не стартует, ругается вот так:
err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0)
fixme:mountmgr:harddisk_ioctl returning zero-filled buffer for IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d1400 (device=2d access=0 func=500 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 2d0c10 (device=2d access=0 func=304 method=0)
fixme:thread:GetThreadPreferredUILanguages 56, 0x32f544, 0x32f554 0x32f548
fixme:module:load_library unsupported flag(s) used (flags: 0x00000060)

« Последнее редактирование: Ноябрь 06, 2016, 11:33:42 pm от VeterMir »
Ко мне лучше на "ты". Я ещё слишком молод =)

Оффлайн ua3nbw

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #6 : Ноябрь 07, 2016, 05:41:12 pm »
MT4 на ARM, c помощью winetricks мне удавалось запускать на этой связке: Linux orangepipc 3.4.112-sun8i + x2go + qemu-i386 version 2.5.1 + wine-1.6.2
Метатрейдер работал только для осуществления самих сделок. Даже на полноценном сервере юзать MT в Wine - бред. Если только побаловаться.

Оффлайн VeterMir

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #7 : Ноябрь 07, 2016, 06:14:31 pm »
MT4 на ARM, c помощью winetricks мне удавалось запускать на этой связке: Linux orangepipc 3.4.112-sun8i + x2go + qemu-i386 version 2.5.1 + wine-1.6.2
Метатрейдер работал только для осуществления самих сделок. Даже на полноценном сервере юзать MT в Wine - бред. Если только побаловаться.
У меня там висят совы, ведущие сделки (б/у, трейл).
Почитал отзывы, что вполне реально. Думал, нагрузить заодно маршрутизатор данной функцией =)
Ко мне лучше на "ты". Я ещё слишком молод =)

Оффлайн Nik_SV

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #8 : Февраль 15, 2018, 11:38:23 pm »
debootstrap установит базовую систему Debian i386 в подкаталог установленной системы.

библиотеки I:386
apt-get install libsdl-mixer1.2:i386 libcurl3-gnutls:i386 libgl1-mesa-dev:i386 libode1:i386 -y

sudo qemu-i386-static /usr/lib/i386-linux-gnu/wine/bin/wine /root/notepadpp/notepad++.exe

Специально зарегистрировался, чтобы задать здесь Вам вопрос.
Следуя Вашим инструкциям, тот же Notepad у меня запустился. Но некая суть в проделанных для этого действиях, от меня ускользнула. Был бы очень благодарен, если бы Вы уделили немного своего времени для пояснения.
В цитировании я выделил ключевые моменты, где я упустил для себя логику действий:
  • debootstrap устанавливает i386 систему в /root/chroot-jessie-i386/. Но в chroot-систему мы не входим?
  • в таком случае, библиотеки I:386 устанавливаются в arm-систему? Нет?
  • каким же образом тогда Notepad, запущенный через qemu+wine в arm-системе, использует систему i386?
Ваш пост оказался для меня настоящей находкой для общего понимания настройки и запуска win-приложений на arm-устройстве, но, как видите, некоторые вопросы остались.
Спасибо за пост.

Оффлайн ua3nbw

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #9 : Февраль 16, 2018, 12:09:17 pm »
В цитировании я выделил ключевые моменты, где я упустил для себя логику действий:
  • debootstrap устанавливает i386 систему в /root/chroot-jessie-i386/. Но в chroot-систему мы не входим?
  • в таком случае, библиотеки I:386 устанавливаются в arm-систему? Нет?
  • каким же образом тогда Notepad, запущенный через qemu+wine в arm-системе, использует систему i386?
Да, chroot не используется, софт и библиотеки I:386 устанавливается в arm-систему /usr/lib/i386-linux-gnu
qemu-user-static позволяет запускать бинарные файлы, скомпилированные для одного процессора, используя процессор другой архитектуры
а wine:i386  эмулирует команды х86

Оффлайн Nik_SV

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #10 : Февраль 16, 2018, 12:26:09 pm »
Спасибо за ответ. Вы подтвердили приобретенные мною знания. Но не ответили на главный вопрос. Для чего в  проделанных выше действиях,  устанавливается базовая система i386  в /root/chroot-jessie-i386/ ? Каким образом она используется qemu-user-static и wine? И что будет, если пропустить блок действий "debootstrap"?

Оффлайн ua3nbw

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #11 : Февраль 16, 2018, 02:21:22 pm »
Спасибо за ответ. Вы подтвердили приобретенные мною знания. Но не ответили на главный вопрос. Для чего в  проделанных выше действиях,  устанавливается базовая система i386  в /root/chroot-jessie-i386/ ? Каким образом она используется qemu-user-static и wine? И что будет, если пропустить блок действий "debootstrap"?

давно это было, использовал наводку с этого поста https://forum.winehq.org/viewtopic.php?p=84325#p84325
там chroot используют, у меня заработало без чрута, а без блока действий "debootstrap" вроде не заводилось,
причину уже не помню.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 474
  • Лайков: 157
  • Карма: +23/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #12 : Февраль 16, 2018, 07:52:26 pm »
Wine позволяет работать виндовс-приложениям (а они i386) в среде линукс-i386.
Для этого нужен debian-jessie-i386 и библиотеки i386.
А чтоб это работало на линукс-АРМ используется qemu-i386 создающий виртуальную i386-машину, в которой и крутится связка из i386-ых дебиана-вина-виндового_блокнота.

Оффлайн Nik_SV

Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #13 : Февраль 16, 2018, 08:15:21 pm »
AlDemin, именно так я и предполагал. Хотелось услышать подтверждение. Не поделитесь информацией, как именно qemu определяет/находит в системе дистрибутив с гостевой архитектурой? Ведь никаких прямых указаний мы для этого не даем. Можно, конечно, поэкспериментировать самомоу, установив distr:i386, к примеру, в домашний каталог пользователя, но вдруг, есть готовый ответ.
Спасибо.

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 474
  • Лайков: 157
  • Карма: +23/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: Запуск Windows/x86 приложений на OPI PC
« Ответ #14 : Февраль 19, 2018, 09:11:03 am »
У  ua3nbw в chroot загружена база i386 системы, которая у него фактически не используется. Wine-386, и все i386 библиотеки для него установлены в дерево основной системы, поэтому qemu работает без chroot-а и ему ничего не нужно искать.