- Rosetta 2 на компьютере Mac с чипом Apple
- Преобразование точно в нужный момент
- Заблаговременное преобразование
- Содержимое статического доверенного кэша
- Неподписанный код x86_64
- Apple может отключить Rosetta 2 на Mac в некоторых странах. Чем это опасно
- Куда пропала Rosetta из macOS
- Что такое Rosetta 2
- На макбуках с чипом М1, который всем нравится, навсегда перестанет запускаться ПО для Intel
- Apple бежит от Intel
- Ждать осталось недолго
- Объяснений нет
- Откуда у Apple эмулятор Intel
- Решение проблемы
- Что еще не так с новой архитектурой Apple
Rosetta 2 на компьютере Mac с чипом Apple
Компьютер Mac с чипом Apple способен запускать код, скомпилированный для набора инструкций x86_64, с помощью механизма преобразования под названием Rosetta 2. Предлагается два типа преобразования: точно в нужный момент и заблаговременно.
Преобразование точно в нужный момент
При использовании преобразования точно в нужный момент (JIT) идентификация объекта Mach x86_64 выполняется на раннем этапе исполнения образа. Встречая такие образы, ядро передает управление специальной заглушке преобразования Rosetta, а не динамическому редактору ссылок dyld(1) . Заглушка преобразования выполняет преобразование страниц x86_64 во время исполнения образа. Преобразование выполняется полностью внутри процесса. Ядро по-прежнему проверяет хэши кода каждой страницы x86_64 на соответствие подписи кода, прикрепленной к двоичному файлу, когда происходит сбой страницы. В случае несоответствия хэша ядро применяет соответствующую политику исправления, подходящую для этого процесса.
Заблаговременное преобразование
При использовании заблаговременного преобразования (AOT) чтение двоичных файлов x86_64 из хранилища выполняется в те моменты, которые система считает оптимальными для скорости отклика этого кода. Преобразованные артефакты записываются в хранилище как особый файл объекта Mach. Этот файл похож на исполняемый образ, но содержит пометку, что это результат преобразования другого образа.
В этой модели артефакт AOT получает всю свою идентификационную информацию из исходного исполняемого образа x86_64. Для обеспечения этой привязки привилегированный объект пользовательского пространства подписывает преобразованный артефакт с помощью ключа конкретного устройства, которым управляет Secure Enclave. Этот ключ выдается только привилегированному объекту пользовательского пространства, который идентифицируется в этом качестве с помощью ограниченного права. Каталог кода, созданный для артефакта преобразования, включает хэш каталога кода исходного исполняемого образа x86_64. Подпись самого артефакта преобразования называется дополнительной подписью.
Процесс AOT начинается аналогично процессу JIT, то есть ядро передает управление среде выполнения Rosetta, а не динамическому редактору ссылок dyld(1) . Однако затем среда выполнения Rosetta отправляет в системную службу Rosetta запрос межпроцессного взаимодействия о том, доступно ли преобразование AOT для текущего исполняемого образа. Если такое преобразование найдено, служба Rosetta предоставляет дескриптор этого преобразования, после чего оно сопоставляется с процессом и исполняется. Во время исполнения ядро применяет хэши каталога кода артефакта преобразования, которые аутентифицируются подписью с корнем в ключе подписания конкретного устройства. Хэши каталога кода исходного образа x86_64 не участвуют в этом процессе.
Преобразованные артефакты находятся в хранилище Data Vault, которое во время выполнения недоступно для любых объектов, кроме службы Rosetta. Служба Rosetta управляет доступом к своему кэшу, выдавая доступные только для чтения файловые дескрипторы отдельным артефактам преобразования; это ограничивает доступ к кэшу артефакта AOT. Межпроцессное взаимодействие и зависимая область этой службы намеренно оставлены очень узкими, чтобы минимизировать атакуемую область.
Если хэш каталога кода исходного образа x86_64 не совпадает с хэшем, закодированным в подписи артефакта преобразования AOT, это равноценно недействительной подписи кода и приводит к принятию соответствующих принудительных мер.
Если удаленный процесс запрашивает у ядра права доступа или другие идентифицирующие свойства кода исполняемого файла, преобразованного AOT, ему возвращаются идентифицирующие свойства исходного образа x86_64.
Содержимое статического доверенного кэша
macOS 11 или новее поставляется с мультиархитектурными двоичными файлами Mach, которые содержат фрагменты кода x86_64 и arm64. Пользователь компьютера Mac с чипом Apple может выбрать исполнение фрагмента x86_64 системного двоичного файла через процесс Rosetta, например, чтобы загрузить подключаемый модуль, не имеющий нативной версии arm64. Для поддержки этого подхода статический доверенный кэш, который поставляется с macOS, в основном содержит три хэша каталога кода на каждый файл объекта Mach.
Хэш каталога кода фрагмента arm64.
Хэш каталога кода фрагмента x86_64.
Хэш каталога кода фрагмента заблаговременного (AOT) преобразования x86_64.
Процедура преобразования AOT Rosetta детерминирована. Она дает одинаковый результат для любого отдельно взятого набора входных данных, независимо от того, когда или на каком устройстве было выполнено преобразование.
Во время сборки macOS каждый файл объекта Mach проходит через процесс преобразования AOT Rosetta, связанный с версией данной macOS, и полученный хэш каталога кода записывается в доверенный кэш. Из соображений эффективности фактические результаты преобразования не поставляются с операционной системой и воссоздаются по запросу, когда пользователь их запрашивает.
Когда на компьютере Mac с чипом Apple исполняется образ x86_64, то, если хэш каталога кода этого образа находится в статическом доверенном кэше, хэш каталога кода полученного артефакта AOT также должен находиться в статическом доверенном кэше. Такие продукты не подписываются ключом конкретного устройства, поскольку корень полномочий подписания находится в последовательности безопасной загрузки Apple.
Неподписанный код x86_64
Компьютер Mac с чипом Apple не разрешает исполнение нативного кода arm64 без прикрепленной подписи кода. Эта подпись может быть такой же простой, как специальная ad-hoc подпись кода (ср. с codesign(1) ), не содержащая никакой идентификационной информации из секретной половины пары асимметричных ключей (это неаутентифицированное измерение двоичного файла).
Из соображений совместимости двоичных файлов преобразованному коду x86_64 разрешено исполняться через Rosetta, даже не имея никакой информации о подписи. Процедура подписи Secure Enclave для конкретного устройства никак не идентифицирует этот код, и он исполняется с теми же ограничениями, что и собственный неподписанный код, исполняемый на компьютере Mac с процессором Intel.
Источник
Apple может отключить Rosetta 2 на Mac в некоторых странах. Чем это опасно
После перехода новых Mac на архитектуру ARM многие стали беспокоиться, что это вызовет проблемы совместимости старых приложений, разработанных для Intel, с процессором M1. Но Apple заранее обо всём позаботилась и встроила в macOS эмулятор Rosetta 2, который по сути заставляет приложение думать, что оно запускается на Intel, а не на M1. Со стороны пользователя при этом всё выглядит, как обычно, он только видит предупреждение, что приложение будет запущенно с помощью Rosetta 2. Для многих пользователей Mac на M1 это сейчас главная функция macOS, так как софт ещё не до конца оптимизирован под M1. Однако в новой macOS 11.3 некоторые пользовали, похоже, потеряют доступ к Rosetta 2.
После отключения Rosetta многие пользователи могут лишиться доступа к приложениям под Intel
Куда пропала Rosetta из macOS
Одним из первых на информацию об отсутствии Rosetta 2 в бете macOS 11.3 обратил внимание разработчик Стив Мозер. В коде операционной системы он обнаружил следующую строчку:
Rosetta будет удалена после установки этого обновления
А также ещё одну:
Rosetta больше недоступна в этом регионе. Приложения, которые требуют Rosetta, больше не запустятся.
Apple is removing Rosetta from Macs during updates in certain countries in Mac 11.3 beta 3. Maybe this is due to legal issues? “Rosetta will be removed upon installing this update” “Rosetta is no longer available in your region. Applications requiring Rosetta will no longer urn” pic.twitter.com/NmsjXOwPvP
О каких именно регионах (странах в случае с Apple) идёт речь, непонятно. Возможно, компания столкнулась с какими-то юридическими или иными территориальными ограничениями. Вряд ли Rosetta уберут с компьютеров, которые находятся в США, но миллионы других Mac в остальных странах прямо сейчас находятся под угрозой. Да, в том числе те, которые были приобретены и используются в России.
Предлагаем подписаться на наш канал в «Яндекс.Дзен». Там вы сможете найти эксклюзивные материалы, которых нет на сайте.
Что такое Rosetta 2
С помощью Rosetta 2 компьютеры Mac с архитектурой ARM запускают приложения, изначально написанные для Intel, на M1. Эмулятор по умолчанию вшит в прошивку всех компьютеров Apple с ARM-чипами и работает полностью автоматически. Например, чтобы запустить, скажем, приложение, которое пока официально поддерживает только архитектуру x86, нет нужды запускать Rosetta 2 отдельно (да у вас и не получится, потому что в системе нет специальной кнопки). Как только вы попытаетесь запустить приложение, Rosetta 2 включится автоматически.
Именно Rosetta 2 позволяет запускать Intel-приложения на M1
Rosetta 2 поддерживает 99 приложений из 100, то есть работа со всеми программами изначально и не гарантируется. В то же время пока никто в Сети или в нашем чате в Telegram не жаловался на проблемы совместимости. Разве что все говорят про Docker, версии которого нет под M1.
Также по теме: Как устанавливать на Mac приложения для Windows
А почему эмулятор называется именно Rosetta 2? Просто Rosetta в 2005 году в Apple назвали программу, которая переводила код приложений, написанных под PowerPC, в среду Intel x86. Из-за чего переход Mac с процессоров PowerPC на Intel многие пользователи не заметили. С Rosetta в первые дни случались проблемы – но их было немного и они были устранены с невероятной быстротой. А когда переход закончился, в течение еще нескольких лет в новые версии Mac OS X включалась Rosetta, и некоторые старые программы, аналогов которым не было и не будет, продолжали работать. Медленнее, чем на PowerPC, но с приемлемой скоростью.
В случае с Rosetta 2 пользователи по сути могут потерять доступ к эмулятору всего через несколько месяцев после выхода первых Mac на Apple Silicon (с архитектурой ARM). И поскольку большинство приложений пока работают только под Intel, а macOS лишится встроенного «переводчика», пользователи не смогут запускать Intel-приложения. Для многих это будет настоящая катастрофа, и продажи Mac на ARM сразу упадут. Не думаю, что Apple это допустит, но и сообщение об отсутствии Rosetta 2 в некоторых странах, начиная с macOS 11.3, настораживает.
Источник
На макбуках с чипом М1, который всем нравится, навсегда перестанет запускаться ПО для Intel
Apple собирается удалить эмулятор Rosetta 2, позволяющий запускать программы для компьютеров на процессорах Intel на новых ПК с ARM-чипом М1. В некоторых регионах он может исчезнуть уже из macOS 11.3, релиз которой состоится в ближайшее время, и в «черный список» может попасть и Россия. Apple выпустила Rosetta 2 менее полугода назад, хотя первое поколение эмулятора для запуска PowerPC-программ на процессорах Intel, проработало несколько лет.
Apple бежит от Intel
Компания Apple собирается полностью отключить поддержку программ для архитектуры х86 в своих новых ноутбуках и ПК на базе ARM-процессора M1. Это означает, что приложения, разработчики которых не выпустили апдейт с поддержкой в них этого чипа, перестанут запускаться на новых компьютерах Apple, и никаких способов заставить их заработать не будет.
По данным портала MacRumors, Apple сделает это путем удаления из macOS эмулятора Rosetta 2, необходимого для запуска х86-программ на MacBook и Mac с ее новым процессором. Упоминание было найдено непосредственно в коде системы. Разработчик Стив Мозер (Steve Moser) обнаружил в нем строчки «Rosetta будет удалена после установки этого обновления» (Rosetta will be removed upon installing this update) и «Rosetta больше недоступна в данном регионе. Приложения, которые требуют Rosetta, отныне не запустятся» (Rosetta is no longer available in your region. Applications requiring Rosetta will no longer run).
Ждать осталось недолго
Указанные строчки Стив Мозер нашел в коде macOS 11.3 beta 3 – Apple начала ее распространение среди разработчиков в первых числах марта 2021 г. В предыдущих бетах упоминаний о скором прекращении работы Rosetta не было.
Это означает, что установка даже данной бета-версии macOS может повлечь невозможность запуска программ, создававшихся для компьютеров Apple на базе Intel. Другими словами, в стабильной сборке macOS 11.3, дата релиза которой пока не определена, с неработающим эмулятором могут столкнуться не только разработчики, но и обычные пользователи.
Объяснений нет
На момент публикации материала Apple не комментировала находку Стива Мозера. Причины, по которым она решила отключить Rosetta, остаются неизвестными, как и то, кто именно останется без этого эмулятора.
В коде macOS Стив Мозер не нашел перечня регионов мира, жители которых лишатся возможности запускать свои старые программы на новом «железе» после установки свежей macOS 11.3. В их числе запросто могут оказаться и россияне.
Откуда у Apple эмулятор Intel
Apple выпускала свои ноутбуки и десктопы на разномастных x86-процессорах Intel с 2006 г., но в июне 2020 г. решила полностью отказаться от них. В качестве альтернативы она выбрала ARM-чипы собственной разработки, и первым в новой линейке стал 5-нанометровый процессор М1.
В ноябре 2020 г. на его основе Apple выпустила ноутбуки MacBook Air и Pro 13, а также неттоп Mac mini вместе с новой системой macOS 11 Big Sur, адаптированной под него. Rosetta 2 стал частью этой ОС.
Если Apple уберет свой эмулятор из macOS 11.3, это будет означать, что она отвела разработчикам менее полугода на адаптацию своих программ под новую архитектуру. Для сравнения, когда в 2006 г. Apple перешла с процессоров IBM PowerPC на Intel, она точно так же выпустила эмулятор Rosetta первого поколения, и он входил в состав прежних версий macOS на протяжении нескольких лет. Анонс Rosetta состоялся на WWDC 2005.
Решение проблемы
Выходов из ситуации с недоступностью старых программ будет несколько, и самый очевидный из них – повременить с отказом от компьютеров Mac на базе процессоров Intel, если стабильная работа старого ПО критически важна. Тут стоит отметить, что, несмотря на ноябрьский релиз трех ПК с чипом М1, Apple по-прежнему продает Intel-версии своих компьютеров – они доступны во многих регионах мира, включая Россию
Второй выход – это как можно дольше оттягивать переход на новую версию macOS. Не исключено, что грядущее отключение Rosetta подстегнет разработчиков ПО к адаптации своих приложений под новую архитектуру, но, безусловно, на этот шаг пойдут не все из них.
Что еще не так с новой архитектурой Apple
Переход на новые Mac с собственными процессорами Apple может привести не только к неработоспособности программ, использовавшихся годами. Компьютеры с процессорами M1 содержат еще как минимум один недочет, который может обернуться для пользователей существенными тратами.
В конце февраля 2021 г. CNews писал, что в новых ПК на чипе Apple M1 был выявлен сверхбыстрый расход ресурса твердотельного накопителя. У ряда пользователей SSD был изношен на 4% спустя меньше месяца с момента покупки компьютера. Заменить накопитель самостоятельно нельзя – придется обращаться в сервисный центр.
В компьютерах Apple на процессорах Intel подобные проблемы не проявляются. К примеру, у одного их пользователей трехлетний iMac на базе Intel Core проработал в течение 4100 часов, и за это время износ его SSD составил всего 14%.
На момент публикации материала Apple не предлагала решение этой проблемы.
Источник