Как стать автором
Обновить

32-битные приложения Windows заработали на Apple M1 через эмуляцию в CrossOver, запущенном в эмуляции x86

Время на прочтение2 мин
Количество просмотров34K
Всего голосов 24: ↑22 и ↓2+20
Комментарии64

Комментарии 64

Шутка про запуск windows в wine — стала реальностью.
была шутка из 2010 года. Про то, что поставьте виртуальную машину, запустите крайсис в ней и наслаждайтесь. Похоже эта шутка станет реальностью.

а на деле сейчас 3D виртуализация невозможна, точне vmare и vbox не предосталяют полную виртуализацию видеоядра. поправьте если не права
Сейчас можно полностью отдать видеокарту виртуалке

Но при этом её не будет в хосте. А хотелось бы, чтобы видеокарта шарилась между хостом и виртуалкой. Например, в WSL имеются подвижки в эту сторону.

Ждём когда SR-IOV в видеокартах дойдёт до десктопов, а так можно купить какую-нибудь s7150/s7150x2 на поиграться с виртуализацией. Хотя цены всё ещё кусаются

Это немного не то. Что AMD Multiuser GPU, что NVIDIA vGPU — это разделение одной видеокарты на несколько более маленьких, причём одинаковых по характеристикам.
То есть сценарий сначала полностью задействовать всю видеокарту в одной системе, а потом в другой, это не решает. Можно на 50% задействовать в каждой из систем.

Выгрузите драйвер, заблокируйте его загрузку/привязку на уровне udev или ядра, отдайте карту в виртуалку, выполните сброс PCIe-устройства, запустите виртуалку.
Более прямых методов пока нет.

На словах выглядит красиво. На деле у людей пляски с бубнами даже при статической конфигурации. И эта… винда-то позволит такое делать с видеокартой?

Если требуется прокинуть загрузочную видеокарту, то да. И не всегда срабатывает сброс, например — надежнее сразу загрузиться в headless. Плюс загрузочной видюхе надо как-то подкинуть ROM.


Надежнее и проще прокидывать вторую видеокарту, причем другого производителя, чем у загрузочной. Отдать ее сразу vfio, запретить загрузку модулей ядру, и можно жить — выключения гостевой ОС переживаются нормально.


винда-то позволит такое делать с видеокартой?

Про винду лучше спросить у виндоюзеров.
Майки вроде что-то мутили, чтобы можно было пользовать видюху из WSL2, но оно как-то не слишком интересно каджиту.

1. Не обязательно одинаковых, можно комбинировать
2. Ну можно же всё же использовать две карты, затычка типа гт710 для хоста и мощная для виртуалки. Причём и хост и виртуалку можно использовать параллельно, эдакая рабочая станция 2в1.
Такую схему уже не первый год используют энтузиасты

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

А если в системе две видеокарты? Например встроенная в процессор и NVidia. Можно одну из них отдать виртуалке ?

Да, можно, причём как интегрированное видео, так и дискретное.

Так и делают обычно, NVidia в этом примере уходит в виртуалку.

Есть ньюанс: это должен быть не загрузочный адаптер.
а так — можно.

Kvm предоставлял давно уже. Похоже что hyperv уже тоже.

Да?
вообще то и 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 разумеется тоже все поддерживается но там уже есть варианты с эмуляцией (но карточки не любые далеко нужны)/отдачей карточки (тут списки побольше)

Однако, немного производительность подтянули и даже добавили полгода назад поддержку DX11:
https://www.youtube.com/watch?v=-i3ruvRn3B4


Но bare metal performance, понятное дело, достичь таким образом невозможно.

НЛО прилетело и опубликовало эту надпись здесь

Там ничего прямо не написано про запуск Windows на M1.
К тому же, сейчас Windows on ARM просто так не продаётся, только вместе с устройствами с ней.

Можете объяснить для чего упомянут bootcamp?
Из текста мне показалось что Rosetta неплохо поддерживает Wine, что конечно нравится авторам платного Crossover.
Можете объяснить для чего упомянут bootcamp?

Не все понимают, что М1 это arm, а вот сказать что bootcamp работать не будет — для многих пользователей Apple понятней.
Чтоб не забывали, что нативного запуска Windows на «Маках» в обозримом будущем больше не будет.

Больше печалит отсутствие возможно запуска Linux. Проблема не в M1, конечно, а в Т2.

Т2 а новых макбуках нет. Все встроено в М1.

НЛО прилетело и опубликовало эту надпись здесь

думаю ARM-версии windows и linux запустят в обозримом будущем. Вопрос в том, кому вообще сдался ARM-windows...

ARM-версии линукса, конечно же, есть, под множество разных армов. Вопрос в драйверах под конкретную платформу, которых никто не даст

Ну не знаю, по ролику с Team Fortress видно, что более-менее FPS нормальный только в коридорах, стоит выйти на открытую местость, то это слайдшоу.
Судя по ролику там стоят настройки графики минимальные, и оно лагает когда сцена чутка сложнее коридора или есть какие то эффекты. Очень хотелось бы увидеть видео ведьмака на этом огрызке с «приемлемой потерей производительности».
НЛО прилетело и опубликовало эту надпись здесь
Осталось вспомнить, из-за кого именно Microsoft свернуло свой windows на ARM.
Скрытый текст
Intel

НЛО прилетело и опубликовало эту надпись здесь
Что значит «свернуло»? Он доступен на куче девайсов и активно развивается.
Если про нативный WinCE и его наследники, то возможно.
Но я имел в виду, именно трансляцию x86 команд бинарных файлов на ARM. Где эта куча девайсов?

Например с АРМом есть
surface pro x, Galaxy Book S,Lenovo Yoga, Asus NovaGo

А где там про запуск x86 программ?
Я говорил именно про эту возможность, которую закопали.
Невнимательно прочитал, ок
64-bit (x64) apps. With 64-bit emulation coming soon in Preview via the Windows Insider program, you'll be able to run 64-bit (x64) apps on Surface Pro X. Without 64-bit emulation support, you can run 64-bit (ARM64) apps, 32-bit (ARM32) apps, or 32-bit (x86) apps (using the x86 emulator). You can usually find 32-bit (x86) versions of apps, but some app developers only offer 64-bit (x64) apps.

May 13, 2017 Windows 10 Pro нативно работает на ARM
June 13, 2017 Intel грозится подать против Microsoft патентный иск за эмуляцию x86 на ARM
и вдруг опять
October 1, 2020 Microsoft добавит эмуляцию 64-битных приложений на Windows 10 для ARM-систем
Snapdragon 835, минуточку, обещали еще в 2017 году продавать.
Microsoft три раза кидала всех на windows mobile, еще когда пыталась влезть на рынок телефонов. И вдруг опять обещания, но вместо телефонов уже планшеты.
х86 планшеты в той же неудобной позиции, либо экран никакой, либо встроенная флешка меньше 64Гб, либо цена такая, что уже можно ноутбук брать.

Отделите х86 от х64 и снова прочитайте свой пост (цитату в нем) внимательно.


Surface Pro X (на aarch64) продается уже второй год и запускает приложения x86 с первого дня. В этом году вышло второе поколение устройств, в инсайдерской винде тестируется поддержка х64.

Thanks very much, with using both of yours suggestions, it compiled.
Unfortunately I can't make it work.


Ржу. Дальше не читал, наверное там написано, как это исправить, но мне почему то вспомнилось, что «Линукс бесплатен, если вы не цените свое время».

В данном конкретном случае мне было проще закинуть копеечку в CodeWeavers и получить годовую подписку на обновления CrossOver.

PS: А вот жесткий баг с CrossOver CD Helper они при переходе c 19-й версии на 20-ю так и не исправили. Наверное, это не так интересно, как запустить Team Fortress на М1.

У меня при переходе на 20 пропал этот баг. Раньше бесило так, что откатывался на 18.

Он проявляется не каждый раз, я после обновления уже один раз прибивал процесс, продолжу наблюдения, если больше не вылезет — хорошо, если вылезет — буду клевать мозги ТП.

CrossOver эмулирует среду Windows

WINE Is Not Emulator ©

Не эмулятор процессора или операционной системы. Емулирует (почти) минимальную среду, нужную для запуска Windows-приложений.

Он Not Emulator не потому, что не эмулятор процессора/ОС/whatever, а потому что альтернативная реализация API, что никак не эмуляция. Иначе какой-нибудь musl можно было бы назвать эмулятором glibc :-)

Не эмулирует, а скорее имитирует среду для запуска windows приложений, а дальше транслирует команды

Не эмулирует, а скорее имитирует среду для запуска windows приложений, а дальше транслирует команды

А dennes544 не пишет комментарии к статье, а скорее набирает текст в окне для ввода комментариев, а дальше нажимает кнопку «Отправить» ;)

“32-битные приложения Windows заработали на Apple M1 через эмуляцию в CrossOver, запущенном в эмуляции x86”


Как в детстве:
« в сундуке — заяц, в зайце — утка, в утке — яйцо, в яйце — игла»

… на игле виндовая виртуалочка, в неё досбокс. Подскажите пожалуйста, как мне прокинуть звук из досбокса?

Санитары подскажут.

Напоминает «Как мне пропатчить KDE2 под FreeBSD?»
Кто первый замкнет кольцо из эмуляций и крикнет «Рыба!»?

Ухреначив последней эмуляцией об стол так, чтобы собутыльники подпрыгнули. Иначе не считается.

Странно что еще никто не вспомнил

image

Вспомнилось:
image
Это старкон2, запущенный в DosBox, под иксами в Дебиане, который запущен в VMWare, которая в WinXP
Куда мне вопрос о неработающем звуке задавать? )))))

gregory_777: Санитарам.

bash.org.ru/quote/59325

То есть разработчику под винду (.net core, но иногда нужен WPF) можно забыть про этот новый M1?

В целом, да. Пока не будет громкого анонса, что Windows on ARM поддерживает новые компьютеры Apple, или позволяет устанавливаться в Parallels Desktop на ARM.

Погодите, так Rosetta 2, всё-таки, не (только) компилятор, отрабатывающий 1 раз при установке нового х86-приложения?

Скорее всего, все таки при запуске и то с кешем. Также, она может переводить код, генерируемый в процессе работы программы (двойной JIT выходит).


Source: https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environment

А как эе 64bit приложения, никак не запустить пока? 32bit то уже почти не осталось

Не осталось где?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории