Перейти к основному содержимому

macOS

Разработчику Архитектору Инженеру

macOS

macOS – проприетарная ОС, разработанная Apple Inc., предназначенная для компьютеров Macintosh (Mac). Она основана на Darwin, который, в свою очередь, является производным от Unix-подобной системы BSD и ядра XNU. Это полноценная система с мощными инструментами, которая сочетает удобство использования с высокой надёжностью и безопасностью.


Компоненты macOS

Основные компоненты macOS:

  • Ядро (XNU) – управляет взаимодействием с оборудованием;
  • UNIX Layer – слой BSD, реализующий стандарты POSIX;
  • Cocoa / AppKit / SwiftUI – фреймворки для GUI-приложений;
  • Finder – файловый менеджер и оболочка;
  • Launchd / System Settings – запуск и управление службами;
  • Файловая система APFS;
  • Средства командной строки (bash, zsh, Terminal.app).

1. Ядро

Ядро macOS (XNU) – гибридное ядро, сочетающее элементы монолитного ядра и микроядра. Оно поддерживает программную защиту памяти (PAC), ASLR, SMEP и другие технологии безопасности и используется также в iOS, iPadOS, watchOS, tvOS – других устройствах Apple.

Компоненты XNU:

  • Mach – микроядро, отвечает за управление памятью и IPC (межпроцессное взаимодействие);
  • BSD Subsystem – реализация UNIX API, процессы, файловые системы, сетевые протоколы;
  • I/O Kit – объектно-ориентированная библиотека для драйверов устройств (на C++).

2. Эксклюзивная архитектура

Эксклюзивность. macOS выпускается только для оборудования Apple. Каждый выпуск получает собственное имя и номер версии, к примеру, 14 Sonoma. Apple регулярно прекращает поддержку старых версий, поэтому пользователям важно обновляться. К сожалению, исходя из политики Apple, работа там ведётся для своей экосистемы, поэтому и разработка, тестирование производится на устройствах этой компании.


3. Среда и ПО

Среда и ключевое ПО, службы.

Графическая среда:

  • Aqua UI – фирменный интерфейс macOS;
  • Finder – главный файловый менеджер;
  • Dock – панель запуска программ;
  • Mission Control – управление окнами и рабочими столами.

Интеграция с Apple экосистемой:

  • iCloud – синхронизация данных;
  • AirDrop, Handoff, Universal Clipboard;
  • Continouity Camera – использование iPhone как веб-камеры.

Ключевые приложения:

  • Safari – браузер по умолчанию;
  • Mail, Messages, Calendar;
  • Photos, GarageBand, iWork Suite (Pages, Numbers, Keynote);
  • Final Cut Pro, Logic Pro – профессиональные приложения.

Службы:

  • launchd – система запуска и управления процессами (заменяет init и systemd);
  • systemsettingsd – управление системными настройками.

4. Инструменты

Полезные инструменты macOS

Стандартные CLI-инструменты:

  • Terminal.app – терминал macOS;
  • top / htop (brew) - Мониторинг процессов;
  • df / du - Информация о диске;
  • ls / cp / mv / rm - Работа с файлами;
  • grep / sed / awk - Обработка текста;
  • curl / wget (brew) - Загрузка из интернета;
  • ssh / scp / rsync - Удалённый доступ;
  • networksetup / ifconfig - Сетевые настройки;
  • pmset - Настройка энергопитания;
  • osascript - Выполнение AppleScript скриптов.

Homebrew – пакетный менеджер.


5. Сеть

Работа с сетью в macOS выполняется через:

  • System Preferences – Network – графический интерфейс;
  • networksetup – CLI-инструмент;
  • Wi-Fi Diagnostics (Option + клик по значку Wi-Fi) – углублённая диагностика.

Пример:

ifconfig                     # информация о сетевых интерфейсах
ipconfig getpacket en0 # получить DHCP-ответ
ping google.com # проверка соединения
traceroute google.com # маршрут до сервера
netstat -tuln # активные порты
dig example.com # DNS-запросы
arp -a # таблица ARP


Файловая система и структура каталогов macOS

Файловая система macOS основана на ядре Darwin, которое объединяет компоненты FreeBSD и Mach. В качестве основной файловой системы используется APFS (Apple File System), введённая в 2017 году для замены HFS+. Структура каталогов macOS частично соответствует стандарту POSIX и наследует традиции Unix, но содержит уникальные элементы, характерные только для экосистемы Apple.

В отличие от Windows, macOS использует единое корневое дерево с корнем /, как в Linux. Однако организация системных и пользовательских данных имеет свои особенности, обусловленные требованиями безопасности, песочницей приложений и интеграцией с облачными сервисами iCloud.

/ — корневой каталог

Корень файловой системы содержит все остальные каталоги. Даже если подключены внешние диски или сетевые тома, они монтируются внутрь этого дерева (обычно в /Volumes).

/System — защищённые системные компоненты

Начиная с macOS Catalina (10.15), раздел /System стал частью отдельного read-only тома под названием System Volume. Это сделано для повышения безопасности и целостности ОС. Каталог содержит:

  • /System/Library — системные фреймворки, расширения, шрифты, звуки;
  • /System/Applications — предустановленные приложения Apple (в более новых версиях);
  • /System/DriverKit — драйверы нового поколения (начиная с macOS 10.15).

Запись в этот каталог невозможна даже для пользователя root без отключения защиты System Integrity Protection (SIP).

/usr — пользовательские ресурсы и утилиты

Несмотря на название (Unix System Resources), каталог /usr в macOS содержит важнейшие системные компоненты:

  • /usr/bin — стандартные команды: ls, grep, python3, git;
  • /usr/lib — системные библиотеки;
  • /usr/sbin — административные утилиты: system_profiler, networksetup;
  • /usr/local — место для программ, установленных пользователем (например, через Homebrew).

Каталог /usr также защищён SIP в современных версиях macOS.

/bin и /sbin — базовые исполняемые файлы

Эти каталоги содержат минимальный набор утилит, необходимых для загрузки и восстановления системы:

  • /bin: sh, cp, mv, rm, chmod;
  • /sbin: mount, reboot, fsck.

На практике многие из этих файлов являются символическими ссылками на соответствующие утилиты в /usr/bin и /usr/sbin.

/etc — конфигурационные файлы

Хранит системные настройки:

  • /etc/hosts — локальное сопоставление имён и IP;
  • /etc/passwd, /etc/group — информация о пользователях и группах (в основном для совместимости);
  • /etc/sudoers — правила привилегий sudo.

В macOS значительная часть конфигураций управляется не через текстовые файлы, а через plist-файлы (Property List) и команду defaults.

/var — переменные данные

Содержит файлы, изменяющиеся во время работы системы:

  • /var/log — системные журналы: system.log, install.log;
  • /var/run — PID-файлы и сокеты;
  • /var/db — локальные базы данных, включая dslocal (локальный каталог Open Directory).

/tmp — временные файлы

Используется для хранения временных данных. Содержимое очищается при перезагрузке. Также существует /private/tmp, на который /tmp часто ссылается через символическую ссылку.

/Applications — установленные приложения

Основной каталог для графических приложений. Каждое приложение в macOS представляет собой bundle — специальный каталог с расширением .app, содержащий исполняемый файл, ресурсы, библиотеки и метаданные. Пример:

/Applications/Safari.app/
├── Contents/
│ ├── MacOS/Safari
│ ├── Resources/
│ └── Info.plist

Пользователи могут устанавливать приложения сюда (требуются права администратора) или в свой локальный каталог ~/Applications.

/Library — общесистемные ресурсы

Хранит данные, общие для всех пользователей:

  • /Library/Application Support — данные программ;
  • /Library/Preferences — глобальные настройки (plist-файлы);
  • /Library/LaunchDaemons — системные фоновые службы;
  • /Library/Fonts — шрифты, доступные всем пользователям.

/Users — домашние каталоги пользователей

Каждый пользователь имеет свой подкаталог вида /Users/username. Внутри него:

~/Desktop, ~/Documents, ~/Downloads

Стандартные папки для рабочего стола, документов и загрузок.

~/Library — пользовательские данные и настройки

Скрытый каталог (по умолчанию не отображается в Finder), содержащий:

  • ~/Library/Application Support — данные приложений;
  • ~/Library/Preferences — пользовательские настройки (plist-файлы);
  • ~/Library/Caches — кэш;
  • ~/Library/Containers — изолированные среды для приложений из App Store (песочница).

Песочница ограничивает доступ приложений только к своим подкаталогам в Containers, что повышает безопасность.

~/Movies, ~/Music, ~/Pictures

Медиафайлы пользователя, интегрированные с приложениями Photos, Music и QuickTime.

/Volumes — точки монтирования

Все подключённые тома — внутренние диски, USB-накопители, сетевые шары — монтируются как подкаталоги в /Volumes. Например:

  • /Volumes/Macintosh HD — основной системный диск;
  • /Volumes/MyUSB — флеш-накопитель.

/private — служебные каталоги

Содержит «реальные» реализации некоторых виртуальных путей:

  • /private/etc/etc;
  • /private/var/var;
  • /private/tmp/tmp.

Это сделано для совместимости с Unix-стандартами.

/opt — дополнительное ПО

Используется некоторыми установщиками (например, MacPorts) для размещения стороннего программного обеспечения. Не используется по умолчанию.

/cores — дампы памяти

При аварийном завершении процесса macOS может создать файл дампа памяти (core dump) в этом каталоге. Обычно отключено по умолчанию.


Особенности macOS

Защита целостности системы (SIP)

System Integrity Protection блокирует модификацию ключевых системных каталогов (/System, /usr, /bin, /sbin и др.), даже для root. Это предотвращает внедрение вредоносного кода в ядро и системные службы.

Песочница приложений

Приложения из App Store работают в изолированной среде, имея доступ только к своим контейнерам в ~/Library/Containers и явно разрешённым ресурсам (через entitlements).

Property List (plist)

Вместо текстовых конфигурационных файлов macOS активно использует бинарные или XML-файлы .plist для хранения настроек. Они управляются через:

  • Finder (показ информации);
  • Терминал (defaults read/write);
  • Xcode (редактор plist).

Интеграция с iCloud

Многие пользовательские каталоги (Desktop, Documents) могут быть синхронизированы с iCloud Drive. При этом локальные файлы могут находиться в состоянии «только в облаке» (Optimize Mac Storage), а физически загружаться по запросу.