Apple Silicon: ARM, Rosetta 2 и отличия от Intel

Рейтинг: 60.1% · 14 голосов
Подробный курс по macOS для разработчиков и админов: архитектура и Apple Silicon, терминал и zsh, Homebrew и пакеты, launchd и автоматизация, APFS и Time Machine, безопасность (SIP, Gatekeeper, TCC, FileVault), сеть, логи и диагностика, MDM и DDM, контейнеры и виртуализация, восстановление. По официальной документации Apple, актуально на 2026 (macOS 26 Tahoe).
Ответить
Аватара пользователя
Artem_MacAdmin
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Apple Silicon: ARM, Rosetta 2 и отличия от Intel

Сообщение Artem_MacAdmin »

Оглавление курса (47)
  1. Что такое macOS: Unix под капотом и место в 2026
  2. Архитектура macOS: XNU, тома и Signed System Volume
  3. Apple Silicon: ARM, Rosetta 2 и отличия от Intel (вы здесь)
  4. Установка, обновление и восстановление macOS
  5. Finder, рабочий стол и продуктивность
  6. Системные настройки и их управление из CLI (defaults)
  7. Пользователи и группы: учётные записи и управление
  8. Терминал и zsh: командная строка macOS
  9. CLI на macOS: BSD-команды и отличия от Linux
  10. Настройка zsh: .zshrc, prompt, плагины
  11. Файловая система и права: POSIX, ACL, атрибуты, флаги
  12. Homebrew: пакетный менеджер для macOS
  13. Homebrew глубже: tap, Brewfile, services, обслуживание
  14. Другие пакеты: MacPorts, mas, Nix и App Store
  15. Установка приложений: .app, .dmg, .pkg и Gatekeeper
  16. Управление приложениями и их данные
  17. launchd и launchctl: система запуска macOS
  18. Свои службы и периодические задачи на launchd
  19. Автоматизация: Shortcuts, AppleScript и osascript
  20. Конфигурация как код: defaults, plist и профили
  21. APFS: снапшоты, клоны, контейнеры и шифрование
  22. Управление дисками: diskutil, образы и форматирование
  23. Time Machine и резервное копирование
  24. Внешние диски, форматы и сетевые тома
  25. Модель безопасности macOS: SIP и целостность системы
  26. Gatekeeper, нотаризация и защита от вредоносов
  27. Приватность и TCC: разрешения на доступ
  28. FileVault: полнодисковое шифрование
  29. Связка ключей и управление секретами
  30. Сетевой экран и защита сети
  31. Сеть в macOS: настройка и инструменты
  32. Диагностика сети на Mac
  33. Общий доступ: SSH, экран, файлы, удалённое управление
  34. Процессы и ресурсы: мониторинг производительности
  35. Логи macOS: unified logging и диагностика
  36. Производительность и энергия: powermetrics, диагностика
  37. Энергия, сон и обслуживание системы
  38. Профили конфигурации и основы MDM
  39. Управление парком Mac: MDM, DDM и zero-touch (2026)
  40. Среда разработчика на Mac: Xcode CLT, git, версии
  41. Контейнеры на Mac: Docker Desktop, OrbStack, Apple container
  42. Виртуализация: Virtualization.framework, UTM, Linux и Windows
  43. Режимы загрузки и восстановление (Apple Silicon)
  44. Сброс, NVRAM, Safe Mode и сброс настроек
  45. Траблшутинг macOS: дерево решений по симптомам
  46. Место на диске и обслуживание системы
  47. Сквозной проект: настройка Mac как у профи + куда расти
Зачем тебе понимать, на каком кремнии ты работаешь

Ты ставишь brew-пакет, а он валится с ошибкой про несовместимую архитектуру. Или нативное приложение внезапно тормозит, хотя машина мощная. Или ты пишешь скрипт деплоя, который на M-серии вдруг ведёт себя не так, как на старом Intel-маке из соседнего отдела. Все эти боли растут из одного корня: с 2020 года под крышкой Mac стоит принципиально другой процессор - Apple Silicon на архитектуре ARM64, а не x86_64 от Intel. И если ты админишь парк или собираешь софт, делать вид, что разницы нет, больше нельзя.

К 2026 году вопрос уже не "переходить ли", а "как доживает Intel". macOS 26 Tahoe (вышла в сентябре 2025) - последняя версия, которая вообще запускается на Intel-маках. Начиная с macOS 27 система пойдёт только на Apple Silicon. Поэтому понимать, чем arm mac отличается от Intel, какой у тебя процессор mac, и что такое rosetta 2 - это не любопытство, а рабочая необходимость. Разберём механику: от транзисторов до загрузчика.

Изображение

Что такое SoC, UMA и почему m1 m2 m3 - это не просто "быстрый CPU"

Главное слово - SoC, System on a Chip, система на кристалле. У классического Intel-мака процессор, графика (часто отдельная), контроллер памяти, оперативка в виде планок DIMM и куча контроллеров жили физически раздельно и общались по шинам. У Apple Silicon почти всё это спаяно в один кристалл: вычислительные ядра CPU (производительные P-cores и энергоэффективные E-cores), GPU, нейромодуль Neural Engine, контроллеры, Secure Enclave - и память.

Память тут - отдельная история. Это UMA, Unified Memory Architecture, унифицированная память. Чипы RAM припаяны прямо в корпус SoC, и CPU с GPU видят одно и то же физическое адресное пространство. Не нужно копировать буфер из системной памяти в видеопамять и обратно - они работают с одними и теми же байтами. Отсюда два следствия, которые админ обязан помнить:
  • Память не наращивается. Никаких "докуплю планку". Сколько взял при покупке - столько и будет до конца жизни машины. Это влияет на планирование закупок парка.
  • 16 ГБ на Apple Silicon по ощущениям "тяжелее", чем 16 ГБ на старом Intel с дискретной картой, потому что нет двойного копирования и накладных расходов на шину PCIe.
Линейка процессоров mac растёт по поколениям: M1 (2020), M2, M3, M4 и уже M5. Внутри каждого - варианты Pro, Max и Ultra (Ultra - это два кристалла Max, сшитые скоростным интерконнектом). Для скриптов и инвентаризации важно не маркетинговое имя, а архитектура: всё это arm64.

Проверить, на чём ты сидишь, можно сразу:

Код: Выделить всё

uname -m
# arm64   - ты на Apple Silicon
# x86_64  - ты на Intel (или внутри Rosetta, об этом ниже)

sysctl -n machdep.cpu.brand_string
# Apple M3 Pro
Команда sysctl лезет в ядро за реальным именем кристалла. Это надёжнее, чем парсить вывод "Об этом Mac".

Universal binary и rosetta 2: как Intel-софт живёт на ARM

Процессор ARM физически не умеет исполнять инструкции x86_64. Это разные наборы команд. Значит, старый софт, собранный под Intel, на голом железе Apple Silicon просто не запустится. Apple решила это двумя путями.

Первый - universal binary. Это один файл .app или исполняемый бинарь, внутри которого лежат две скомпилированные версии: arm64 и x86_64. Система при запуске сама выбирает нужную. Посмотреть, что внутри, можно утилитой file и lipo:

Код: Выделить всё

file /bin/ls
# /bin/ls: Mach-O universal binary with 2 architectures:
#   [x86_64:Mach-O 64-bit executable x86_64]
#   [arm64e:Mach-O 64-bit executable arm64e]

lipo -archs /System/Applications/Calculator.app/Contents/MacOS/Calculator
# x86_64 arm64
Видишь два слова в выводе - значит бинарь толстый (fat), запустится нативно на любой архитектуре. Системные тулзы macOS почти все универсальные.

Второй путь - rosetta 2. Это транслятор: он переводит инструкции x86_64 в arm64. Большую часть работы Rosetta делает заранее, при первом запуске Intel-приложения (ahead-of-time трансляция): берёт бинарь, прогоняет его через перевод и кеширует результат. Поэтому первый старт чужого Intel-приложения подтормаживает, а дальше работает бодро. Код, который генерируется на лету (JIT), транслируется уже в рантайме.

Rosetta 2 не предустановлена. Её ставят по требованию - либо система сама предложит при первом запуске Intel-приложения, либо ты ставишь руками, что критично для автоматизации и MDM:

Код: Выделить всё

softwareupdate --install-rosetta --agree-to-license
Флаг --agree-to-license обязателен в скриптах: без него команда зависнет, ожидая, что человек примет лицензию в интерактиве. Это классические грабли первого деплоя на парк.

Как понять, что процесс крутится под Rosetta, и как заставить нужную архитектуру

Самая коварная вещь: процесс под Rosetta думает, что он на Intel. Если из такого процесса спросить uname -m, ответ будет x86_64, хотя железо arm64. Поэтому для надёжной проверки есть отдельный sysctl-флаг:

Код: Выделить всё

sysctl -n sysctl.proc_translated
# 0  - процесс нативный arm64
# 1  - процесс транслируется через Rosetta
# (пусто/ошибка) - ты на Intel-маке, флага просто нет
Этот флаг отвечает именно про текущий процесс, а не про машину. Запусти оболочку под Rosetta - и в ней он станет 1.

Управляет архитектурой команда arch. Без аргументов она печатает активную архитектуру, с флагом - запускает указанную ветку универсального бинаря:

Код: Выделить всё

arch                      # текущая активная архитектура
arch -x86_64 zsh          # запустить zsh в режиме Intel (через Rosetta)
arch -arm64 brew install ...   # форсировать нативный arm64
Реальный сценарий: у тебя сломанный пакет, который собирается только под x86_64. Ты заходишь в "интеловую" оболочку, и всё, что ты в ней запускаешь, наследует трансляцию:

Код: Выделить всё

arch -x86_64 zsh
uname -m
# x86_64
sysctl -n sysctl.proc_translated
# 1
Внутри этой оболочки можно держать отдельный, "интеловый" Homebrew. И тут мы упираемся в важнейшую развилку, специфичную для arm mac.

Два Homebrew, два префикса: /opt/homebrew против /usr/local

На Apple Silicon нативный Homebrew ставится в /opt/homebrew. На Intel он исторически жил в /usr/local. Это сделано специально, чтобы две инсталляции (нативная arm64 и интеловая под Rosetta) могли сосуществовать на одной машине и не топтать друг друга.

Код: Выделить всё

which brew
# /opt/homebrew/bin/brew     - нативный Apple Silicon
# /usr/local/bin/brew        - Intel/Rosetta

brew config | grep -i rosetta
# Rosetta 2: true
Грабли, на которых горят все: ты перенёс дотфайлы со старого Intel-мака, в .zprofile прописан старый путь, и brew упорно ставит x86_64-пакеты в /usr/local под Rosetta вместо быстрых нативных в /opt/homebrew. Лечится правкой eval "$(/opt/homebrew/bin/brew shellenv)" в профиле и проверкой через which brew. Если ты Mac-админ - закладывай этот момент в онбординг-скрипт, иначе половина парка будет тихо работать в эмуляции.

Загрузка Apple Silicon против Intel: T2/EFI и iBoot/LocalPolicy

Тут различие самое глубокое и самое недооценённое. Это не "тот же загрузчик, другой CPU" - это две разные модели доверия.

Intel-маки грузятся через UEFI/EFI-прошивку, как обычные PC. На свежих Intel-маках безопасностью заведует отдельный чип T2: он держит Secure Enclave, шифрует диск и проверяет загрузчик. Recovery вызывается комбинацией Cmd+R при старте.

Apple Silicon грузится принципиально иначе, по цепочке доверия, унаследованной от iPhone:
  • Boot ROM - неизменяемый код прямо в кремнии, корень доверия. С него начинается всё.
  • LLB (Low-Level Bootloader) - проверяет подписи, поднимает прошивки контроллеров и достаёт LocalPolicy из Secure Enclave.
  • LocalPolicy - подписанный Secure Enclave файл, где записан выбранный тобой уровень безопасности и политика загрузки именно этого тома.
  • iBoot - финальный загрузчик: проверяет ядро, сверяет корневой хеш подписанного системного тома (SSV) и передаёт управление XNU.
Параллельно живёт Secure Enclave со своей микроОС (sepOS) и хранит anti-replay значение, чтобы нельзя было откатить систему на старую уязвимую версию.

Ключевое для админа понятие - три уровня безопасности, которые хранятся в LocalPolicy и задаются для каждого установленного тома отдельно:
  • Full Security (полная) - дефолт. Ведёт себя как iOS: грузит только то, что было самым свежим на момент установки. Максимальная защита.
  • Reduced Security (пониженная) - доверяет "глобальным" подписям. Это нужно, чтобы грузить сторонние kext (расширения ядра) и старые версии macOS. Большинство задач с кастомным драйвером требуют именно её.
  • Permissive Security (разрешающая) - как Reduced плюс возможность грузить собственноручно подписанные кастомные ядра XNU. Для разработчиков ядра.
Меняется политика только из recoveryOS, а попадаешь в него на Apple Silicon принципиально иначе, чем на Intel: зажми и держи кнопку питания при включении, пока не появятся "Параметры загрузки". Никаких Cmd+R. Эта же "настоящая" recoveryOS (её зовут 1TR, One True recoveryOS) нужна, чтобы отключить SIP - и сделать это можно только при физическом доступе и с паролем владельца, что и есть смысл всей цепочки доверия.

Инструмент, которым админ читает и правит политику безопасности тома, - bputil:

Код: Выделить всё

sudo bputil -d
# выводит текущую LocalPolicy: уровень безопасности,
# разрешены ли kext, состояние MDM и т.д.
Запускать его осмысленно из 1TR. По умолчанию руками лучше не крутить - понизил безопасность без причины, открыл вектор атаки.

Виртуализация и нативные ARM-образы

Раз процессор - ARM, то и виртуалки на нём гонят arm64-гостей, а не x86. Apple дала фреймворк Virtualization.framework, поверх которого работают UTM, Parallels, VMware Fusion и lima/colima для контейнеров. Хочешь Linux в VM - бери ARM-сборку дистрибутива (arm64/aarch64), x86-образ либо не поедет, либо будет ползти через медленную полную эмуляцию.

Отдельная история 2026 года - нативные Linux-контейнеры. Apple выпустила container - официальный CLI, который гоняет Linux-контейнеры в лёгких VM прямо на Apple Silicon. Образы тоже нужны linux/arm64. Если ты тянешь с Docker Hub мультиархитектурный образ, всё хорошо; если образ собран только под amd64 - готовься к эмуляции через QEMU и просадке скорости. Поэтому в Dockerfile-пайплайнах для смешанного парка закладывай --platform и собирай мультиарх через buildx.

Типичные грабли
  • uname врёт под Rosetta. Внутри транслируемого процесса uname -m = x86_64. Для правды о трансляции - только sysctl.proc_translated.
  • Случайный Rosetta-Homebrew. Перенёс профиль с Intel - и весь brew поехал под эмуляцию в /usr/local. Проверяй which brew, держи /opt/homebrew/bin/brew shellenv.
  • --agree-to-license. Забыл флаг в скрипте установки Rosetta - инсталляция парка зависла на лицензии.
  • Понизил безопасность "на всякий случай". Reduced/Permissive нужны под конкретную задачу (kext, кастомное ядро). Без неё держи Full.
  • x86-образ в VM/контейнере. Тянешь amd64-only образ - получаешь эмуляцию и тормоза. Ищи arm64.
  • Intel-приложения доживают последние дни. macOS 26.4 уже показывает предупреждение, что Intel-софт перестанет работать после ухода Rosetta. Полноценно она поддерживается до macOS 27, дальше - почти всё отвалится. Инвентаризуй парк на предмет x86-only приложений сейчас.
Мини-лаба: повтори руками

Выполни по шагам на своём Mac (на Intel часть про Rosetta просто не сработает - это тоже результат):
  • Узнай железо: uname -m и sysctl -n machdep.cpu.brand_string.
  • Проверь толщину бинаря: file /bin/ls и lipo -archs /bin/ls. Найди слова arm64 и x86_64.
  • Если есть Apple Silicon: поставь Rosetta - softwareupdate --install-rosetta --agree-to-license.
  • Зайди в интеловую оболочку: arch -x86_64 zsh. Внутри выполни uname -m (увидишь x86_64) и sysctl -n sysctl.proc_translated (увидишь 1). Выйди: exit.
  • Сравни Homebrew: which brew и brew config | grep -i rosetta.
  • Прочти политику безопасности тома: sudo bputil -d (или хотя бы посмотри csrutil status).
Контрольные вопросы
  • Почему uname -m показывает x86_64 на Apple Silicon, и какой командой узнать правду о трансляции?
  • В чём практическая разница между Full и Reduced Security в LocalPolicy, и зачем кому-то Reduced?
  • Куда ставится нативный Homebrew на Apple Silicon, куда - интеловый, и почему их два?
  • Как попасть в recoveryOS на Apple Silicon и чем этот способ отличается от Intel?
Итог

Apple Silicon - это не "Intel, только быстрее", а другая архитектура (ARM64), другая память (UMA, не наращивается) и другая модель загрузки (Boot ROM -> LLB -> LocalPolicy -> iBoot вместо EFI/T2). Intel-софт живёт либо как universal binary, либо через rosetta 2, у которой счётчик пошёл: полноценно она с тобой до macOS 27. Запомни три команды-индикатора - uname -m, sysctl.proc_translated и which brew - и ты никогда случайно не окажешься в эмуляции там, где должен лететь нативно.
👍7 ❤️1 🔥1 😄 🤔
Аватара пользователя
urszula
Сообщения: 1
Зарегистрирован: 11 май 2026, 14:42

Re: Apple Silicon: ARM, Rosetta 2 и отличия от Intel

Сообщение urszula »

Спасибо, наконец дошло почему uname -m врёт. Полдня ловил баг что brew ставит x86_64 пакеты, оказалось профиль со старого мака притащил /usr/local в PATH. which brew все показал.
👍1 ❤️ 🔥 😄 🤔1
Аватара пользователя
tycoon26
Сообщения: 1
Зарегистрирован: 11 май 2026, 01:27

Re: Apple Silicon: ARM, Rosetta 2 и отличия от Intel

Сообщение tycoon26 »

А bputil -d безопасно гонять на рабочей машине или лучше только из 1TR смотреть? Боюсь случайно политику сбить, у нас kext для антивируса нужен, там вроде Reduced требуется.
👍1 ❤️ 🔥1 😄 🤔
Ответить
← Предыдущая глава
Архитектура macOS: XNU, тома и Signed System Volume
Следующая глава →
Установка, обновление и восстановление macOS

Все главы курса «macOS для профи: администрирование, терминал и Homebrew»

Поделиться темой: ✈ Telegram VK
Похожие запросы: Apple Silicon: ARM, Rosetta 2Что такое macOS и Unix под капотом

Вернуться в «macOS для профи: администрирование, терминал и Homebrew»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость