Виртуализация: Virtualization.framework, UTM, Linux и Windows

Рейтинг: 70.2% · 15 голосов
Подробный курс по 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

Виртуализация: Virtualization.framework, UTM, Linux и Windows

Сообщение 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 как у профи + куда расти
Рано или поздно одного macOS становится мало. Нужно собрать пакет под Ubuntu, проверить инсталлятор под Windows, погонять CI на чистом гостевом macOS или просто пощупать дистрибутив, не трогая рабочую систему. На Intel-маках это решалось грубой силой - честный гипервизор крутил любую x86-ОС. На Apple Silicon правила поменялись: процессор ARM64, и тут проходит граница между быстрой виртуализацией и медленной эмуляцией. Понимать, где она проходит, важнее, чем знать кнопки в конкретной программе. Этот урок про то, как устроена виртуализация mac в 2026 году: нативный Apple API, готовые обёртки (UTM, Parallels, VMware Fusion, Tart), запуск Linux и Windows на mac, Rosetta внутри Linux-гостя и честный ответ на вопрос когда виртуалка, когда контейнер, а когда вообще ничего.

Главная развилка Apple Silicon: виртуализация против эмуляции

Зафиксируем фундамент, иначе дальше будет каша. Виртуализация - это когда гостевая ОС той же архитектуры, что и хост, исполняет свой код прямо на железе через аппаратный гипервизор. Чип M-серии умеет это для ARM64-гостей, и накладные расходы минимальны - проценты, а не разы. Эмуляция - это когда чужую архитектуру (x86_64) интерпретирует или JIT-транслирует софт. Это медленно: замедление в разы, иногда в десять и более.

Из этого следует всё остальное. На Apple Silicon ты можешь:
  • быстро запускать ARM64-Linux (Ubuntu arm64, Fedora aarch64, Debian arm64) - нативная скорость;
  • быстро запускать Windows 11 on ARM (ARM64-сборка Windows) - нативная скорость;
  • быстро запускать гостевой macOS (тоже ARM64) - нативная скорость;
  • медленно эмулировать x86_64-Linux и x86_64-Windows целиком - через QEMU TCG.
А Intel-маки (последний из них - на macOS 26 Tahoe, дальше только Apple Silicon) умеют обратное: нативно крутят x86-гостей, но не ARM. Запомни лозунг: на M-чипе нативна архитектура ARM, x86 - это всегда эмуляция или специальный трюк под названием Rosetta.

Изображение

Virtualization.framework: нативный фундамент Apple

Под всеми удобными приложениями лежит Apple Virtualization framework (он же VZ, доступен с macOS 11, на Apple Silicon раскрылся полностью). Это высокоуровневый API поверх низкоуровневого Hypervisor.framework. Hypervisor даёт голые примитивы доступа к аппаратной виртуализации; Virtualization.framework собирает из них готовую VM: виртуальные CPU, память, диск, сеть, консоль, проброс папок. Apple официально декларирует две вещи, которые VZ умеет на Apple Silicon: запускать macOS-гостей и запускать Linux-гостей. Windows в список не входит - его VZ официально не поддерживает, и это причина, почему Windows почти всегда идёт через сторонние движки.

Ключевые возможности VZ, которые ты увидишь в любой обёртке:
  • Virtio-устройства - стандартные паравиртуальные диск, сеть, консоль, GPU, entropy. Гость с virtio-драйверами (любой свежий Linux) получает быстрый ввод-вывод;
  • VirtioFS - общая папка между хостом и гостем без SMB/NFS, монтируется как файловая система;
  • Rosetta-устройство - проброс трансляции x86 внутрь Linux-гостя (об этом отдельная секция);
  • лимит на macOS-гостей - лицензия Apple разрешает запускать одновременно не более двух копий гостевого macOS на одном хосте. Это не техническое, а юридическое ограничение, но обёртки его соблюдают.
Сам по себе фреймворк - это код на Swift/Objective-C, голыми руками из терминала его не дёрнешь. Поэтому в реальности ты работаешь либо с GUI-обёрткой (UTM, Parallels), либо с CLI поверх VZ (Tart, vftool, проект Apple-примеров). Проверить, что фреймворк на месте, можно тривиально:

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

$ ls /System/Library/Frameworks/Virtualization.framework
Modules    Resources    Versions    Virtualization
$ sw_vers
ProductName:        macOS
ProductVersion:     26.0
BuildVersion:       25A...
Версия важна: часть фич (например, нюансы проброса GPU и Rosetta) завязана на конкретные релизы. На Tahoe всё актуальное доступно.

Готовые движки: UTM, Parallels, VMware Fusion, Tart

Теперь по инструментам, потому что выбор тут не вкусовщина, а следствие задачи.

UTM - бесплатный опенсорс, GUI поверх двух движков сразу. Это его суперсила и источник путаницы. UTM mac умеет работать в двух режимах:
  • Apple Virtualization (VZ) - быстрый нативный режим для ARM64-Linux и macOS-гостей;
  • QEMU - универсальный режим, где QEMU использует Hypervisor.framework для ARM-нативной скорости ИЛИ чистую эмуляцию TCG для чужой архитектуры (x86 на ARM и наоборот).
То есть в UTM ты можешь и быстро гонять Ubuntu arm64, и медленно эмулировать целиком x86-Windows - выбор движка определяет, попадёшь ты в нативную скорость или в эмуляцию. Скачивать UTM лучше с getutm.app или собирать из исходников; версия из Mac App Store платная и идентична бесплатной (это донат разработчику). Через Homebrew:

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

$ brew install --cask utm
==> Installing Cask utm
==> Moving App 'UTM.app' to '/Applications/UTM.app'
utm was successfully installed!
Parallels Desktop - коммерческий, по подписке, самый гладкий путь для Windows на mac. Под капотом - собственный гипервизор Parallels (не QEMU). Скачивает и ставит Windows 11 on ARM практически в один клик, даёт буфер обмена, drag-and-drop, общие папки, Coherence-режим (окна Windows-приложений на рабочем столе macOS). Для бизнес-парка и людей, которым Windows нужен ежедневно ради Office/Teams/1С, это рабочая лошадь. Ставится тоже каской: brew install --cask parallels.

VMware Fusion - после изменения политики Broadcom бесплатен для личного использования (и коммерческого тоже, без отдельной лицензии для базовой редакции). Зрелый, привычный админам VMware, на Apple Silicon крутит ARM-гостей через свой гипервизор. Хорош, если у тебя уже экосистема VMware и нужен знакомый формат.

Tart - CLI-инструмент от Cirrus Labs поверх Virtualization.framework, заточенный под CI и автоматизацию. Никакого GUI: ты тянешь готовый образ macOS или Linux из OCI-реестра (как Docker-образ), клонируешь и запускаешь. Это де-факто стандарт для сборок iOS/macOS на ферме маков.

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

$ brew install cirruslabs/cli/tart
$ tart clone ghcr.io/cirruslabs/macos-sequoia-base:latest seq
$ tart run seq
Tart соблюдает лимит в две macOS-VM и пушит/пуллит образы в любой OCI-совместимый реестр - отсюда удобство в конвейерах.

Сводка выбора движка:
  • разработка под ARM-Linux, эксперименты, бесплатно - UTM (VZ-режим) или Tart;
  • Windows на mac каждый день, нужен комфорт - Parallels;
  • привычный VMware, личное использование - VMware Fusion;
  • CI, фермы, автоматика, образы как код - Tart;
  • надо именно эмулировать x86-ОС целиком - UTM в режиме QEMU (и терпение).
Windows на mac: ARM-сборка и эмуляция x86-приложений

Тут больше всего мифов. На Apple Silicon ты ставишь не привычный x86-Windows, а Windows 11 on ARM - официальную ARM64-редакцию Microsoft. Она ставится в Parallels автоматически, в UTM - вручную (берёшь ARM64-образ Windows, создаёшь VM в VZ или QEMU-ARM режиме). Эта ARM-Windows на M-чипе летает почти как родная.

Дальше двухслойная трансляция, и её надо понимать, иначе ожидания разойдутся с реальностью. Внутри ARM-Windows есть собственный эмулятор от Microsoft, который на лету транслирует x86 и x86_64 Windows-приложения в ARM64. То есть твой старый x64-инсталлятор запустится - но через прослойку трансляции Windows, со своей просадкой. Получается стек: Mac (ARM-железо) -> гипервизор -> Windows on ARM (нативно) -> эмулятор x86 внутри Windows (для старого софта). Это работает для массы приложений, но тяжёлые x86-программы и особенно игры с античитами или специфичными драйверами могут не пойти.

Альтернатива - эмулировать x86-Windows целиком через QEMU в UTM. Тогда транслируется всё, включая ядро ОС, и скорость падает в разы: для разовой проверки сойдёт, для работы - нет. Практический вывод: на mac в 2026 правильный Windows - это ARM-сборка, а совместимость со старым x86-софтом закрывается встроенным эмулятором Windows, а не эмуляцией всей машины.

Rosetta внутри Linux-VM: x86-бинари без тормозов

Самая недооценённая фича. Rosetta 2 ты знаешь как транслятор x86-приложений macOS. Но Apple разрешает пробросить Rosetta внутрь Linux-гостя через Virtualization.framework. Результат почти магический: ARM64-ядро Linux, но x86_64-бинари в нём исполняются с близкой к нативной скоростью, потому что их транслирует не QEMU, а Rosetta - тот самый быстрый Apple-транслятор.

Зачем это нужно: ты на M-чипе, а тебе надо собрать или запустить x86_64-докер-образ, который не имеет ARM-сборки, или прогнать legacy x86-бинарь. Без Rosetta это эмуляция QEMU (медленно). С Rosetta - быстрая трансляция.

Как это выглядит в Linux-госте. Хост (через UTM в VZ-режиме или Tart) пробрасывает Rosetta как virtiofs-устройство с тегом rosetta. В гостевом Linux ты монтируешь его и регистрируешь как обработчик x86-бинарей через binfmt_misc:

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

# внутри Linux-гостя: монтируем проброшенную Rosetta
$ sudo mkdir -p /media/rosetta
$ sudo mount -t virtiofs rosetta /media/rosetta

# регистрируем как интерпретатор для x86_64-ELF
$ echo ':rosetta:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00:\xff\xff\xff\xff\xff\xfe\xfe\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/media/rosetta/rosetta:OCF' \
  | sudo tee /proc/sys/fs/binfmt_misc/register
После этого проверка показывает суть фокуса - ядро ARM, но x86-исполняемый код идёт:

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

$ uname -m
aarch64
$ file ./hello-x86
./hello-x86: ELF 64-bit LSB executable, x86-64 ...
$ ./hello-x86
Hello from x86_64 on ARM via Rosetta!
Здесь uname показывает aarch64 (ядро ARM), а x86_64-бинарь всё равно запустился - его подхватил Rosetta. Для Docker это разворачивается в возможность гонять x86-образы на M-чипе быстрее, чем через стандартный QEMU-binfmt. Тонкость: для максимума скорости в кастомном ядре включают поддержку модели памяти TSO (Total Store Ordering) - Apple это явно рекомендует, потому что x86 строже к порядку записей в память, чем ARM, и без TSO Rosetta вынуждена расставлять барьеры.

Когда VM, когда контейнер, когда нативно

Не каждую задачу надо решать виртуалкой. Иерархия по весу:
  • Нативно - если софт есть под macOS (через Homebrew, .app, бинарь arm64). Ноль накладных расходов. Сначала всегда проверяй, нет ли нативной версии;
  • Контейнер - если нужна изоляция окружения и Linux-userspace, но не другое ядро как самоцель. Docker Desktop, OrbStack или нативный Apple container CLI (нативные Linux-контейнеры на Apple Silicon, появились в 2025). Контейнер легче VM: общее ядро (точнее - одно лёгкое Linux-ядро на все контейнеры), секунды на старт, мало памяти. Идеально для разработки и CI сервисов;
  • Виртуалка - когда нужно именно другое ядро или другая ОС целиком: тестировать инсталлятор Windows, дёргать модули ядра Linux, держать гостевой macOS под CI, проверять поведение под конкретным дистрибутивом с его ядром. VM тяжелее: гигабайты памяти, десятки секунд на загрузку, полноценная ОС внутри.
Правило большого пальца: нужна программа - ставь нативно; нужна Linux-среда для сервисов и сборок - контейнер; нужна целая чужая ОС или своё ядро - виртуалка.

Типичные грабли
  • Ставят x86-Windows на M-чип и удивляются тормозам. На Apple Silicon бери Windows 11 on ARM, а не x64-образ. x86 целиком - это эмуляция;
  • Путают режимы UTM. Создал Linux-VM в QEMU-эмуляции вместо Apple Virtualization - и получил эмуляцию там, где могла быть нативная скорость. Для ARM-гостя выбирай VZ-режим;
  • Ждут x86-Linux-гостя нативно. Его нет: либо медленный QEMU TCG для всей машины, либо ARM-гость с Rosetta для отдельных x86-бинарей. Это разные вещи;
  • Забывают про лимит двух macOS-гостей. Третий не стартует - это лицензия Apple, а не баг;
  • Качают UTM из App Store и думают, что переплатили. Версия идентична бесплатной с getutm.app, оплата - это поддержка проекта;
  • Rosetta в Linux без TSO. Работает, но медленнее, чем могла бы; на кастомных ядрах включают TSO;
  • Мало ресурсов гостю. Дал VM 2 ГБ и одно ядро - получил тормоза не из-за виртуализации, а из-за голодания. Apple Silicon с единой памятью щедро делится, не жмись.
Мини-лаба: руками за 20 минут
  • Поставь UTM каской: brew install --cask utm и убедись, что приложение в /Applications;
  • Скачай ARM64-образ свежей Ubuntu Server (aarch64). В UTM создай VM в режиме Apple Virtualization (Virtualize, не Emulate), дай ей 4 ГБ и 4 ядра, подцепи ISO, поставь систему;
  • После установки внутри гостя выполни uname -m - убедись, что aarch64, и замерь, насколько быстро грузится система (это нативная скорость);
  • Поставь Tart: brew install cirruslabs/cli/tart, склонируй базовый Linux-образ и запусти tart run - сравни путь через CLI с GUI UTM;
  • (Продвинуто) В Ubuntu-госте смонтируй проброшенную Rosetta через virtiofs, зарегистрируй binfmt_misc и запусти любой x86_64-бинарь. Сравни время с тем же бинарём под чистой QEMU-эмуляцией;
  • Для контраста создай в UTM вторую VM в режиме Emulate с x86_64 и загрузись в неё - почувствуй разницу в скорости своими руками.
Контрольные вопросы
  • Почему ARM64-Linux на M-чипе работает быстро, а x86_64-Linux целиком - медленно? В чём разница между виртуализацией и эмуляцией?
  • Поддерживает ли Virtualization.framework официально запуск Windows? Через что тогда обычно идёт Windows на mac и какую редакцию ты ставишь?
  • Как Rosetta помогает внутри Linux-VM и почему это быстрее, чем QEMU? Что показывает uname -m в таком госте и почему x86-бинарь всё равно запускается?
  • Дана задача - запустить Linux-сервис для разработки. Когда хватит контейнера, а когда нужна полноценная VM?
Итог

На Apple Silicon вся виртуализация mac крутится вокруг одной границы: ARM нативен и быстр, x86 - всегда трансляция. Virtualization.framework даёт нативный фундамент для Linux и macOS-гостей, а UTM, Parallels, VMware Fusion и Tart - разные двери к нему под разные задачи. Windows ставится ARM-сборкой, старый x86-софт внутри неё тянет встроенный эмулятор Windows. Rosetta пробрасывается в Linux-гость и даёт быстрые x86-бинари на ARM-ядре. И главное: прежде чем поднимать виртуалку, спроси себя - может, хватит контейнера или вообще нативной программы.
👍3 ❤️2 🔥3 😄 🤔1
Аватара пользователя
marcusw
Сообщения: 1
Зарегистрирован: 22 май 2026, 07:24

Re: Виртуализация: Virtualization.framework, UTM, Linux и Windows

Сообщение marcusw »

Сидел на Intel-маке, всё ставил через Fusion и не парился. Пересел на M3 - и до этого урока вообще не понимал, почему мой старый x86-образ Windows еле ползёт. Теперь дошло: надо ARM-сборку брать. Спасибо, разложил по полкам.
👍 ❤️ 🔥1 😄 🤔2
Аватара пользователя
torch_hacker
Сообщения: 1
Зарегистрирован: 18 май 2026, 22:09

Re: Виртуализация: Virtualization.framework, UTM, Linux и Windows

Сообщение torch_hacker »

А Rosetta в Linux-госте реально работает с докером? Хочу собирать x86_64 образы на M2 без адских тормозов QEMU. binfmt вручную регистрировать каждый раз или есть способ сделать постоянно через systemd?
👍2 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Контейнеры на Mac: Docker Desktop, OrbStack, Apple container
Следующая глава →
Режимы загрузки и восстановление (Apple Silicon)

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

Поделиться темой: ✈ Telegram VK
Похожие запросы: Контейнеры и виртуализация на MacСреда разработчика на MacApple Silicon: ARM, Rosetta 2

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

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

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