Создатели CrossOver из компании CodeWeavers рассказали в своем блоге, что в новой версии приложения можно запускать 32-битные приложения Windows на компьютерах Apple с чипами M1. Разработчики также продемонстрировали игровой процесс на MacBook Air в Team Fortress 2 и вдобавок пояснили, что проверили работу эмулятора на Quicken (ПО для для личных финансов), десктопной версии Among Us и Witcher 3. Оказалось, что во все эти игры можно играть почти без лагов с приемлемой частотой обновления.
Новые MacBook Air, MacBook Pro и Mac mini с новым чипом Apple Silicon М1 с ARM-архитектурой уже поступили в продажу, но им пока не хватает нативного софта и сред разработки. Например, все Mac с процессором M1 не поддерживают Boot Camp, из-за чего пользователи не могут запускать на них приложения для Windows. Теперь появилось первое решение этой проблемы.
CrossOver — это коммерческий продукт с бесплатным пробным периодом. Он основан на проекте Wine с открытым исходным кодом. CrossOver эмулирует среду Windows 10 на Mac. Разработчики уточнили в своем блоге, что версия 20 этого ПО работает на компьютерах Apple с чипами M1 через встроенный транслятор Rosetta 2, который аппаратно эмулирует двоичные файлы x86 на ARM.
Разработчики пояснили, что они смогли на самом дешевом устройстве Apple Silicon запустить 32-битный двоичный файл, разработанный под ОС Windows.
Итоговая схема работы системы преобразования получилась длинная:
- исходное 32-битное приложение написано для операционной системы Windows и архитектуры x86;
- приложение запускается через мост 32-на-64 в Wine/CrossOver в среде macOS;
- сам же x86-пакет CrossOver запущен на процессоре ARM, который эмулирует нужную архитектуру с помощью Rosetta 2.
Оказалось, что вся эта связка успешно работает, а потеря производительности в процессе эмуляции и трансляции приемлема для нормальной игры.
В настоящее время CrossOver 20.0.2 работает только на macOS Big Sur 11.1 beta. В этой версии ОС Apple внесла критические исправления в работу алгоритма Rosetta 2.
Пример игры в Team Fortress 2 на MacBook Air (M1) с помощью CrossOver.
См. также:
- «Apple представила MacBook Air, MacBook Pro 13 и Mac mini на новых ARM-процессорах M1»
- «Первый опыт: Mac Mini на M1»
- «Чип Apple M1 в MacBook Air в Geekbench 5 обошел по производительности 8-ядерный Intel Core i9-9980HK в MacBook Pro»
- «Встроенная графика Apple M1 находится на уровне GTX 1050 Ti в тестах GFXBench 5.0»
- «CrossOver, софт для запуска Windows-приложений на Chromebook, вышел из беты»
C_21
Шутка про запуск windows в wine — стала реальностью.
ANIDEANI
была шутка из 2010 года. Про то, что поставьте виртуальную машину, запустите крайсис в ней и наслаждайтесь. Похоже эта шутка станет реальностью.
а на деле сейчас 3D виртуализация невозможна, точне vmare и vbox не предосталяют полную виртуализацию видеоядра. поправьте если не права
Wexter
Сейчас можно полностью отдать видеокарту виртуалке
DistortNeo
Но при этом её не будет в хосте. А хотелось бы, чтобы видеокарта шарилась между хостом и виртуалкой. Например, в WSL имеются подвижки в эту сторону.
Wexter
Ждём когда SR-IOV в видеокартах дойдёт до десктопов, а так можно купить какую-нибудь s7150/s7150x2 на поиграться с виртуализацией. Хотя цены всё ещё кусаются
DistortNeo
Это немного не то. Что AMD Multiuser GPU, что NVIDIA vGPU — это разделение одной видеокарты на несколько более маленьких, причём одинаковых по характеристикам.
То есть сценарий сначала полностью задействовать всю видеокарту в одной системе, а потом в другой, это не решает. Можно на 50% задействовать в каждой из систем.
khajiit
Выгрузите драйвер, заблокируйте его загрузку/привязку на уровне udev или ядра, отдайте карту в виртуалку, выполните сброс PCIe-устройства, запустите виртуалку.
Более прямых методов пока нет.
DistortNeo
На словах выглядит красиво. На деле у людей пляски с бубнами даже при статической конфигурации. И эта… винда-то позволит такое делать с видеокартой?
khajiit
Если требуется прокинуть загрузочную видеокарту, то да. И не всегда срабатывает сброс, например — надежнее сразу загрузиться в headless. Плюс загрузочной видюхе надо как-то подкинуть ROM.
Надежнее и проще прокидывать вторую видеокарту, причем другого производителя, чем у загрузочной. Отдать ее сразу vfio, запретить загрузку модулей ядру, и можно жить — выключения гостевой ОС переживаются нормально.
Про винду лучше спросить у виндоюзеров.
Майки вроде что-то мутили, чтобы можно было пользовать видюху из WSL2, но оно как-то не слишком интересно каджиту.
Wexter
1. Не обязательно одинаковых, можно комбинировать
2. Ну можно же всё же использовать две карты, затычка типа гт710 для хоста и мощная для виртуалки. Причём и хост и виртуалку можно использовать параллельно, эдакая рабочая станция 2в1.
Такую схему уже не первый год используют энтузиасты
DistortNeo
Не-не. Именно перекидывать ресурсы между системами, а не просто выделять их. Например, пообучать нейросетку под линуксом, затем переключиться поиграть во что-нибудь в винду без перезагрузки.
CrashLogger
А если в системе две видеокарты? Например встроенная в процессор и NVidia. Можно одну из них отдать виртуалке ?
DistortNeo
Да, можно, причём как интегрированное видео, так и дискретное.
rogoz
Так и делают обычно, NVidia в этом примере уходит в виртуалку.
khajiit
Есть ньюанс: это должен быть не загрузочный адаптер.
а так — можно.
khajiit
Kvm предоставлял давно уже. Похоже что hyperv уже тоже.
vikarti
Да?
вообще то и VMware Workstation/Fusion и Parallels как раз предоставляют виртуальный 3D адаптер если на хосте есть. И игры работают. Вот только гость — Win/Linux (у Paralles в 16-й версии заявили поддержку Metal для macOS гостя (https://www.parallels.com/ru/news/press-releases/show/pd16-for-mac-launches/ — гостевая macOS должна быть Big Sur).
Parallels вот даже для рекламы использует тот факт что «теперь» у них используется Metal а не OpenGL на маках. www.parallels.com/blogs/parallels-desktop-15-directx-11-and-metal
Быстродействие — вопрос отдельный но работает.
У VirtualBox тоже и давно (вроде даже что-то открытое было).
Да, нужен гостевой драйвер который в это умеет. Да, драйвер может поддерживать именно конкретные версии DirectX и OpenGL.
У VMware ESXi разумеется тоже все поддерживается но там уже есть варианты с эмуляцией (но карточки не любые далеко нужны)/отдачей карточки (тут списки побольше)
DistortNeo
Однако, немного производительность подтянули и даже добавили полгода назад поддержку DX11:
https://www.youtube.com/watch?v=-i3ruvRn3B4
Но bare metal performance, понятное дело, достичь таким образом невозможно.