1. Главная страница » Компьютеры

Linux с поддержкой windows приложений

Автор: | 16.12.2019

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

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

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

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

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

Читайте также:  Fallout 3 black isle mod

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

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

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

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

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

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

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

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

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

Установка Windows программ в Wine

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

Но как я уже говорил, нам придется запускать мало таких программ, большинство из них будут требовать функционала, который еще не реализован в wine. Тогда нам придется заменить библиотеки Wine, на оригинальные библиотеки Windows. Конечно, есть оболочки для Wine, которые автоматизируют этот процесс, например, Crossover, PlayOnLinux, WineWizard и тд. Но мы рассмотрим ручной вариант.

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

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
$ chmod +x winetricks

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

С установкой компонентов более-менее понятно, но как узнать какие компоненты нужны? Скорее всего, вашу программу уже пытались устанавливать и другие пользователи нашли решение проблемы. Поэтому воспользуйтесь поиском Google для того, чтобы найти способы установки программы. Также очень полезным будет сайт appdb.winehq.org. На нем собрана база данных всех поддерживаемых в Wine приложений, там есть инструкции по установке, описываются возможные проблемы и дается общая оценка работы программы, правда все на английском.

Давайте рассмотрим пример. Наберите в поиске по appdb Advego Plagiatus, напомню, что это программа для проверки уникальности текстов, часто используемая копирайтерами:

Она сразу же была найдена в базе данных:

На странице программы, мы видим кроме скниншота и оценки работы, желтый значит золото, очень хорошо, и инструкции по ее установке, в нашем случае нужен набор библиотек riched30, который можно установить командой:

После установки этого пакета программа запуститься и будет работать.

Но остается вопрос, что же делать, если инструкций нет, информации минимум, а нужно чтобы программа работала. Мы можем анализировать вывод Wine при запуске программы. Причем нас будут интересовать не все сообщения из лога программы, а только последние, именно то что вызвало ошибку.

Рассмотрим на примере той же Advego Plagiatus. Сначала создадим новый префикс, чтобы не испортить то что уже было установлено:

Архитектуру нам менять не нужно, но если хотите, можете явно указать, что нужно использовать win64:

Далее запускаем программу и последнее что мы увидим в логе перед дампом переменных ядра это:

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.

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

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

Все, теперь можете пробовать запускать программу:

/advego/drive_c/Program Files (x86)/Advego Plagiatus/plagiatus.exe

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

Если вы считаете, что GIMP не ровня Photoshop, и не можете жить без офиса от Microsoft.

1. Wine

Название Wine расшифровывается как Wine Is Not an Emulator. Это своего рода прослойка между приложениями Windows и системой Linux. Он позволяет устанавливать и запускать многие популярные Windows-программы и работать с ними так, как будто это родные приложения Linux.

Чтобы установить Wine, воспользуйтесь соответствующей командой.

1. Ubuntu, Debian, Mint:

sudo dpkg —add-architecture i386

wget -nc https://dl.winehq.org/wine-builds/Release.key

sudo apt-key add Release.key

sudo add-apt-repository "deb https://dl.winehq.org/wine-builds/ubuntu/ artful main"

sudo apt-get update

sudo apt-get install —install-recommends winehq-stable

sudo dnf install winehq-stable

sudo zypper install wine

sudo pacman -S wine

Когда Wine установлен, откройте его через ваше меню приложений или с помощью команды winecfg . При первом запуске Wine может попросить установить некоторые дополнительные пакеты — позвольте ему это сделать. После этого все Windows-программы формата EXE ассоциируются в системе с Wine.

Теперь скачайте установщик нужного вам приложения Windows, найдите папку с ним в вашем файловом менеджере и откройте файл. Либо введите команду wine путь_к_приложению .

Windows-приложение запустится и будет работать так же, как и всегда. Если вы открыли установочный файл, начнётся установка приложения — как в Windows. Если программа не требует установки, вы сможете начать работать с ней немедленно.

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

2. Winetricks

Wine — неплохой инструмент, однако интерфейс у него оставляет желать лучшего. Если вы намучились с этой программой, но так и не добились результата, попробуйте Winetricks. У неё приятный графический интерфейс для установки и запуска Windows-приложений, в котором куда проще разобраться новичку.

Установить Winetricks можно так:

1. Ubuntu, Debian, Mint:

sudo apt-get install winetricks

sudo dnf install winetricks

sudo zypper install winetricks

sudo pacman -S winetricks

Winetricks позволяет установить различные версии Microsoft Office и Photoshop, плеер foobar2000 и множество других программ. Поддерживаются и такие популярные игры, как Call of Duty, Call of Duty 4, Call of Duty 5, Biohazard и Grand Theft Auto: Vice City. Некоторые программы загружаются автоматически, для других будет предложено вставить установочный носитель. И, естественно, вы можете открывать собственноручно скачанные файлы формата EXE.

3. PlayOnLinux

PlayOnLinux — ещё один удобный инструмент для запуска Windows-приложений в Linux. Как и Winetricks, он обладает простым графическим интерфейсом. Но, в отличие от него, PlayOnLinux позволяет вам выбирать конкретную версию Wine для того или иного приложения. Это полезно, если какая-то из нужных вам программ некорректно работает с новыми версиями Wine. В целом PlayOnLinux выглядит куда симпатичнее и практичнее, чем Winetricks.

Чтобы установить PlayOnLinux, выполните в терминале одну из следующих команд:

1. Ubuntu, Debian, Mint:

sudo apt-get install playonlinux

sudo dnf install playonlinux

sudo zypper install playonlinux

sudo pacman -S playonlinux

В меню установки PlayOnLinux можно найти множество предварительно сконфигурированных приложений и игр, которые вы можете загрузить и установить парой щелчков. Кроме того, PlayOnLinux можно скармливать собственные EXE-установщики. Приложение заботливо выберет за вас версию Wine и создаст значок установленной программы на рабочем столе.

4. Crossover

Изредка бесплатные PlayOnLinux и Winetricks не справляются с установкой какого-нибудь особенно привередливого приложения. В таком случае вам может помочь Crossover. Эта программа очень проста в использовании. Вам достаточно указать, какое приложение вы хотите установить, и подсунуть Crossover установочный файл. Всё остальное будет сделано за вас.

Лицензия Crossover на год стоит 39,95 доллара, но у программы есть и бесплатная пробная версия. Рекомендуется сначала установить необходимое вам приложение в ней, чтобы убедиться, что оно работает корректно.

5. VirtualBox

Если ваше приложение упорно отказывается запускаться в перечисленных выше программах, можно пойти на решительные меры и установить его в виртуальной машине. Учтите, что она отнимает гораздо больше системных ресурсов, поэтому использовать её стоит в крайних случаях.

Для запуска приложения в виртуалке вам понадобится установочный образ Windows в формате ISO. Загрузите и установите VirtualBox, создайте в нём виртуальную машину, укажите ей ISO с Windows, а затем просто установите систему как обычно.

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

Предисловие

Привет, Хабр! Я хочу поделиться с вами идеей о создании Linux-дистрибутива с полной поддержкой Windows приложений. Все началось около 4-х лет назад, когда я в первый раз установил Linux. Тогда меня очень заинтересовала эта ОС, но поначалу все было очень непривычно, так как мне не хватало некоторых приложений из Windows, к которым я сильно привык. В итоге приходилось на другом разделе держать установленную Windows и это сильно раздражало. По мере изучения Linux я узнал о такой программе как Wine, а позже о VirtualBox. Если быть честным, то Wine не особо доставлял, так как некоторые приложения на нем заводились с пол тыка, а другие занимали уйму времени на поиски информации и ковыряния Wine’а. VirtualBox в то время сильно помог, так как дал мне почти полную интеграцию Windows с Linux. Сейчас я полностью перешёл на Linux и почти не пользуюсь Windows на VirtualBox’е, но у меня осталась одна идея, которую хотелось бы реализовать.

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

Как и что будем интегрировать?

Интерфейс

Основой интеграции будет VirtualBox в бесшовном режиме. Так как для Linux’а все Windows-окна будут одним большим окном, то с ним ничего не остаётся сделать, как закрепить его поверх всех окон на отдельном рабочем столе Linux’а и запретить вывод Linux приложений на этот рабочий стол. Таким образом все Windows приложения будут появляться на отдельном рабочем столе Linux, что на мой взгляд очень удобно.

Файловая система

Ее можно просто примонтировать к Linux. Например:

/virtualization
/virtualization/Windows/
/virtualization/Documents & Settings/
/virtualization/Program Files/

Вызов приложений

Запуск приложений планируется делать через меню Linux’а. Огранизовать это будет достаточно сложно, но реалистично. У VirtualBox’а есть консольная утилита, которая может запускать приложения в гостевой ОС из хоста. На этом и планируется основать вызов приложений из меню Linux.

Установка программ

По сути, установка программ не будет проблемой, но у меня есть более интересная идея. Можно использовать пакетную систему Linux для установки Windows приложений. Таким образом мы вся сила пакетного менеджера будет использована в Windows. Если делать репозитории с программами для Windows, то отпадет проблема вирусов и захламления системы.

Меню приложений

Если использовать пакеты в Windows-софтом, то при установке пакета просто копировать ярлык для запуска программы в гостевой системе. Эта проблема отпадает сама по себе.

Остальное

Многое уже реализовано VirtualBox’ом, так что интернет будет работать сразу, usb — тоже и еще много чего. На стадии идеи тяжело все продумать наперед. Так что пока остановлюсь.

Что мы в итоге получим?

Мы получим Linux c полной поддержкой Windows приложений. Почему почти? Потому, что единственное, что не будет работать — это мощные приложения, использующие DirectX, но над этим ведётся работа. Все остальное зависит от мощности компьютера. Так же можно будет завести почти любое USB-устройство, которое не хотело работать с Linux. Тем самым сводя неудобство пользования Linux от нехватки привычного софта к нулю. То есть мы берём безопасность и функциональность Linux и мощь софта от Windows.

И кому это нужно?

Во первых людям, которым нравится Linux, но бесит отсутствие привычного софта. Или тем, кому не хватает 1-го или 2-ух профессиональных приложений, из-за которых они не могут пользоваться только Linux. Или тех, кто хочет изучить Linux, но не переходить резко на нативные приложения. Будет в помощь тем, кто хочет перейти на Linux.

В чем проблема?

Проблем много. Главная — мы по прежнему будем использовать Windows. Так же я не знаю, что будет с лицензиями. Можно ли будет обрезать купленный нами Windows так, как нам хочется? Так же мы теряем кучу ресурсов компьютера. Без процессора с аппаратной виртуализацией это будет один большой тормоз и ещё будет нужно много оперативной памяти. Для комфортной работы 3-4 Гб.

Что дальше?

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *