Как запускаются Windows программы на Linux системах
На операционной системе Windows существует довольно много уникального программного обеспечения, которого нет на системах Linux. И часто возникают ситуации когда необходимо этот софт запустить. Иногда он необходим для работы, иногда вы просто привыкли к конкретной программе и не хотите переходить на что-то другое. В данной статье мы рассмотрим основные варианты решения таких ситуаций. Я не буду сильно углубляться в каждый отдельный пункт, а лишь поверхностно его опишу и опишу принципы реализации. Статья рассчитана на пользователей, которые только начали использовать линукс или вообще ещё сидят на Windows, но посматривают в сторону Linux. Она должна помочь вам сориентироваться и в дальнейшем возможно уже самим найти конкретное решение вашей задачи.
Найти нативный аналог нужной программы для линукс.
Для начала давайте попробуем объяснить слово «нативный». Википедия даёт нам следующее определение «Нативные приложения — это прикладные программы, которые были разработаны для использования на определённой платформе или на определённом устройстве». Для примера возьмём игру, например DOTA2 (не то чтобы я фанат этой игры, просто она есть как нативно для Windows, так и нативно для Linux). Итак, есть 1 версия игры написанная и скомпилированная специально для Windows, она учитывает все особенности данной платформы и использует системные вызовы именно этой операционной системы, её формат исполняемых файлов и библиотек (.dll) — она нативна для Windows. И есть вторая версия игры, написанная для Linux, то есть с учётом архитектуры именно этой операционной системы, в игре вызываются библиотеки Linux и используется формат файлов и библиотек (.so) — эта версия нативна для Linux. Естественно версия игры под одну ОС не запустится на другой и наоборот.
Как и игра приведённая выше, многие программы имеют нативные версии под Linux. Например, Double Commander — файловый менеджер и довольно неплохой аналог Total Commander, имеет версию как для Windows, так и для систем Linux; или графический редактор GIMP, также имеет версии под разные ОС (под Мac ОС, кстати тоже) и таких программ довольно много. Именно по этой причине при поиске необходимой программы которой вы пользовались на Windows первым делом нужно поискать нативную версию под Linux или аналог схожий по функционалу. Как его искать? Вбиваете в гугл название программы добавляете слово «Linux» и ищите информацию.
Использовать WINE
Помните я писал выше «Естественно версия игры под одну ОС не запустится на другой и наоборот»? Это не совсем так. Точнее это конечно именно так: если попытаться напрямую запустить программу без каких либо манипуляций, то она не запустится, но вот если сделать магию, то программа нативно написанная для Windows запустится на операционной системе Linux. И магию эту делает программка под названием «WINE».
Что же такое WINE? Обратимся опять же к википедии «WINE - свободное программное обеспечение, позволяющее пользователям UNIX-подобных операционных систем, например GNU/Linux, Apple macOS и других UNIX-подобных с поддержкой архитектур CPU x86, AMD64 (и других архитектур CPU при наличии совместимости с ними запускаемых приложений) исполнять 16-, 32- и 64- битные приложения, в том числе игры, созданные исключительно для Microsoft Windows». На первый взгляд может показаться что это просто какой то эмулятор, но на деле все не много сложнее. На самом деле даже само название WINE - это рекурсивный акроним и расшифровывается как - Wine Is Not Emulator, WINE - это альтернативная свободная реализация системных вызовов Windows (Windows API) через системные вызовы линукс. Благодаря чему программы будут запускаться практический как нативные, и смогут использовать ресурсы вашего ПК на 100%. А значит можно вполне полноценно запускать тяжёлые графические программы те же игры, например, не теряя в производительности.
Проект WINE довольно стремительно развивается, и количество приложений, которые можно запустить через него все больше и больше. На основе WINE компанией Valve был создан Proton, благодаря которому вы можете запускать игры в Steam, даже если они не имеют версию под линукс, без каких либо манипуляций. Так же, многие энтузиасты компилируют версии WINE для запуска определённых приложений, например для запуска Photoshop (https://github.com/Gictorbit/photoshopCClinux).
Как именно пользоваться этим мощным инструментом это тема отдельной большой статьи и не одной. В рамках же текущей обзорной, думаю о нем сказано достаточно.
Оболочки или надстройки для WINE
WINE довольно мощный инструмент, но для новичка он непростой и нагруженный в использовании. Вполне логично, что для упрощения и автоматизации некоторых вещей и задач при работе с WINE, были созданы отдельные программы или надстройки, которые в дальнейшем вылились в довольно серьёзные и удобные проекты. Настолько серьёзные, что назвать их просто надстройками даже язык не поворачивается. В качестве примера можно назвать Play On Linux и Lutris они, пожалуй, наиболее значимые (это личное мнение автора, вы вправе с ним не согласиться). Задача их очевидна - упростить запуск приложений написанных для Windows на операционных системах Linux при помощи программы WINE. Они имею графический интерфейс и внушительную базу приложений для каждого из которых есть свои предустановки и настройки WINE и окружения. Если вы только начинаете осваивать Linux системы, то думаю вам стоит начать именно с оболочек и уже потом пробовать настраивать WINE самому, вручную. Вполне вероятно, что вам вообще не нужно будет углубляться в сам WINE и для решения ваших задач вам хватит использования надстроек. Но все же для более глубокого понимая, в дальнейшем, хорошо бы научиться работать с WINE напрямую.
Использовать среды эмуляции и виртуальные машины (Virtual Box)
Если вы хоть раз использовали на Windows виртуальные машины, такие как VirtualBox или HYPER-V или какие-либо другие, то с этим пунктом у вас точно не возникнут вопросы. В целом и общем плане виртуальной машиной или эмулятором называют программный продукт для виртуализации операционной системы внутри другой операционной системы. То есть происходит полная эмуляция оборудования на которое вы устанавливаете полноценную операционную систему внутри вашей операционной системы. И я думаю вы понимаете в чем суть - вы просто устанавливаете полноценную Windows на виртуальную машину внутри вашей Linux системы. И казалось бы вот и все, я могу запустить любую программу Windows и использовать её. Но не все так гладко, как вы уже наверно догадались.
Первая проблема это эмуляция оборудования. Виртуальная видеокарта - это не ваша физическая видеокарта, и может она совсем немного, а значит, например, поиграть вы не сможете, ну или комфортно работать в том же Photoshop у вас то же не получиться. Само собой можно забыть про любую работу с 3D графикой или монтирование видео.
Вторая проблема - то что это всё-таки отдельная операционная система и потреблять ресурсы она будет как полноценная вторая ОС, запущенная параллельно вашей. Кушать много памяти, делить ваш процессор с основной ОС ну и занимать время обращения к жёсткому диску.
Третья проблема - в том что рабочий стол никак не связан с вашим рабочим столом, гостевая операционная система (запущенная на виртуальной машине) запускается в отдельном окне. У вас конечно будет работать общий буфер обмена и даже поддержка drag and drop (перетаскивание объектов мышкой), но сложности с тем что файлы располагаются в разных экосистемах будут постоянно давать о себе знать. Например, нажав в гостевой ОС «открыть файл» в какой-либо программе, вы увидите файлы расположенные на диске гостевой ОС. И что бы увидеть файлы из вашей основной ОС их нужно сначала скопировать в гостевую. Можно, конечно, настроить общие папки и сетевые диски, но файлы все равно нужно будет сначала поместить в эти папки. В общем не всех такое может устраивать.
Не смотря на вышесказанное, есть ситуации когда использование именно виртуальных машин оправдано. По этому полезно знать о них и их возможностях.
Итог
На сегодняшний день ситуация с запуском Windows программ на линукс довольно положительная. Практически на любую программу существует нативный аналог, если же его нет то огромная вероятность того что программа запустится через WINE по клику (иногда, правда, нужно будет немного поколдовать, погуглить). Особенно радует ситуация с играми, если пару лет назад приходись довольно долго возиться, чтобы только запустить любимую игрушку, то сегодня с наличием таких вещей как Proton, PortProton, Lutris и т.д. запуск игр не сулит никаких проблем. Единственное что пока может вызвать проблемы это игры с античитами, но и там в ближайшее время намечаются большие подвижки. Конечно все ещё можно встретиться с моментами когда какую-либо игру или программу запустить невозможно вообще, или она запускается, но использовать её невозможно из-за очень слабой производительности или не полностью работающего функционала. Но, повторюсь, Linux сегодня развивается семимильными шагами и, вполне вероятно, что уже завтра ваша проблема будет решена. И не исключено, что вы просто плохо искали и запустить проблемную программу все-таки можно. =)))
