Есть программа которая не может запуститься на виртуальной машине с линуксом

Обновлено: 06.07.2024

Рано или поздно может понадобиться запустить программы Windows на Linux. Для операционной системы Linux написано огромное количество программ, для решения одной определенной задачи, может быть даже несколько десятков программ. Но такая тенденция наблюдается только для широко распространенных задач, что же касается специализированных программ и игр, то тут ситуация совсем иная.

Программ, для решения узкоспециализированных задач, например, в той же сфере СЕО для Linux попросту нет, а игры начали появляться только последние несколько лет. Были и раньше простенькие игры с открытым исходным кодом, но популярные игры, класса ААА начали появляться только тогда, когда этой платформой заинтересовалась Valve. Но до сих пор ситуация с играми обстоит не так, как хотелось бы. Поэтому и возникает необходимость установки Windows программ в Linux.

Немного теории

Windows программы не могут запускаться просто двойным щелчком по исполняемому файлу. Формат исполняемых файлов Linux очень сильно отличается от Windows. Поэтому для их запуска необходимо использовать специальное программное обеспечение - wine. Название Wine образовано с помощью, почему-то популярного в мире свободного программного обеспечения способа - рекурсивный акроним, и расшифровывается как Wine is not emultor. И это правда, wine не является эмулятором.

Это программная оболочка, которая преобразует системные вызовы Windows программ в вызовы функций операционной системы Linux. Таким образом, wine представляет из себя прослойку между Windows программой и операционной системой Linux вместе с ее ядром и библиотеками.

Чтобы понять как работает Wine, нужно сначала сказать несколько слов о ядре Windows. У Windows, так же как и у Linux есть ядро. Как вы знаете ядро Linux состоит из одного файла и находится в папке boot. Ядро Windows совсем другое, по сути это набор dll библиотек, которые расположены в папке C:\windows\system32. Поэтому нам, чтобы заставить Windows программы работать в Linux достаточно реализовать dll библиотеки, которые нужны программе, так чтобы они вызывали необходимые нам функции из системы linux, что собственно и делает Wine. Но проект развивается очень медленно и разработчики не успевают реализовать все функции из системных библиотек Windows, поэтому работают далеко не все программы, особенно новые.

Популярные программы в Wine запускаются легко, и без дополнительных настроек. Но дело в том, что для решения популярных и востребованных задач в Linux есть достаточно альтернатив, а запускать нам придется специализированные программы и игры, требующие серьезных компонентов, еще не написанных в Wine. Вот тут и всплывает недоработанность этой программы. Но есть выход, его мы и рассмотрим дальше.

Основы использования Wine

Все файлы программ wine, установленные программы, библиотеки, файлы реестра, конфигурационные файлы находятся в домашнем каталоге, а точнее, в

Поскольку для разных программ, понадобится разная архитектура библиотек и нужно будет подменять на оригинальные библиотеки от windows разные файлы была придумана такая возможность, как префиксы.

/.wine это префикс, но мы можем создавать для каждой новой программы свой префикс и она будет работать только с ним. Чтобы задать префикс, с которым нужно работать wine используется переменная окружения WINEPREFIX, например:

Для разных программ может потребоваться различная архитектура системы, wine может запускать и 64 битные программы, но многим для правильной работы нужна архитектура х86.

Чтобы задать архитектуру используйте переменную WINEARCH. Например, для х86:

Также не создавайте папку для нового префикса с помощью mkdir или файлового менеджера, пусть программа сама создаст эту папку при своем первом запуске.


Запуск exe программ в Linux с помощью wine


На странице программы есть версия Wine, с которой она была протестирована, версия тестируемой программы, а также оценка. Оценка может быть Platinum, Gold, Silver или ниже, она зависит от того насколько хорошо программа работает:


Как видите, программа тестировалась с версией wine 5.0 и работала довольно неплохо. К тому же на странице есть ссылка на загрузку программы, так как она бесплатна. Если при запуске программы возникают сложности, то на странице winehq обычно сообщается что надо сделать чтобы программу всё-таки запустить.

Если вам нужно запустить программу, полностью поддерживаемую Wine, например, проводник или notepad, достаточно выполнить:

$ wine /адрес/файла/программы.exe

Например, для программы Notepad++ надо выполнить:

Здесь я использую portable версию, её надо перед этим скачать и распаковать. Как видите, программа полностью работает:

Но как я уже говорил, нам придется запускать мало таких программ, большинство из них будут требовать функциональности, которая ещё не реализован в wine. Тогда нам придется заменить библиотеки Wine, на оригинальные библиотеки Windows.

Конечно, есть оболочки для Wine, которые автоматизируют этот процесс, например, Crossover, PlayOnLinux, Lutris и другие. Но мы рассмотрим ручной вариант.

Для установки компонентов Windows в wine существует специальный инструмент - winetricks. Устанавливать его лучше из сайта программы, так версия будет новее:

Чтобы установить нужный компонент достаточно передать имя этого компонента:

$ winetricks имя_компонента

На её странице сообщается, что программа работает, но для её работы надо установить компонент msxml и urlmon:

winetricks msxml6 urlmon

После установки этих пакетов программа надо добавить ключ в реестр, который описан на странице winehq. После этого установщик запуститься и установит программу.

После установки вы можете её запустить:


Выглядит всё не очень, но зато работает. Инструкции не обязательно искать только на winehq, это могут быть различные форумы, блоги и так далее.

fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub

Осталось понять, что такое richedit, и Microsoft TechNet нам любезно сообщает что это их API и состоит оно из Riched32.dll, это последняя версия, но раньше это была riched20.dll, уже понимаете какие библиотеки нужны?

Их можно установить с помощью winetricks, но это делать необязательно, можно и вручную. Скачайте библиотеки, найти их не составит труда с помощью Google. Только ищите версию для Windows XP.

Копируем библиотеку в наш префикс, в папку system32:

Для 64 битных библиотек используется папка syswow64, а поскольку мы указали архитектуру 32 бит нужно и библиотеки использовать соответствующие. Затем запустите winecfg и на вкладке библиотеки, в поле новое замещение для библиотеки наберите *riched32, затем добавить и *riched20 и опять добавить:


Все, теперь можете пробовать запускать программу. Если программа снова падает с ошибкой, смотрите дальше логи и ищите библиотеки, которых ей не хватает.

Таким образом, вы можете заменить много библиотек Wine. Можно запустить практически любую программу, написанную несколько лет назад и не требующую сверх новых технологий. Достаточно только заменить нужные библиотеки. Вы можете не только использовать winetricks или копировать библиотеки из интернета, но и брать их прямо из Windows. Точно не стоит заменять gdi32.dll, kernel32.dll, и user32.dll - эти библиотеки реализуют функции ядра Windows на самом низком уровне, и если их заменить, это только нарушит работу Wine. Наверное, есть и другие библиотеки, которые нельзя заменять, но это вычисляется только путем экспериментов.

Упрощённая установка exe в Linux

Вариант, который мы рассмотрели выше слишком сложный и не очень то подходит для новичков. Специально для таких ситуаций были придуманы различные программные решения вроде PlayOnLinux или CrossOver. Это оболочки над wine, которые уже знают какие библиотеки надо ставить для той или иной программы. Вы просто выбираете программу, выбираете установщик, а дальше программа сделает всё за вас сама.

Утилита Crossover поддерживает множество программ и работают они довольно неплохо, но единственный минус этой программы в том, что она платная. Программа PlayOnLinux бесплатная, но поддерживает намного меньше программ.

Запуск Windows программ в виртуальной машине

Если ни один из перечисленных выше способов вам не помог, осталось только последнее решение. Оно поможет, при условии, что у вас мощный компьютер. Вы можете установить виртуальную машину VirtualBox, затем установить туда Windows и уже там запускать вашу программу. Можно пойти ещё дальше и сделать из старого компьютера сервер, на котором будет запущена Windows, к которой вы сможете подключаться по VNC или RDP и делать там всё, что угодно. Это не совсем способы запуска exe в Linux, однако это решение будет работать почти всегда, где не будет работать wine.

Выводы

Теперь вы знаете как запустить exe на Linux. Не пренебрегайте инструментами упрощения установки вроде PlayOnLinux. Они очень сильно экономят ваше время, так как имеют уже готовые профили для многих программ. Экспериментируйте и пусть ваши программы работают без ошибок!

Если программа не хочет запускаться из под виртуальной машины

Для запуска (таких программ как WinOLS или Immo decoding) под VMWare, необходимо сделать чтобы запускаемая программа не видела, что она запускается на виртуальном ПК. Сделать это довольно просто - открываем папку где хранятся ваши виртуальные машины, находим там образ нужной ОС (файлик с расширением .vmx), например Windows XP.vmx, открываем его в блокноте и в самый конец добавляем следующие строчки:

isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"

Сохраняемся, грузим виртуальную машину и запускаем программу без жалоб на то что она не может быть запущенна в виртуальной среде.
Честно подсмотрено у игроманов.


P/S ОФФТОПП:
Ищю дамосы на VW PASSAT R36 280 или 300PS, BLV и BWS соответственно; 03H906032C и 03H906032AM

[QUOTE=Захар;1230488]Для запуска (таких программ как WinOLS или Immo decoding) под VMWare, необходимо сделать чтобы запускаемая программа не видела, что она запускается на виртуальном ПК. Сделать это довольно просто - открываем папку где хранятся ваши виртуальные машины, находим там образ нужной ОС (файлик с расширением .vmx), например Windows XP.vmx, открываем его в блокноте и в самый конец добавляем следующие строчки:

Сохраняемся, грузим виртуальную машину и запускаем программу без жалоб на то что она не может быть запущенна в виртуальной среде.
Честно подсмотрено у игроманов.


хм, мучал машину дня 2, толку ноль, даже после ваших манипуляций Галета выдает туже ошибку.Новый точечный рисунок (2).jpgНовый точечный рисунок.jpg Оффтоп

Привет, я начинаю изучать линукс (сейчас на windows 10), скачала Oracle VirtualBox 6.1.22 и ubuntu 18.04.1, но запустить не смогла. После создания виртуальной машины не получается выбрать образ диска, где лежит ubuntu, потому что возникает такая ошибка: Функция аппаратной виртуализации включена для данной машины, но не поддерживается Вашим хостом. Для обеспечения работоспособности машины она должна быть выключена.

Простой 1 комментарий

sergueik

hekkaaa

Привет.
Для решения проблемы стоит начать с самого начала.

1. Для корректной работы виртуализации через hyper-v нужно что бы была Os Win10 Pro. На версии Home данная функция не доступна.

60dd428be5630963504187.jpg

2. Нужно проверить включена ли виртуализация. Для этого достаточно открыть диспетчер задач и посмотреть в разделе ЦП.

2.1. Если виртуализация отключена. Стоит зайти в BIOS вашего компьютера\ноутбука как рекомендовал SagePtr и включить ее.
Обычно это раздел Secure Virtual Machine Mode но на каждой материнской плате и процессоре может быть по разному.

60dd4403bc13e419089658.jpg

3. Далее мы идем включать виртуализацию в самой OS Windows: Для этого нужно зайти Компоненты Windows для этого идем Панель управления -> Удаление программы(Программы и компоненты) -> Включиние и отключение компонентов Windows.

60dd44618eae1740968337.jpg

Здесь нас интересует пункт Песочница Windows и Hyper-V (Мне было достаточно Hyper-V)

4. Следом идет рестарт машины.

Если Вы собираетесь в дальнейшем использовать Docker из под OS Windows или ставите Ubunty через Docker ( да так можно о ждет меньше памяти, при условии если Вам нужна только консоль) то нужно включить разделы Платформы виртуальных машин и Подсистема Windows для Linux


Не запускается большинство программ
Всем доброго времени суток. Вчера-сегодня столкнулся с такой проблемой. Все началось с того, что.

Не запускается большинство программ
Всем привет! Ноутбук Sony vpcel. Windows 7. Сначала все работало корректно, но со временем.

Большинство exe файлов не работают
Собственно сабж,большинство exe файлов не работают С появлением проблемы работал IE идеально.

Не могу установить большинство программ
Здравствуйте! Что-то произошло с ПК, не могу установить большинство программ и новые которые.

Так ведь проблема не в осях, а в самой сути виртуальной машины. Помню, тоже игрался в гостевыми системами, хотел софтину поставить, ну и она мне после установки выдает "Вы пытаетесь запустить %software_name% на виртуальной машине под управлением VMWare Workstation. К сожалению, большинство функций программы будет отключено в связи с отсутствием поддержки виртуальных машин". Ну, эта хоть сообщает пользователю. А ваша просто сливает все на фреймворк и на ось в целом.
Попробую дать рекомендацию. Если Вам нужно запустить программу так, чтобы она не повлияла на хост-систему, воспользуйтесь песочницей - Sandboxie. У нее проблем с запуском не возникнет. Но если же вы принципиально не хотите ставить ваш софт на хост-ось, тогда пробуйте другие виртуалки. Хотя бы мелкомягкую Virtual PC. я вообще отдовал все под управление "Авто обновлениям" долго, но зато всё точно поставит и проблем с запуском уже не будет, на счет нетфрама я не понял ты его сразу 4.5 ставил или как, извини если вопрос может оказаться глупый, но ты раньше ручками ставил нетфрам?
и ещё зачем руская OS поставь енглиш, она как правило без проблем обновляется и сама все ставит, а русские почемуто тупят в этом плане. я всегда ставлю оси En
по поводу того что это из за вари, возможно да, может быть не так настроил? раньше таких ошибок не было
нетфрам я закачал с оф сайта как это видно со скриншота до 3 версии ставиться выше нет, но с этими версиями ничего не меняется. на это есть весомые причины, 2 гига это жуть, не потяну на своей варе. так потом эта тварь потребовала перевод гугл:"BlueStacks в настоящее время не распознает графика карт.возможно драйвера вашей видеокарты, возможно, потребуется обновить. пожалуйста, обновите их и попробуйте установить снова."
даже если поставиш фрамеворк, сомневаюсь что заработает. Ark с песочницей проблема не решилась(Sandboxie)
EvilLe0 - мне жаль
есть ещё идеи?
может какой то особый образ хр посоветуете закачать? только не выше 2г желательно. причем тут образ, я тебе про прогу которая у тя ругалась на нетфрамеворк, если NET.F3.0не подошол то обновления до 3.5 для BlueStacks подходит, но сам установшик этой проги требует 2 гига оперативки и на отрез отказывается работать с видеокартой вмвари под предлогом что типо вообще не видет.

Произвольно закрываются большинство программ!
Произвольно закрываются большинство программ, спустя 3-10 сек после запуска. Не закрывались только.

Не запускается большинство программ / Windows 7
Всем привет! Ноутбук Sony vpcel. Windows 7. Сначала все работало корректно, но со временем.

Подхватил вирус. Блокирует большинство программ.
Доброго времени суток, в общем проблемма в следущем..еще до Нового года скачал установочник.

Не запускается большинство программ. Ошибки с dll файлами
Доброго времени суток. В общем проблема такая, как-то после включения компьютера не заработал.

Блокируются большинство программ, винда 7 (64), AVZ не установлен
Винда 7 (64), антивирус Майкрасофт секьюрити. Искал в интернете драйвера - скачал.

Читайте также: