Траблшутинг macOS: дерево решений по симптомам

Рейтинг: 62.1% · 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

Траблшутинг macOS: дерево решений по симптомам

Сообщение 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 как у профи + куда расти
Машина легла перед демо, у юзера парка "ничего не работает", а ты на саппорте. Паника тут плохой советчик - она толкает к ритуалам ("переустанови систему", "сбрось SMC") вместо диагностики. В этом уроке мы соберём дерево решений: от симптома к корню. Идея простая - идёшь не от "что попробовать", а от "что наблюдаешь". Mac не загружается, mac тормозит, mac завис, kernel panic mac, нет звука или Wi-Fi, Spotlight молчит, диск полон - под каждый симптом есть ветка с конкретными командами и разбором вывода. Никаких "на удачу": сначала читаем логи и отчёты, потом действуем.

Сразу база, которая отделяет профи от гадалки. Диагностика mac строится на трёх вещах: отчёты в /Library/Logs/DiagnosticReports (паники, краши, spindump), команда log для системного журнала и встроенные утилиты (diskutil, Activity Monitor, mdutil). Не лезь чинить, пока не прочитал, что именно сломалось.

Mac не загружается: Recovery, First Aid, revive

Когда mac не загружается, первым делом локализуй стадию. На Apple Silicon последовательность такая: power-on -> прошивка (iBoot) -> загрузка ядра -> запуск launchd и UI. По тому, где встало, выбираешь ветку.
  • Чёрный экран, нет даже логотипа Apple - это уровень железа/прошивки. Проверь зарядку (для ноутбука дай 15-20 минут на адаптере), отключи всю периферию (хабы, доки, внешние диски - они частая причина зависания на старте). Если экран чёрный, но вентилятор крутит - дисплей или подсветка.
  • Логотип Apple есть, прогресс-бар замирает - это уровень тома или системы. Идём в Recovery.
  • Знак вопроса или запрещающий знак - том не найден или повреждён системный snapshot.
Заходим в Recovery. На Apple Silicon - выключи Mac полностью, потом зажми кнопку питания и держи, пока не появится надпись "Загрузка параметров запуска" (Loading startup options), дальше выбери Параметры (Options). На Intel - перезагрузка с зажатыми Command-R. В Recovery открой Дисковую утилиту и прогони First Aid на томах. Порядок проверки важен: сначала контейнер, потом тома внутри. Из терминала Recovery то же самое и нагляднее:

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

diskutil list
diskutil verifyVolume disk3s5
diskutil repairVolume disk3s1
В выводе diskutil list увидишь структуру APFS. Разбор того, что важно:

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

/dev/disk3 (synthesized):
   #:    TYPE NAME                    SIZE       IDENTIFIER
   0:    APFS Container Scheme -       494.4 GB   disk3
   1:    APFS Volume Macintosh HD      11.0 GB    disk3s1
   2:    APFS Snapshot ...             11.0 GB    disk3s1s1
   3:    APFS Volume Macintosh HD - Data 380 GB   disk3s5
Тут два ключевых объекта. Macintosh HD - системный том, он read-only и грузится через подписанный snapshot (Signed System Volume, SSV). А Macintosh HD - Data - твои данные. Запомни: First Aid почти всегда чинит том Data, а вот системный том не правят в лоб - если повреждён сам snapshot SSV, его не "ремонтируют", а переустанавливают систему поверх (Reinstall macOS в Recovery) - данные при этом остаются на Data. Это первая большая развилка: ошибка на Data - First Aid, ошибка на системном snapshot - переустановка поверх.

Если Recovery не грузится или прошивка мертва - последний рубеж это revive/restore через Apple Configurator со второго Mac и кабеля USB-C. Разница принципиальная и её надо знать:
  • Revive - обновляет прошивку и recoveryOS, НЕ трогает том с данными. Это первое, что пробуешь - почти всегда безопасно.
  • Restore - обновляет прошивку и стирает накопитель, ставит macOS заново. Данные теряются. Только когда revive не помог.
Перед этим Mac вводят в DFU (на Apple Silicon - своя комбинация в зависимости от модели, Configurator подскажет). Это не для рядового юзера, но в парке - твой спасательный круг.

Изображение

Mac тормозит и mac завис: давление памяти, spindump, диск

"Mac тормозит" - симптом без диагноза. Источников три: процессор, память, диск. Открой Мониторинг системы (Activity Monitor) и читай по вкладкам.

Вкладка Память. Главный индикатор внизу - Memory Pressure (давление памяти), цветной график. Зелёный - всё ок, жёлтый - впритык, красный - система душится свопом. Не смотри на "свободную память" - macOS специально занимает RAM под кэш, "свободно 200 МБ" это норма. Смотри именно на давление и на Swap Used. Из терминала то же самое:

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

$ memory_pressure
System-wide memory free percentage: 14%
The system has 17179869184 (4194304 pages with a page size of 4096).
Pages free: 89123
Pages purgeable: 45011
...
Если free percentage стабильно низкий и Swap Used растёт - тебе не хватает RAM либо есть утечка. Сортируй процессы по столбцу Память, ищи аномалию (браузер с 200 вкладками, зависшее приложение на гигабайты).

Вкладка ЦП. Процесс жрёт 100-400% CPU? Если это kernel_task раскочегарился - часто это тепловой троттлинг (Mac греется и ядро искусственно держит CPU занятым, чтобы охладить). Если завис обычный процесс - сними spindump, чтобы понять, на чём он крутится:

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

sudo spindump Safari 5 -o /tmp/safari_spin.txt
Это снимет сэмплы зависшего процесса за 5 секунд. В отчёте ищи Heaviest stack (самый тяжёлый стек) - он показывает, в какой функции процесс залип. Системные spindump, кстати, сами падают в /Library/Logs/DiagnosticReports с расширением .spin, когда watchdog ловит зависание. Для конкретного процесса есть ещё sample:

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

sample Finder 3 -file /tmp/finder.txt
Диск. Если давление памяти зелёное, CPU спокоен, а всё равно тупит - подозревай диск. На вкладке Диск смотри на байты записи/чтения. Забитый под завязку SSD деградирует. Здоровье накопителя - через smartctl (ставится из Homebrew, brew install smartmontools):

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

$ smartctl -a /dev/disk0 | grep -i percent
Percentage Used:                    7%
Percentage Used - это выработка ресурса записи NVMe. 100% значит ресурс исчерпан (но диск ещё может работать). Растёт быстро - есть процесс, который дико пишет на диск, лови его в Activity Monitor.

Если Mac завис намертво и курсор не двигается - дай ему 30-60 секунд (возможно, идёт спиндамп watchdog), потом принудительная перезагрузка долгим удержанием питания. После перезагрузки первым делом - в логи, искать причину, а не делать вид, что ничего не было.

Приложение падает: crash report, plist, сброс TCC

Конкретное приложение вылетает на старте или в работе - это не "переустанови macOS". Дерево короткое и почти всегда решается за пять минут.

Шаг 1 - прочитай crash report. Открой Console (Консоль) -> Crash Reports, или ищи .ips-файлы напрямую:

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

ls -lt ~/Library/Logs/DiagnosticReports/ | head
ls -lt /Library/Logs/DiagnosticReports/ | head
Падения пользовательских приложений падают в ~/Library, системные - в /Library. Файл .ips это JSON. Ключевые поля: termination (почему убит - сигнал SIGSEGV/SIGABRT), exceptionType, и Thread с пометкой Crashed. Строка вида "Namespace SIGNAL, Code 11" с EXC_BAD_ACCESS - доступ к чужой памяти, обычно баг или битый кэш. EXC_CRASH (SIGABRT) - приложение само себя убило (часто из-за повреждённых настроек).

Шаг 2 - снеси настройки. 80% "приложение падает на старте" лечится удалением битого plist. Найди и убери (с бэкапом):

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

defaults read com.example.App > /tmp/app_backup.txt
defaults delete com.example.App
Либо физически - файл лежит в ~/Library/Preferences/com.example.App.plist. Учти: macOS кэширует настройки через демон cfprefsd, поэтому после ручного удаления файла надёжнее команда defaults delete или перелогин. Заодно почисти ~/Library/Caches/<bundle id> и ~/Library/Saved Application State/<bundle id>.savedState - битый saved state ломает запуск.

Шаг 3 - сброс TCC (приватность). Приложение крашится или зависает при обращении к камере, микрофону, экрану, папкам? Это разрешения TCC. Сбрось их точечно:

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

tccutil reset Camera com.example.App
tccutil reset ScreenCapture com.example.App
tccutil reset All com.example.App
После сброса при следующем запросе система снова спросит разрешение. Без аргумента-приложения reset All обнуляет ВСЕ разрешения этой категории для всех приложений - применяй осознанно. Если ничего не помогло - тогда уже переустановка самого приложения (целиком удалить .app и переставить).

Kernel panic mac: чтение отчёта panic

Kernel panic mac - это когда падает само ядро, и система перезагружается с экраном "Ваш компьютер перезагружен из-за возникшей проблемы". В отличие от падения приложения, тут затронут весь kernel. Не паникуй сам - читай отчёт.

Отчёты паники лежат там же, файл начинается с Kernel и имеет расширение .panic или .ips:

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

ls -lt /Library/Logs/DiagnosticReports/ | grep -i -E 'kernel|panic'
Внутри ищи строку panicString. Самое важное - первые строки. Примеры и их трактовка:

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

panic(cpu 4 caller ...): Kernel data abort. ...
...
Panicked task ... 3 threads:
...
Kernel Extensions in backtrace:
   com.thirdparty.driver.kext ...
  • Видишь сторонний kext в backtrace (com.чтото, не com.apple) - почти наверняка виновато стороннее расширение ядра. Это VPN-драйверы, антивирусы, старые драйверы Thunderbolt/звуковух. Загрузись в безопасном режиме (на Apple Silicon - Recovery -> выбери том с зажатым Shift -> Continue in Safe Mode) - в нём сторонние kext не грузятся. Не паникует в Safe Mode? Значит виноват kext, ищи и удаляй его, проверяй системные расширения в Системных настройках -> Основные -> Вход и расширения.
  • На Apple Silicon в отчёте есть строка про уровень безопасности загрузки. При полной безопасности (Secured) сторонние kext вообще не грузятся - если паника и тут, дело не в kext, а скорее в железе.
  • Строки вроде "DDR ECC error", "machine check" или паники в разных непохожих местах при каждом разе - сильный сигнал на железо/память. Прогони аппаратную диагностику Apple: на Apple Silicon в Recovery (экран Options) зажми Command-D, на Intel при загрузке зажми D.
Правило диагностики паники: если стек повторяется и указывает на один и тот же модуль - это софт/драйвер. Если паники хаотичные и в разных местах - это память или питание. Периферия (доки, хабы) - отдельный частый виновник: отключи всё и проверь без неё.

Нет звука, Wi-Fi, Bluetooth и Spotlight молчит

Звук. Пропал звук - не лезь в железо сразу. Сначала проверь, не выбрано ли левое устройство вывода (Системные настройки -> Звук). Если систему "переклинило" со звуком - перезапусти аудиодемон:

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

sudo killall coreaudiod
launchd поднимет его заново автоматически. Это лечит большинство "звук есть в системе, но из колонок тишина".

Wi-Fi. Диагностику сети веди через networksetup и беспроводную утилиту. Посмотри состояние и пересоздай подключение:

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

networksetup -listallhardwareports
networksetup -getairportpower en0
sudo networksetup -setairportpower en0 off
sudo networksetup -setairportpower en0 on
Если сеть видна, но не подключается - дело часто в DHCP или DNS. Обнови аренду в Системных настройках -> Сеть -> Wi-Fi -> Подробнее -> TCP/IP -> Запросить адрес DHCP заново. Хардкорный сброс - удалить системные конфиги сети (в /Library/Preferences/SystemConfiguration: preferences.plist, com.apple.airport.preferences.plist) и перезагрузиться, система пересоздаст их с нуля.

Bluetooth. Аналогично - демон blued/bluetoothd перезапускается удалением его состояния, но проще сначала выключить-включить Bluetooth и снять-добавить устройство. Залипший модуль:

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

sudo pkill bluetoothd
Spotlight не ищет. Spotlight молчит или ищет неполно - это битый индекс. Управляется через mdutil. Сначала статус, потом переиндексация:

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

mdutil -s /
sudo mdutil -i on /
sudo mdutil -E /
Разбор: -s показывает статус индексации тома, -i on включает индексацию, ключевой -E стирает текущий индекс и запускает построение заново. После -E поиск временно НЕ работает - идёт переиндексация, на большом диске это десятки минут, в это время ноутбук будет греться и шуметь (процесс mds_stores в Activity Monitor). Это нормально. Если -E не помог - в Системных настройках -> Spotlight можно исключить диск из индексации и тут же убрать из исключений, что тоже форсит ребилд.

Диск полон: purgeable и снапшоты APFS

"Диск полон", а удалять нечего и Finder показывает "доступно 5 ГБ (purgeable 80 ГБ)"? Purgeable (очищаемое) пространство - это в основном локальные снапшоты Time Machine и кэши, которые APFS отдаст системе под давлением, но прямо сейчас они забивают диск. Часто это и есть причина, почему "ничего не ставится".

Смотрим снапшоты и чистим:

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

tmutil listlocalsnapshots /
diskutil apfs listSnapshots disk3s5
sudo tmutil thinlocalsnapshots / 999999999999 4
tmutil thinlocalsnapshots просит систему "истончить" снапшоты, освободив указанный объём (второй аргумент в байтах) с приоритетом срочности (4 - самый агрессивный). Удалить конкретный снапшот по дате:

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

tmutil deletelocalsnapshots 2026-06-15-031500
Реальную картину занятости даёт системный df с учётом APFS:

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

$ df -H /System/Volumes/Data
Filesystem     Size   Used  Avail Capacity  Mounted on
/dev/disk3s5   494G   441G    48G    91%    /System/Volumes/Data
Внимание: обычный du в bytes на APFS врёт из-за дедупликации и снапшотов - доверяй df и Системным настройкам -> Основные -> Хранилище. Не удаляй снапшоты руками, если на машине нет других бэкапов и ты не уверен - это копии состояния. Но в ситуации "диск под 99% и Mac тормозит из-за нехватки места под своп" - истончение снапшотов спасает.

Мини-лаба: повтори руками

Безопасно, на своей машине:
  • Прогони memory_pressure и сопоставь вывод с графиком давления памяти в Activity Monitor. Найди процесс-лидер по памяти.
  • Сними spindump любого живого приложения: sudo spindump Safari 3 -o /tmp/s.txt - открой файл, найди Heaviest stack.
  • Посмотри последние отчёты: ls -lt /Library/Logs/DiagnosticReports/ - открой свежий .ips в Консоли, найди поле termination или panicString.
  • Проверь индекс Spotlight: mdutil -s / - убедись, что индексация Enabled.
  • Посмотри локальные снапшоты: tmutil listlocalsnapshots / и сравни Avail в df -H / с тем, что показывает Хранилище.
Ничего из этого не ломает систему, но даёт мышечную память на боевой случай.

Контрольные вопросы
  • First Aid в Дисковой утилите нашёл ошибки на системном томе Macintosh HD (не на Data). Почему "ремонт" тут не поможет и что делаешь вместо него?
  • Activity Monitor: свободной памяти 180 МБ, но давление памяти зелёное, своп 0. Это проблема или норма? Объясни.
  • Kernel panic mac повторяется, в backtrace стабильно один и тот же com.vendor.kext. Твой план из двух шагов?
  • В Finder "доступно 6 ГБ, очищаемого 90 ГБ", установщик не лезет. Чем это вызвано и какой командой освобождаешь место?
Итог

Траблшутинг macOS - это не набор заклинаний, а дерево от симптома к корню. Mac не загружается - локализуй стадию (прошивка/том/система), First Aid для Data, переустановка поверх для системного snapshot, revive как крайняя мера. Mac тормозит или mac завис - читай давление памяти, снимай spindump, проверяй диск. Приложение падает - crash report, снос plist, сброс TCC. Kernel panic mac - читай panicString, ищи сторонний kext, Safe Mode, аппаратная диагностика. Звук/сеть - перезапуск демонов, Spotlight - mdutil -E, диск полон - снапшоты APFS. Главное правило: сначала прочитай отчёт, потом действуй. Логи в /Library/Logs/DiagnosticReports - твоя первая остановка всегда.
👍1 ❤️1 🔥 😄 🤔2
Аватара пользователя
tcp_sre
Сообщения: 1
Зарегистрирован: 22 май 2026, 01:26

Re: Траблшутинг macOS: дерево решений по симптомам

Сообщение tcp_sre »

Вот это про purgeable прям боль - думал диск умер, а это снапшоты Time Machine 90 гигов сожрали. thinlocalsnapshots спас, спасибо.
👍1 ❤️ 🔥1 😄 🤔
Аватара пользователя
londonee
Сообщения: 1
Зарегистрирован: 22 май 2026, 22:15

Re: Траблшутинг macOS: дерево решений по симптомам

Сообщение londonee »

А spindump и sample это одно и то же по сути? Когда что брать, не до конца понял разницу.
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Сброс, NVRAM, Safe Mode и сброс настроек
Следующая глава →
Место на диске и обслуживание системы

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

Поделиться темой: ✈ Telegram VK
  • Похожие темы
Похожие запросы: Логи и диагностика macOSТраблшутинг и обслуживание MacЧто такое macOS и Unix под капотомОшибки nginx 403, 404, 504: диагностикаОшибка nginx 502 Bad Gateway: причины и решениеgit worktree: несколько рабочих деревьев

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

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

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