
Если вы работаете с Linux и иногда вам нужно запустить приложение, которое существует только для Windows, легко почувствовать себя в тупике. WinBoat предлагает другой вариант : вместо слоя совместимости он запускает реальный экземпляр Windows и органично интегрирует его в ваш рабочий стол.
Идея проста и одновременно мощна: создайте реальную среду Windows с помощью Docker и KVM и отображайте её окна в вашей сессии Linux, используя FreeRDP, как если бы они были нативными. Больше никаких проблем со странными зависимостями или непредсказуемыми патчами; если программа работает в Windows, она должна работать и здесь, за исключением сценариев, требующих мощного графического ускорения или мер защиты от читерства на уровне ядра.
Что такое WinBoat и чем он интересен?
WinBoat — это проект, который, в соответствии со своим духом Windows для Penguins, стремится обеспечить бесперебойную работу приложений Windows в вашей системе Linux с минимальными неудобствами. Вместо трансляции API он использует виртуализацию с помощью KVM и контейнеров Docker для инкапсуляции среды Windows, которая затем представляется в виде независимых окон внутри вашей системы.
По сравнению с предыдущими подходами, такими как WinApps , ключевое отличие заключается в пользовательском интерфейсе. В WinApps основная часть настройки ложится на вас: множество ручных настроек , простой графический интерфейс пользователя, несколько виджетов на панели задач и несколько разбросанных команд консоли. WinBoat, с другой стороны, берет на себя основную работу после выполнения определенных предварительных условий, отображает необходимую информацию в отполированном интерфейсе и предлагает более полный опыт без необходимости возиться с файлами конфигурации или запоминать последовательность команд.
Если вы задаетесь вопросом, почему бы не использовать Wine или CrossOver, ответ кроется в исключениях. Некоторые приложения работают некорректно или просто не запускаются с помощью Wine . Именно поэтому был создан WinBoat: чтобы заполнить эти пробелы и, более того, предоставить вам полноценный рабочий стол Windows, когда это необходимо. В реальных тестах в качестве примеров приводятся Affinity Photo, Paint Tool SAI v1.0, пакет Adobe, AeroChat, Acrobat и, конечно же, Office; подтверждено даже, что Office 365 работает.
Как работает WinBoat: виртуализация с интеграцией окон
Внутри WinBoat работает виртуальная машина Windows, использующая Docker в качестве оркестратора и KVM в качестве технологии аппаратной виртуализации . Окна отображаются в Linux через FreeRDP, поэтому вы можете использовать их как любые другие системные приложения, перетаскивая их между рабочими столами, закрепляя на панели задач и переключаясь между ними с помощью Alt+Tab.
Главное достоинство этого изобретения — удобство использования: элегантный интерфейс , автоматизированные процессы установки и возможность запуска полноценного рабочего стола Windows при необходимости. В противном случае вы можете открыть только необходимые приложения и интегрировать их без проблем, как если бы они были встроенными, обеспечивая единый внешний вид и функциональность в рамках вашей сессии.
Рекомендуемые функции
- Аккуратный интерфейс с визуальной интеграцией, благодаря которой окна Windows выглядят так, как будто они принадлежат самому Linux.
- Автоматизированная установка: Вы выбираете свои предпочтения и ресурсы, а система берет на себя приготовление пищи.
- Запускайте практически любые приложения работающий в Windows, представленный в виде окон системного уровня на рабочем столе.
- Полный рабочий стол Windows доступна тогда, когда вам это необходимо, а также обеспечивает комплексный запуск отдельных приложений.
- Интеграция файлов: Монтирует ваш домашний каталог в Windows для прямого обмена документами.
- полезные дополнения В разработке и уже реализованы: сквозная передача смарт-карт, мониторинг ресурсов и многое другое.
Системные требования
Прежде чем начать, убедитесь, что ваше оборудование соответствует этим минимальным требованиям; в противном случае у вас возникнут проблемы с самого начала. Тщательно проверьте каждый пункт , чтобы избежать неожиданностей.
- Оперативная память: не менее 4 ГБ.
- ЦП: минимум 2 нити.
- хранение: 32 ГБ свободно в /var.
- виртуализация: KVM включен в BIOS или UEFI.
- Docker: требуется для контейнеризации.
- Docker Compose v2: необходимо для совместимости с файлами docker-compose.yml.
- Группа Докеров: добавьте своего пользователя в группу Docker.
- БесплатноRDP: Версия 3.xx с поддержкой звука.
- Модули ядра: загружает iptables и iptable_nat.
Помимо требований к программному обеспечению, вам следует убедиться, что KVM действительно работает в вашем дистрибутиве. Отключение KVM в BIOS или блокировка ядром не позволит загрузить ничего, независимо от того, насколько хорошо работает всё остальное.
Загрузка и установка: доступные варианты
Вы можете загрузить сборки для Linux из раздела релизов проекта. В настоящее время доступны два варианта, которые охватывают большинство случаев и довольно просты в освоении. Выберите тот, который лучше всего подходит для вашего дистрибутива и вашего рабочего процесса.
- AppImage: портативный формат, работающий на большинстве дистрибутивов без сложной установки.
- Распакованный: распакованные файлы; просто запустите двоичный файл в linux-unpacked/winboat.
Обратите внимание на несовместимости, отмеченные разработчиками. В настоящее время отсутствует поддержка Podman , Docker Desktop, дистрибутивов, эмулирующих Docker с использованием сокета Podman, или конфигураций контейнеров без прав root. Если вы используете какую-либо из этих сред, вам придётся дождаться будущих версий.
Самый большой признанный недостаток заключается в том, что вам придётся вручную установить несколько дополнительных компонентов, прежде чем вы сможете в полной мере насладиться всеми возможностями: Docker, Compose v2, FreeRDP 3 с аудио, модули iptables и членство в группе docker. После преодоления этого препятствия всё остальное довольно хорошо организовано.
Скомпилировать и запустить из исходного кода
Если вы предпочитаете собирать приложение на своем компьютере, процесс будет простым, если у вас установлены необходимые зависимости. Перед началом работы вам понадобятся установленные NodeJS и Go .
- Клонировать репозиторий:
git clone https://github.com/TibixDev/WinBoat - Установка зависимостей:
npm i - Скомпилируйте приложение и гостевой сервер:
npm run build:linux-gs - Полученные двоичные файлы отображаются в
dist, с AppImage и распакованным вариантом
В процессе разработки рабочий процесс немного меняется, что позволяет упростить локальную итерацию. После подготовки к работе с NodeJS и Go выполните следующие шаги.
- Клонировать репозиторий:
git clone https://github.com/TibixDev/WinBoat - Установка зависимостей:
npm i - Сборка гостевого сервера:
npm run build-guest-server - Запустите приложение в режиме разработки:
npm run dev
Конфигурация устройств и оборудования
Если вам необходимо получить доступ к оборудованию из Windows, поддержка зависит от типа устройства. Уже есть опции для USB, хотя в настоящее время настройка выполняется вручную. Когда в приложение будет добавлена функция сквозной передачи USB , это можно будет сделать через интерфейс; пока же потребуется редактировать файл.
После установки WinBoat перейдите в папку ~/.winboat и открой файл docker-compose.ymlТам вы можете добавить любые USB-устройства, которые хотите показать гостю. После его модификации, примените изменения с помощью docker-compose down y docker-compose up -d в том же каталоге.
Графика и ускорение: текущий статус WinBoat
В настоящее время отсутствует работающая функция сквозной передачи данных через графический процессор. Планируется реализовать ускорение с использованием паравиртуализированных драйверов , но работа над этим еще не завершена. Драйвер MVisor Win VGPU для OpenGL был исследован, и результаты многообещающие, хотя он разработан для другого гипервизора и несовместим с QEMU, который используется WinBoat.
Также есть команды, работающие над драйверами DirectX, но на данный момент у нас нет ничего, что мы могли бы надежно протестировать. Цель состоит в том, чтобы интегрировать эти компоненты, когда они станут достаточно зрелыми для общего использования, без ущерба для стабильности.
Один из проектов, который подвергся тщательному анализу, — это Looking Glass, особенно его драйвер косвенного отображения, поскольку он позволил бы избежать необходимости в использовании второго графического процессора. Драйвер был скомпилирован и запущен с некоторыми обходными путями, но отображается только черный экран. Сам автор указывает, что он еще не готов к публичному релизу, поэтому интеграция будет отложена до дальнейшей разработки.
Игры с античитом и другими ограничениями WinBoat
Если ваша цель — играть в игры с античитерством на уровне ядра, то хороших новостей нет. Эти системы обнаруживают и блокируют виртуализацию , поэтому запустить их на WinBoat невозможно. Для игр без этих ограничений или с менее инвазивными средствами защиты ситуация может быть иной, но это не является основной задачей проекта.
Статус Podman и упаковка в Flatpak
Поддержка Podman запланирована, и работа над ней уже началась как командой разработчиков, так и участниками проекта. Однако проблемы с сетью препятствуют доступу к гостевому серверу , что ухудшает пользовательский опыт. Пока эти проблемы не будут решены, задача останется в списке невыполненных.
Перевод WinBoat на Flatpak также входит в планы, хотя это потребует усилий, поскольку Flatpak очень жестко изолирует приложения от системы. Установленные приложения , бинарный файл Docker, его сокет и другие утилиты должны быть доступны, но при этом не должна нарушаться безопасность песочницы. Это нетривиальная задача, но выполнимая.
Интеграция файлов и рабочий процесс
Одна из практических деталей, упрощающих жизнь, — это монтирование домашнего каталога Linux внутри Windows. Это позволяет обмениваться файлами без монтирования дополнительных ресурсов или ручного копирования из незнакомых мест. Для офисных задач, редактирования или САПР это очень удобное решение.
Приложения, которые хорошо работают, и примеры их использования
Истинная ценность WinBoat становится очевидной при использовании программ, с которыми Wine пока не работает идеально. В качестве примеров можно привести Affinity Photo , Paint Tool SAI v1.0 и части пакета Adobe, а также такие инструменты, как AeroChat и Acrobat. Office выделяется среди прочих, подтверждая, что Office 365 можно использовать без особых трудностей.
Такой подход хорошо подходит для профессионалов, которым необходимы несколько важных утилит Windows, но которые предпочитают использовать свою среду Linux для всего остального. Дизайн, продвинутые офисные приложения или некоторые корпоративные приложения особенно хорошо вписываются в эту модель смешанного использования.
Сотрудничайте с проектом WinBoat и лицензируйте
Вклад всегда приветствуется, будь то исправление ошибок, доработка функций или улучшение документации. Команда просит вас сосредоточиться на технических аспектах и будет отклонять запросы на слияние с политическим, сексуальным или другим деликатным содержанием, которое не способствует разработке. Если вы хотите помочь, лучший способ — посетить раздел проблем, предложить улучшения и открыть целевые запросы на слияние.
Помимо сообщений об ошибках и предложений по улучшению функционала, вы можете делиться отзывами об использовании проекта в реальных условиях или помогать уточнять некоторые моменты в руководстве. Проект распространяется под лицензией MIT , которая способствует сотрудничеству и внедрению в различных средах. Также упоминается, что существуют другие проекты со схожими идеями, которые их вдохновили; их стоит изучить.
Примечания о конфиденциальности, уведомления и исходный контекст
Часть информации, представленной здесь, почерпнута из обсуждений на платформах, где отображаются уведомления о конфиденциальности. В случае с Reddit вы увидите типичное сообщение о том, что они и их партнеры используют файлы cookie и аналогичные технологии для улучшения пользовательского опыта, поддержания работы сервисов, повышения качества и персонализации контента и рекламы , а также для измерения эффективности рекламы. Если вы примете все файлы cookie, вы можете продолжить; если вы отклоните необязательные файлы cookie, они все равно могут использовать определенные файлы cookie, необходимые для функционирования платформы. Они также отсылают вас к своему уведомлению о файлах cookie и политике конфиденциальности.
В некоторых встроенных приложениях X, если в вашем браузере отключен JavaScript, появится сообщение с просьбой включить его или использовать совместимый браузер для продолжения работы. Ссылки на справочный центр, условия использования, политику конфиденциальности, политику использования файлов cookie, выходные данные и рекламные материалы указаны с фирменной символикой X. Это стандартные сообщения платформы, которые не влияют на функциональность WinBoat.
Наконец, в некоторых статьях используются макеты с пустыми таблицами и заполнителями, не добавляющими никакого контента. Эти визуальные элементы являются частью оригинального дизайна и не содержат соответствующей технической информации о WinBoat.
Практические советы для тех, кто хочет сдать тест с хорошим выражением лица
Несмотря на то, что проект автоматизирует многое, подготовка всё же полезна. Убедитесь, что ваш пользователь входит в группу Docker и что вы можете запускать контейнеры без sudo. Подтвердите, что FreeRDP версии 3.xx имеет поддержку звука, так как в более ранних версиях могут быть проблемы со звуком. И проверьте доступность каталога /var, чтобы избежать нехватки места в середине развертывания.
Если вы планируете использовать определенные USB-периферийные устройства в Windows, держите под рукой их идентификаторы и документируйте все изменения, внесенные в файл docker-compose.yml. Краткий контрольный список перед загрузкой и скачиванием контейнеров может сэкономить вам время, особенно если вы меняете компьютеры или делитесь проектом с другими людьми.
WinBoat предлагает прагматичное решение для тех, кому нужна среда, похожая на Windows, без отказа от Linux: хорошо организованная виртуализация, Windows, интегрированная с FreeRDP , четкие требования и план развития, ориентированный на улучшение графического ускорения, поддержку Podman и упаковку Flatpak. Благодаря уже имеющейся бета-версии, способной к серьезной работе, она оказывается привлекательной альтернативой, когда Wine или Proton оказываются неэффективными, особенно для важных приложений для дизайна, офисной работы или корпоративных задач, которые все еще испытывают трудности в Linux.