Диагностика и «лечение» критических ошибок системы (kernel panic). Google находит серьезную ошибку ядра macOS

Подразделение безопасности Google под названием Project Zero обнаружило недостаток ядра macOS, c «высоким уровнем безопасности» (через AppleInsider ).

Ошибка ядра

Ядро является ядром операционной системы. Он имеет полный контроль над всем и обрабатывает такие вещи, как ввод / вывод из программного обеспечения, памяти, компьютерных аксессуаров и многое другое. XNU – это имя ядра, которое используется во всех операционных системах Apple.

Недостаток позволяет хакеру вносить изменения в файл без уведомления операционной системы. Это портит нечто, называемое копирование при записи (COW), которое позволяет процессам записывать данные между собой, но оно должно быть защищено от других вещей, модифицирующих его. Этот недостаток позволяет такому случиться.

Такое поведение копирования при записи работает не только с анонимной памятью, но и с отображениями файлов. Это означает, что после того, как процесс назначения начал чтение из перенесенной области памяти, увеличение занимаемой памяти может привести к удалению страниц, содержащих перенесенную память, из кэша страниц. Позже, когда вытесненные страницы снова понадобятся, они могут быть перезагружены из резервной файловой системы.

Многие читатели встречались или хотя бы слышали о таком явлении, как «синий экран смерти» (BSOD), который появляется в операционных системах семейства Windows при возникновении критических ошибок системы, с которыми она не может справиться без полной перезагрузки. В OS X есть нечто похожее. Критические ошибки на уровне ядра Mac OS X называются «kernel panic». Ядро — сердце системы, отвечающее за взаимодействие как комплектующих и периферии, так и программного обеспечения вашего компьютера. Поэтому, если в работе ядра возникает критическая ошибка, часто для восстановления после неё требуется перезапуск ядра, а следовательно и системы.

Чаще всего такие критические ошибки проявляются в виде серого экрана, на фоне которого на разных языках вас просят принудительно завершить работу компьютера в связи с возникновением ошибки.

Однако так происходит не всегда. Иногда ошибки ядра приводят к полному зависанию системы или спонтанным перезагрузкам и выключениям компьютера. В этом случае основным признаком «kernel panic» будет появление соответствующей записи в логах системы с названием вида «Kernel_YYYY-MM-DD-HHMMSS _ComputerName .panic», где YYYY-MM-DD-HHMMSS - это последовательно указанные год, месяц, дата и время возникновения ошибки с точностью до секунд, а ComputerName - имя компьютера.

К подобного рода ошибкам могут привести многие неисправности оборудования, как внутреннего (например, оперативной памяти), так и периферии (такой, как внешние накопители), а также сбои в работе ПО. К сожалению, при диагностике критических ошибок системы «круг подозреваемых» очень велик, так как ядро взаимодействует с каждым процессов и сервисом в системе, не говоря уже о каждом внешнем и внутреннем устройстве. Как и в многих других случаях с Mac OS X, при возникновении критических ошибок, намного проще опробовать несколько общих подходов для решения проблемы, чем при помощи отчетов и логов пытаться вычислить виноватого.

Возможные причины и решения.

Неисправность или сбои оперативной памяти (RAM)

Проблемы с оперативной памятью являются одной из самых распространенных причин возникновения критических сбоев. Если вам не удается проследить зависимость появления «kernel panic» от подключения каких-либо конкретных устройств или запуска определенных процессов, стоит проверить именно оперативную память.

Для этого вы можете воспользоваться Функциональным тестом оборудования Apple (AHT) или, если ваш Mac выпущен после 2013 года, Apple Diagnostics. Если к компьютеру прилагался диск с программным обеспечением системы, вставьте его в оптический привод, выключите компьютер и нажмите клавишу D при следующем включении.

Устройства, поставлявшиеся с OS X 10.7 и выше также поддерживают запуск интернет-версии тестов. Для этого убедитесь, что ваш Mac подключён к сети Интернет и при запуске зажмите сочетание клавиш ⌥Alt + D.

Для теста оперативной памяти также можно воспользоваться и сторонними утилитами, например, Rember или Memtest .

Стоит также заметить, что некоторые версии системы или прошивок могут быть более (или менее) совместимы с тем или иным видом оборудования, в связи с чем их обновления могут привести к возникновению конфликтов с оборудованием и критических сбоев. Такое бывает редко и чаще случается наоборот, но все же вероятность есть.

Сбои NVRAM и SMC

В небольшом секторе памяти вашего компьютера под названием «энергонезависимое ОЗУ», или NVRAM, сохраняются определенные настройки, к которым OS X может быстро получить доступ. В настройки, сохраняемые в NVRAM, могут закрасться ошибки, которые в определенных случаях могут привести к появлению kernel panic. Для того чтобы устранить возможные ошибки памяти NVRAM стоит произвести её сброс. Для этого выключите компьютер и при следующем его включении зажмите клавиши ⌘Command + ⌥Alt/Option + P + R и удерживайте их до тех пор, пока компьютер не перезагрузится и вы не услышите сигнал загрузки во второй раз.

На более старых компьютерах Mac подобная информация сохранялась в параметрическом ОЗУ (PRAM). Сброс NVRAM на компьютерах Mac с процессорами Intel выполняется с помощью такой же комбинации клавиш и аналогичен сбросу PRAM.

Если вы пользуетесь беспроводной клавиатурой, есть небольшая вероятность, что компьютер не будет реагировать на нажатия клавиш на ней. В этом случае стоит подключить USB клавиатуру (не имеет значения, будь то клавиатура Apple или Windows) и повторить попытку с ней.

Помимо этого на компьютерах Mac с процессором Intel установлен контроллер управления системой (SMC), который отвечает за многие низкоуровневые функции, такие как управление ресурсами аккумулятора, управление температурой, реакция на закрытие крышки портативных компьютеров и многие другие аспекты, связанные с питанием вашего Mac. В случае возникновения проблем с работой компьютера параметры SMC также стоит сбросить.

На ноутбуках с несъёмным аккумулятором:

  1. Выключите компьютер.
  2. Подключите адаптер питания MagSafe или USB-C к источнику питания и к компьютеру.
  3. Нажмите на встроенной клавиатуре одновременно клавиши ⇧Shift + Control + ⌥Alt/Option (слева) и кнопку питания.
  4. Одновременно отпустите клавиши и кнопку питания.

На ноутбуках Mac со съемным аккумулятором:

  1. Выключите компьютер.
  2. Отключите адаптер питания MagSafe от компьютера, если он подключен.
  3. Выньте аккумулятор.
  4. Нажмите и удерживайте кнопку питания в течение пяти секунд.
  5. Отпустите кнопку питания.
  6. Снова подключите аккумулятор и адаптер питания MagSafe.
  7. Нажмите кнопку питания, чтобы включить компьютер.

На Mac Pro, iMac, Mac mini и Xserve:

  1. Выключите компьютер.
  2. Отсоедините шнур питания компьютера.
  3. Подождите 15 секунд.
  4. Присоедините шнур питания.
  5. Подождите 5 секунд, а затем нажмите кнопку питания, чтобы включить компьютер.

Сбои в работе внешних устройств (периферии)

Устройства Firewire, Tunderbolt и USB - также очень вероятные виновники возникновения критических сбоев. Причины могут самые разные, но основная заключается в том, что эти устройства очень часто обращаются к контроллеру вашего компьютера, обмениваясь с ним пакетами данных, и, если контроллер получит некорректный пакет, это может вызвать сбой.

В этом случае «kernel panic» могут возникать сразу при подключении устройства, при запуске системы, если устройство уже было подключено к Mac и в момент выхода компьютера из спящего режима.

В последнем случае одним из обходных вариантов может быть отключение перехода компьютера в спящий режим в меню Системные настройки → Экономия энергии.

Более же распространенный подход к данной проблеме обычно заключается в отключении всех внешних устройств и последовательном их подключении. Таким образом, методом перебора вариантов можно определить, какое устройство вызывает сбои, хотя это в некоторых случаях бывает довольно сложно, так как иногда проблема может проявляться не сразу, а через несколько минут, или даже часов.

Выяснив, какое устройство вызывает сбои, стоит проверить обновления прошивки этого устройства и драйверов для него, а также обновления самой системы. Есть вероятность, что проблема скорее программного характера и обновления её устранят.

Если вы пользуетесь концентраторами или разветвителями, позволяющими подключать одновременно несколько устройств к одному физическому порту на вашем компьютере, стоит хотя бы временно от них отказаться, так как они также могут вызывать критические ошибки.

Наконец, если ничего из описанного выше не помогло, стоит попробовать подключить аналогичное устройство другой модели или от другого производителя. К сожалению, так случается, что некоторые периферийные устройства могут быть несовместимы с вашим компьютером по той или иной причине.

Сбои в работе комплектующих

Регулярно повторяющиеся сбои могут быть вызваны неисправными, поврежденными или некорректно настроенными комплектующими, такими как встроенные Airport и Bluetooth контроллеры и прочие сетевые устройства, жесткие диски и твердотельные накопители, а иногда и неисправные или некорректно работающие процессоры.

Часто подобные проблемы могут решаться простым переподключением соответствующих комплектующих. Если вы недавно делали апгрейд своего Mac (особенно, если своими силами), стоит убедиться, что все PCI, PCI Express, AirPort и прочие платы расширения корректно подключены к соответствующим разъемам.

Ошибки кэша

Временные файлы, созданные системой и пользовательскими приложениями, играют важную роль в работе OS X, именно поэтому если в них появится какая-то ошибка, последующие обращения к ним могут привести к сбою. Перед тем, как приступить к подробной диагностике проблемы, стоит начать с очистки кэша, так как это может сэкономить ваше время и силы. Вы можете воспользоваться специализированными утилитами, вроде Onyx или Cocktail , или удалить временные файлы вручную. Какой бы вариант вы ни выбрали, настоятельно рекомендуем предварительно сделать полную резервную копию вашей системы!

  1. Откройте Finder и нажмите сочетание клавиш ⌘Command + ⇧Shift + G
  2. В открывшемся окне введите /System/Library
  3. Нажмите кнопку «Перейти»
  4. В открывшейся папке найдите файлы с названиями «Extensions.kextcache» и «Extensions.mkext» и удалите их.
  5. В этой же директории найдите папку «Caches» выделите все её содержимое и удалите.
  6. Снова нажмите сочетание ⌘Command + ⇧Shift + G и введите в открывшемся окне /Library/Caches/
  7. Снова выделите и удалите все содержимое папки.
  8. Наконец, ещё раз нажмите сочетание ⌘Command + ⇧Shift + G и введите в открывшемся окне ~/Library/Caches
  9. Удалите содержимое этой папки.
  10. Перезагрузите систему и проверьте, не возникают ли критические ошибки.

Некорректно работающее компоненты Mac OS X и расширения ядра

Компоненты Mac OS X и расширения ядра - это очень обширная тема, не только из-за того, что они уязвимы для огромного количества различных неисправностей, в числе которых повреждение данных, несовместимость оборудования, некорректная настройка прав доступа и многие другое, но и за счет своей многочисленности. Для примера можно заглянуть в папку /System/Library/Extensions, каждый файл в которой расширяет функционал ядра Mac OS X и может оказаться причиной причиной возникновения «kernel panic». В среднем система насчитывает около 250-300 расширений ядра (и это далеко не предел), что может превратить диагностику ошибки в поиск иголки в стоге сена.

В данном случае, если вы уверены, что проблема действительно кроется в системных файлах, может быть проще и эффективней провести повторную установку системы поверх существующей из раздела восстановления (попасть в который можно, зажав сочетание клавиш ⌘Command + R при включении компьютера), что оставит нетронутыми пользовательские данные, но заменит системные файлы на заведомо рабочие.

В некоторых случаях критические ошибки могут появиться после обновления или апгрейда системы, что также чаще всего относится к проблемам с системными файлами. Самым простым способом решения подобных проблем было бы восстановление из резервной копии на момент до обновления, однако есть у другие способы, которых мы писали в одной из наших .

Некорректные настройки

Некорректные настройки вашей системы или повреждение самих файлов, в которых они хранятся также могут послужить причиной критических сбоев. Часто поведение системы может подсказать, какие параметры настроены неверно. Например, если проблема возникает при переходе компьютера или дисков (ввиду неактивности) в спящий режим или выходе из него, вероятно вам сможет помочь отключение функций в меню Системные настройки → Экономия энергии.

Если же определить источник проблемы не удается, можно использовать один из общих подходов и создать новую учётную запись. Таким образов вы сбросите для новой учётной записи все пользовательские настройки и сможете проверить, не решит ли это проблему. Если в новой учётной записи проблема устранилась, но её причину вам установить так и не удалось, возможно будет удобнее перенести все нужные вам данные в нового пользователя, а старого удалить.

Помимо этого может помочь запуск системы в безопасном режиме. Для этого выключите компьютер и при следующем включении зажмите клавишу ⇧Shift. Таким образом вы не только временно отключите все сторонние расширения ядра, дополнения системы и настройки, которые могут привести к сбоям, но и очистите некоторые временные файлы, которые также могут послужить причиной возникновения проблемы.

И, наконец, если у вас есть внешний носитель (флешка или внешний диск), вы можете провести чистую установку системы на него, затем перезагрузить компьютер и при включении зажать клавишу ⌥Alt/Option. В результате на экране отобразится список устройств, с которых можно осуществить загрузку системы. Выберите свой внешний диск и нажмите ⏎Enter. Таким образом вы сможете проверить работу компьютера с чистой системой без стороннего ПО и дополнительных пользовательских настроек.

Если описанные выше способы не дали положительного результата, можно почти с полной уверенностью сказать, что проблема имеет аппаратный характер. В этом случае попытки самостоятельного решения проблемы имеют мало шансов на успех. Стоит рассмотреть возможность обращения в сервисный центр для получения квалифицированной помощи при дальнейшей диагностике и устранения неисправности.

Попался в руки старенький ноутбук MacBook Pro 2010 года, который сильно тормозил. Подозрения пали на диск, так как в тех моделях устанавливались HDD, было решено заменить его на SSD с уже установленной Mac OS снятый с другой машины.

Проблема никуда не ушла и визуально не было улучшения. После нескольких проверок, сбросов NVRAM и SMC , так как кулер крутил на 100% оборотов, когда практически уже был уверен что проблема в железке, случайно заглянул в «Мониторинг системы » и увидел там загрузку процессора на 140-250%.
Проблема заключалась в том, что процесс Kernel_task отъедал ресурсы CPU и не давал работать всей ОС.

Вот что пишут сами Apple об этом процессе:
Процесс kernel_task помогает управлять температурой ЦП, снижая доступность ресурсов ЦП для программ с высокой интенсивностью вычислений. Иначе говоря, процесс kernel_task запускается при возникновении риска перегрева центрального процессора. Сам по себе он не вызывает такие ситуации. При снижении температуры ЦП активность этого процесса автоматически уменьшается.

Было найдено решение проблемы:

1) Для начала включаем отображение скрытых папок:
— Заходим в «Терминал»
— Вбиваем 2 команды:
defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

2) После чего определяем модель компьютера:
— Кликаете «Об этом Mac»
— Далее жмите кнопку «Подробнее»
— Кликаете на «Отчёт о системе»
Там где аппаратные средства находите и запоминаете «Идентификатор модели». В моём случае это MacBookPro7,1

3) Переходите по этому пути:
/System/Library/Extensions
Выбирайте файл IOPlatformPluginFamily.kext , кликаете правой кнокой и выбираете «Показать содержимое пакета»

4) Переходите в Contents/PlugIns , потом на файле ACPI_SMC_PlatformPlugin.kext так же выбираете «Показать содержимое пакета»

5) Далее в Contents/Resources находите файл с моделью ноутбука. Как вы помните: у меня был MacBookPro 7.1. Удаляйте этот файл! (Если нет нужного файла, удалите ближайшие модели, к примеру нет 8.1, удаляете 7.1 и 9.1)

6) Перезагрузите компьютер. Вероятно эту процедуру придется проделывать после каждого обновления Mac OS

Чтобы вернуть отображение папок, как было раньше, выполните в «Терминале» команду:
defaults write com.apple.finder AppleShowAllFiles FALSE
killall Finder

Если не удается удалить идентификатор модели

В том случае, когда у вас MacOS El Capitan или выше, система не даст удалить файл-идентификатор, так как предварительно нужно снять защиту целостности системы (System Integrity Protection или сокращенно SIP).

SIP можно отключить только из режима восстановления. Надо перегрузиться, получить доступ к «Терминалу » и ввести команду отключения.

  • Отключаем Mac и при включении зажимаем клавиши ⌘R (Command+R);
  • После загрузки попадаем в меню восстановления. Открываем раздел «Утилиты » и запускаем «Терминал »;
  • Вводим команду:
    csrutil disable
  • Перезагружаем Mac.

Чтобы включить защиту, нужно опять войти в режим восстановления, открыть терминал и ввести команду.

Обладатели новых ноутбуков MacBook Pro и десктопов iMac Pro столкнулись с внезапным появлением ошибки «паника ядра» (аналог BSOD из Windows для MacOS).

О появлении ошибки свидетельствуют многочисленные жалобы с форума технической поддержки Apple и сторонних ресурсов. Окно с ошибкой и последующая перезагрузка системы происходит 1-2 раза в день, чаще после разблокировки устройства.

Причины проблемы

Исходя из имеющихся на сегодня данных, проблема вызвана встроенной ОС Bridge OS и специальным чипом T2, которые отвечают за неэнергоемкие функции компьютера – контроль скорости вращения кулеров, обработка звука и так далее. Проблема встречается только на компьютерах с чипом T2. Однако, на сегодня отсутствуют прямые доказательства непосредственной причины в Т2 и данные о распространенности проблема.


Попытки устранения проблемы пользователями путем очистки накопителя и переустановки ОС, восстановления копии ОС через Time Machine, отключения периферийного оборудования и даже смены компьютера не дали полной эффективности. На основании этого можно предположить, что проблема скрывается глубоко внутри системы.