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



    Создатели 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.

    См. также:

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

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

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

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

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

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

                  0

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

                    0

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

                      0

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


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


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

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

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

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

                  0

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

                    0

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

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

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

                    0

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

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

                        0

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


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

                    +4

                    Похоже, рано хоронили Parallels Desktop.

                      +2

                      На сайте Parallels написано, что у них в активной разработке версия, которая позволит запускать виртуалки с Windows на М1. Хуже, чем Windows на PowerPC, всё равно уже ничего не будет :)

                        0

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

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

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

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

                              +9

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

                                +3
                                Суть от этого не менется.
                              +3

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

                                +4

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

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

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

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

                                          0
                                          А где там про запуск 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Гб, либо цена такая, что уже можно ноутбук брать.
                                            0

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


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

                                    +1

                                    Crossover — opensource под LGPL, скачать тут https://www.codeweavers.com/crossover/source


                                    Инструкция по сборке https://gist.github.com/Alex4386/4cce275760367e9f5e90e2553d655309

                                      +6
                                      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.
                                        +2

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

                                          0

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

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

                                      WINE Is Not Emulator ©

                                        +4

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

                                          +4

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

                                            0

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

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

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

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


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

                                            +7
                                            … на игле виндовая виртуалочка, в неё досбокс. Подскажите пожалуйста, как мне прокинуть звук из досбокса?
                                            +7
                                            Кто первый замкнет кольцо из эмуляций и крикнет «Рыба!»?
                                              +2

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

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

                                            image

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

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

                                              bash.org.ru/quote/59325
                                                +1

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

                                                  +3

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

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

                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                Самое читаемое