Что такое macOS: Unix под капотом и место в 2026

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

Что такое macOS: Unix под капотом и место в 2026

Сообщение 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 внутри

Ты открываешь Терминал на Маке, набираешь ls, потом cat, потом grep - и всё работает почти как на сервере с Linux. Почти. А потом ты копируешь рабочую команду с Linux-сервера, она падает с непонятной ошибкой, и ты час споришь с sed, который не понимает -i без аргумента. Или пишешь скрипт, который должен стартовать при логине, тянешься за crontab - а оно как-то не так живёт. Корень всех этих мелких подстав один: macOS - это Unix, но не Linux. Совсем другая родословная, своя структура каталогов, свой механизм автозапуска, своя упаковка приложений.

Этот вводный урок - карта местности. Прежде чем мы нырнём в defaults, launchctl, diskutil и Homebrew в следующих главах, надо разложить по полочкам: что такое macos на уровне ядра, почему mac os честно носит имя UNIX, чем он отличается от Linux и Windows, и где мы сейчас оказались по версиям в 2026 году. Без этого фундамента ты будешь зубрить команды, не понимая, почему они такие. С ним - начнёшь предсказывать поведение системы, а это и есть разница между пользователем и админом.

Курс рассчитан на тех, кто уже не боится консоли: разработчиков, сисадминов, Mac-админов парка машин и продвинутых пользователей, которые хотят управлять Маком, а не молиться на него. Новичка мы за борт не выкинем - сложное объясним на пальцах, но и до детского сада упрощать не будем.

Изображение

Darwin и ядро XNU: что реально крутится под капотом

Когда говорят macOS, обычно имеют в виду красивый графический слой: Finder, Dock, окна, анимации. Но всё это - надстройка. В самом низу лежит Darwin - открытое (в значительной части) ядро операционной системы вместе с базовым набором системных утилит. Darwin - это то, что Apple публикует в исходниках и что технически роднит Мак с настоящими Unix-системами.

Сердце Darwin - ядро XNU. Название расшифровывают как "X is Not Unix", и это гибридное ядро, собранное из трёх кусков:
  • Mach - микроядерная основа из университета Карнеги-Меллона. Отвечает за низкоуровневое: межпроцессное взаимодействие (IPC), задачи и потоки, управление виртуальной памятью, диспетчеризацию. Это тот слой, через который порты Mach передают сообщения между процессами.
  • BSD - большой пласт кода из линии 4.3BSD/FreeBSD поверх Mach. Именно он даёт POSIX-совместимость: системные вызовы Unix, сетевой стек, виртуальную файловую систему (VFS), управление процессами, модель безопасности (права POSIX, ACL, MAC-фреймворк). Когда твоя программа делает fork() или open(), она разговаривает с этим BSD-слоем.
  • IOKit - объектно-ориентированный фреймворк драйверов на C++. Плата за устройства, питание, plug-and-play.
Вот почему ядро называют гибридным: микроядерный Mach внутри, но монолитный BSD рядом, в том же адресном пространстве, ради скорости. Проверь сам, что под капотом именно Darwin и XNU:

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

$ uname -a
Darwin MacBook-Pro.local 25.5.0 Darwin Kernel Version 25.5.0: Mon Apr 27 20:41:15 PDT 2026; root:xnu-12377.121.6~2/RELEASE_ARM64_T6041 arm64
Разбираем построчно, потому что в этой одной строке - половина урока:
  • Darwin - имя ядра ОС. Не "macOS", а именно Darwin. Это и есть Unix-фундамент.
  • 25.5.0 - версия ядра Darwin. Она НЕ совпадает с версией macOS. Darwin 25.x соответствует macOS 26 Tahoe. Историческое смещение: Darwin 1.x был ещё в Mac OS X 10.0, и нумерации с тех пор разъехались.
  • xnu-12377... - билд того самого ядра XNU.
  • RELEASE_ARM64_T6041 и в конце arm64 - это Apple Silicon. T6041 - кодовое обозначение чипа. На старом Intel-Маке тут было бы x86_64.
UNIX по сертификату, а не на словах

Тут принципиальный момент, который многие путают. Linux - это Unix-подобная система: он ведёт себя как Unix, следует POSIX, но юридически Unix-ом не является и сертификат The Open Group не получал. А macOS - это сертифицированный UNIX. Apple прогоняет систему через формальную проверку The Open Group на соответствие Single UNIX Specification (UNIX 03) и имеет право легально печатать на коробке слово UNIX. Так с середины 2000-х (начиная с Mac OS X 10.5 Leopard, а заявка на соответствие шла ещё с Tiger), и Tahoe эту линию продолжает.

Почему сертификация вообще возможна - смотри предыдущий раздел: BSD-слой внутри XNU честно предоставляет POSIX-интерфейсы. Сохранить этот BSD-кусок рабочим - и есть ключ к званию UNIX.

Практический вывод не философский, а очень конкретный. macOS - это BSD-родословная, а большинство серверов и контейнеров вокруг тебя - это GNU/Linux. И базовые утилиты у них разные по происхождению:
  • ls, sed, find, grep, awk на Маке - это BSD-версии, а на типичном Linux - GNU-версии. Флаги и поведение отличаются.
  • Классический пример: GNU sed правит файл на месте как sed -i, а BSD sed на Маке требует аргумент суффикса бэкапа - sed -i ''. Скопировал команду с сервера - получил ошибку.
  • BSD date, BSD stat, BSD readlink тоже капризничают по-своему.
Решение известно и мы к нему вернёмся в главе про Homebrew: ставишь GNU-утилиты (coreutils, gnu-sed, gawk, findutils) пакетным менеджером и при желании подменяешь ими стандартные. Но сначала надо понимать, ПОЧЕМУ они вообще другие - вот сейчас понимаешь.

launchd вместо systemd и cron: своя система запуска

Ещё одно фундаментальное расхождение с Linux. На Линуксе первый процесс (PID 1) и менеджер служб - обычно systemd, а отложенные задачи - cron. На Маке всё это делает один демон - launchd. Он же PID 1, он же стартует при загрузке, он же запускает и перезапускает службы, он же таймеры и задачи по расписанию.

Убедись, что PID 1 - это launchd:

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

$ ps -p 1 -o pid,comm
  PID COMM
    1 /sbin/launchd
Управляешь им через launchctl, а конфигурация служб - это не unit-файлы, а property list (plist) в строго определённых каталогах:
  • /System/Library/LaunchDaemons и /System/Library/LaunchAgents - системные, трогать нельзя (туда даже root по умолчанию не пишет из-за защиты целостности).
  • /Library/LaunchDaemons - твои общесистемные службы (работают от root, без привязки к залогиненному юзеру).
  • /Library/LaunchAgents и ~/Library/LaunchAgents - агенты, которые стартуют в контексте пользовательской сессии.
Daemon против Agent - это не синонимы: daemon крутится в фоне без пользователя (например, при загрузке до логина), agent живёт внутри сессии конкретного юзера и имеет доступ к его графическому окружению. Посмотреть живой список служемся так:

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

$ launchctl list | head -5
PID	Status	Label
-	0	com.apple.SafariHistoryServiceAgent
892	0	com.apple.Spotlight
-	0	com.apple.AirPlayUIAgent
Колонка PID: число - служба сейчас запущена, прочерк - загружена, но не работает прямо сейчас (ждёт триггер). Status 0 - последний выход без ошибки. Целую отдельную главу мы посвятим тому, как написать свой LaunchAgent и не нарваться на грабли, но запомни базовый принцип: на Маке за автозапуск отвечает launchd, а не cron и не systemd.

.app-бандлы: приложение - это папка

В Windows программа - это .exe плюс ворох DLL в Program Files и записи в реестре. В Linux исполняемый файл в /usr/bin, конфиги в /etc, данные в /usr/share - всё размазано. На macOS приложение - это бандл: специально устроенная директория с расширением .app, которая в Finder выглядит как единый объект, но внутри - целая структура.

Загляни внутрь любого приложения через Терминал (в Finder это пункт "Показать содержимое пакета"):

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

$ ls /Applications/Safari.app/Contents
Info.plist	MacOS		Resources	_CodeSignature	version.plist
  • Info.plist - манифест: идентификатор (bundle ID вроде com.apple.Safari), версия, какие файлы открывает, какие нужны права.
  • MacOS/ - собственно исполняемый бинарник.
  • Resources/ - иконки, локализации, ресурсы.
  • _CodeSignature/ - цифровая подпись. macOS проверяет её через Gatekeeper, прежде чем дать запуститься.
Отсюда вытекает фирменная установка перетаскиванием: ты тащишь .app в /Applications - и всё, приложение "установлено", потому что внутри бандла лежит всё нужное. Удаление - перетащил в Корзину (хвосты в ~/Library остаются, но это отдельный разговор). Это и удобно, и иногда коварно: подпись и нотаризация бандла - часть модели безопасности, которую мы разберём в блоке про Gatekeeper и spctl.

Версии и имена в 2026: Tahoe, год-нумерация, конец эпохи Intel

Раньше macOS нумеровали как 10.13, 10.14, 10.15, потом 11, 12, 13, 14, 15 и давали имена калифорнийских мест: Ventura, Sonoma, Sequoia. В 2025 Apple переключилась на год-ориентированную нумерацию, как у iOS. Поэтому текущая система - это macos tahoe, официально macOS 26. Цифра 26 - это привязка к сезону 2025-2026, а не 26-й мажорный релиз подряд. Вышла Tahoe в сентябре 2025.

Проверь, что у тебя именно она:

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

$ sw_vers
ProductName:		macOS
ProductVersion:		26.5.1
BuildVersion:		25F80
ProductVersion 26.x - это Tahoe. BuildVersion (25F80) - точный билд, по нему различают конкретные обновления и беты; админам парка он важнее маркетингового номера.

Теперь главное событие для всех, кто держит парк Маков. macOS 26 Tahoe - последняя версия с поддержкой процессоров Intel. Список Intel-моделей, которые ещё тянут Tahoe, урезан до считанных штук (Mac Pro 2019, 16" MacBook Pro 2019, 13" MacBook Pro 2020 с четырьмя портами, iMac 27" 2020). Следующий мажорный релиз (ожидается анонс на WWDC 2026, выход - осенью) будет требовать только apple silicon. Intel-Маки после Tahoe ещё какое-то время получат security-обновления, но эпоха больших ежегодных апгрейдов для них закрылась.

Почему это важно практически:
  • Если ты Mac-админ - планируй обновление парка на Apple Silicon до WWDC 2026, иначе застрянешь на Tahoe навсегда.
  • Apple Silicon (чипы M-серии) - это ARM-архитектура. Старые Intel-бинарники (x86_64) запускаются через прослойку трансляции Rosetta 2, но это совместимость, а не норма. Нативное всё чаще только под arm64.
  • Homebrew на Apple Silicon живёт в /opt/homebrew, а на Intel жил в /usr/local. Это та самая мелочь, на которой спотыкаются скрипты и PATH. Проверить процессор просто:

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

$ uname -m
arm64
arm64 - Apple Silicon, /opt/homebrew. x86_64 - Intel, /usr/local. Запомни накрепко: половина проблем с путями в скриптах на Маке родом отсюда.

Где искать правду: официальная документация Apple

Не верь случайным блогам и форумным копипастам - команды и флаги меняются между версиями. Первоисточники:
  • support.apple.com - пользовательская и админская справка, поддержка и совместимость.
  • support.apple.com/guide/deployment - Apple Platform Deployment, библия для админов парка: MDM, Declarative Device Management, развёртывание.
  • developer.apple.com - документация для разработчиков, фреймворки, man-страницы инструментов.
  • Для пакетов: brew.sh и docs.brew.sh - официальный Homebrew.
И прямо в системе у тебя есть man: man launchctl, man defaults, man csrutil - читай BSD-шные man-страницы, они точны для твоей версии.

Типичные грабли новичка на macOS
  • Копируешь команды с Linux вслепую. BSD-утилиты не GNU. sed -i, date -d, readlink -f ведут себя иначе или вообще не существуют. Сначала man, потом Enter.
  • Путаешь версию ядра и версию macOS. uname -r покажет 25.x (Darwin), а это Tahoe (macOS 26). Не пугайся расхождения.
  • Ищешь crontab для автозапуска. cron формально есть, но правильный путь на Маке - launchd и plist. Скрипты в cron часто не получают нужного окружения и прав (TCC).
  • Ставишь Homebrew не туда. На Apple Silicon - /opt/homebrew. Гайды из 2018 года тянут /usr/local и ломают PATH.
  • Лезешь писать в /System. Защита целостности (SIP) не даст даже root. Это не баг, это by design - подробно в главе про csrutil.
Мини-лаба: познакомься со своим Маком

Открой Терминал и пройди по шагам, читая вывод осмысленно, а не просто копируя:
  • 1.

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

    uname -a
    - найди в строке: имя ядра (Darwin), версию ядра, arm64 или x86_64. Запиши, какая у тебя архитектура.
  • 2. - убедись, что ProductVersion начинается на 26 (Tahoe). Запомни BuildVersion.
  • 3.

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

    ps -p 1 -o pid,comm
    - убедись, что PID 1 - это launchd.
  • 4.

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

    launchctl list | head
    - посмотри, какие службы крутятся; найди строку с числовым PID и строку с прочерком, объясни себе разницу.
  • 5.

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

    ls /Applications/Safari.app/Contents
    - загляни внутрь бандла, найди Info.plist и папку MacOS.
  • 6.

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

    echo $SHELL
    - убедись, что по умолчанию zsh (/bin/zsh), а не bash. Это тоже отличие современного macOS.
Если архитектура arm64 - проверь заодно, лежит ли brew в /opt/homebrew/bin (если Homebrew уже стоит). Это закрепит связь "Apple Silicon -> /opt/homebrew".

Контрольные вопросы
  • 1. Почему macOS - это сертифицированный UNIX, а Linux - только Unix-подобная система? Что внутри XNU обеспечивает POSIX-совместимость?
  • 2. Чем daemon отличается от agent в терминах launchd и в каких каталогах они лежат? Почему на Маке для автозапуска используют launchd, а не cron?
  • 3. Команда uname -r выдала 25.5.0. Какая это версия macOS по маркетинговому имени и номеру, и почему числа не совпадают?
  • 4. Ты на чипе M-серии. В каком каталоге должен жить Homebrew и почему он отличается от Intel-машины? Что значит arm64 в выводе uname -m?
Итог

macOS - это не "красивый Linux" и не "Unix-образный Windows". Это сертифицированный UNIX на ядре XNU внутри системы Darwin: микроядро Mach плюс BSD-слой (отсюда POSIX и звание UNIX) плюс IOKit. От Linux его отличают BSD-родословная утилит, launchd вместо systemd и cron, и .app-бандлы вместо разбросанных файлов. В 2026 мы на macOS 26 Tahoe - последней версии с Intel; дальше только Apple Silicon, а значит Homebrew в /opt/homebrew и нативный arm64. Дальше по курсу мы возьмём каждый из этих кирпичей - defaults, launchctl, diskutil, fdesetup, csrutil, spctl, brew - и научимся реально управлять Маком. Фундамент заложен.
👍3 ❤️1 🔥 😄 🤔1
Аватара пользователя
cudalover
Сообщения: 1
Зарегистрирован: 12 май 2026, 01:36

Re: Что такое macOS: Unix под капотом и место в 2026

Сообщение cudalover »

Вот теперь дошло, почему sed -i у меня всегда ругался при копировании команд с прода. Думал руки кривые, а это BSD против GNU. Спасибо, реально глаза открыли.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
wasm_user
Сообщения: 1
Зарегистрирован: 23 май 2026, 04:26

Re: Что такое macOS: Unix под капотом и место в 2026

Сообщение wasm_user »

Вопрос про нумерацию: если уже подключил Tahoe и uname -r даёт Darwin 25, то получается на следующий год будет macOS 27 и Darwin 26? И правильно понимаю, что мой Intel iMac апгрейды дальше не получит, только security-патчи?
👍2 ❤️ 🔥 😄 🤔1
Ответить
Следующая глава →
Архитектура macOS: XNU, тома и Signed System Volume

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

Поделиться темой: ✈ Telegram VK
Похожие запросы: Что такое macOS и Unix под капотомЧто такое Git и зачем нужен контроль версий

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

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

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