Паника ядра - Kernel panic

Сообщение о панике ядра от Linux система
Паника ядра в Ubuntu 13.04 (Linux 3.8) в Oracle VM VirtualBox

А паника ядра (иногда сокращенно КП[1]) является мерой безопасности, принятой Операционная система с ядро при обнаружении внутреннего фатальная ошибка в котором либо невозможно безопасное восстановление, либо система не может продолжать работу без гораздо более высокого риска серьезной потери данных. Этот термин в значительной степени специфичен для Unix и Unix-подобный системы. За Майкрософт Виндоус операционные системы эквивалентный термин "Стоп-ошибка ", что приводит к проверке ошибок[2] экран, который представляет код проверки ошибок на синем фоне в ранних версиях Windows (в просторечии известный как "Синий экран смерти "или BSoD) или на зеленом фоне на платформе Xbox One, а также в предварительных сборках Windows 10.[3]

В ядро процедуры обработки паники, известные как паника() в AT&T -производные и BSD Исходный код Unix, как правило, предназначен для вывода сообщение об ошибке к консоль, выгрузить образ памяти ядра на диск для посмертная отладка, а затем либо дождитесь перезагрузки системы вручную, либо инициируйте автоматический перезагрузка.[4] Предоставленная информация носит технический характер и направлена ​​на то, чтобы помочь Системный администратор или же разработчик программного обеспечения в диагностике проблемы. Паника ядра также может быть вызвана ошибками, происходящими вне пространства ядра. Например, во многих операционных системах Unix возникает паника, если в этом процесс, который выполняется в пространство пользователя, завершается.[5][6]

История

В Unix ядро поддерживает внутреннюю согласованность и время выполнения правильность с утверждения как обнаружение неисправности механизм. Основное предположение состоит в том, что оборудование и программное обеспечение должны работать правильно, а сбой утверждения приводит к паника, т.е. добровольное прекращение всей активности системы.[7] Паника ядра была введена в ранней версии Unix и продемонстрировала существенное различие между философией проектирования Unix и ее предшественником. Мультики. Разработчик Multics Том ван Влек вспоминает обсуждение этого изменения с разработчиком Unix Деннис Ричи:

Я заметил Деннису, что половина кода, который я писал на Multics, составляла код восстановления после ошибок. Он сказал: «Мы оставили все это. Если есть ошибка, у нас есть такая процедура, которая называется паника, и когда она вызывается, машина вылетает, и вы кричите по коридору:« Эй, перезагрузите ее »».[8]

Оригинал паника() функция практически не изменилась с Fifth Edition UNIX до VAX -на основе UNIX 32V и выводит только сообщение об ошибке без какой-либо другой информации, а затем сбрасывает систему в бесконечный цикл ожидания.

Исходный код паника() функционировать в V6 UNIX:[9]

/* * Если консоль выключена, * panicstr содержит аргумент до последнего * призыв к панике. */char    *паника;/* * Паника вызывается на неразрешимую * фатальные ошибки. * Он синхронизирует, печатает "panic: mesg" и * затем петли. */паника(s)char *s;{        паника = s;        Обновить();        printf("паника:% s п", s);        за(;;)                праздный();}

Поскольку Unix кодовая база был усилен, паника() Функция также была улучшена для вывода на консоль различных форм отладочной информации.

Причины

Паника может возникнуть в результате аппаратного сбоя или программная ошибка в операционной системе. Во многих случаях операционная система способна продолжить работу после возникновения ошибки. Однако система находится в нестабильном состоянии, и вместо того, чтобы рисковать нарушениями безопасности и повреждением данных, операционная система останавливается, чтобы предотвратить дальнейшее повреждение и облегчить диагностику ошибки и, в обычных случаях, перезапустить.[10]

После перекомпиляции бинарного образа ядра из исходный код, паника ядра, пока загрузка получившееся ядро ​​- обычная проблема, если ядро ​​было неправильно сконфигурировано, скомпилировано или установлено.[11] Дополнительное оборудование или неисправное баран также может быть источником фатальных ошибок ядра при запуске из-за несовместимости с ОС или отсутствия драйвер устройства.[12] Ядро также может входить в паника() если он не может найти корневая файловая система.[13] На заключительных этапах ядра пространство пользователя инициализации, паника обычно срабатывает, если порождение в этом терпит неудачу. Также может возникнуть паника, если процесс инициализации завершится, так как в этом случае система станет непригодной для использования.[14]

Ниже представлена ​​реализация финальной инициализации ядра Linux в kernel_init ():[15]

статический int __ref kernel_init(пустота *неиспользованный){         ...        /*         * Мы пробуем каждый из них, пока один из них не добьется успеха.         *         * Оболочка Bourne может использоваться вместо init, если мы         * пытается восстановить действительно сломанную машину.         */        если (execute_command) {                если (!run_init_process(execute_command))                        возвращаться 0;                pr_err("Не удалось выполнить% s. Попытка выполнить настройки по умолчанию ... п",                        execute_command);        }        если (!run_init_process("/ sbin / init") ||            !run_init_process("/ etc / init") ||            !run_init_process("/ bin / init") ||            !run_init_process("/ bin / sh"))                возвращаться 0;        паника(«Не найдено ни одного файла инициализации. Попробуйте передать ядру параметр init =».              «См. Документацию Linux / init.txt для руководства».);}

Особенности операционной системы

Linux

Паника ядра на консоли iKVM

Паники ядра появляются в Linux как в других Unix-подобный системы, но они также могут генерировать другой вид состояния ошибки, известный как ядро ой.[16] В этом случае ядро ​​обычно продолжает работать после убийство оскорбление процесс. Поскольку ошибка может привести к недоступности некоторых подсистем или ресурсов, позже они могут привести к полной панике ядра.

В Linux из-за паники ядра индикаторы клавиатуры мигают как визуальное указание на критическое состояние.[17]

macOS

Когда паника ядра происходит в Mac OS X 10.2–10.7, компьютер отображает многоязычное сообщение, информирующее пользователя о том, что ему необходимо перезагрузить систему.[18] До версии 10.2 отображалось более традиционное сообщение о панике в стиле Unix; в 10.8 и более поздних версиях компьютер автоматически перезагружается, и после перезагрузки отображается сообщение. Формат сообщения варьируется от версии к версии:[19]

  • 10.0–10.1: система отображает на экране текст с подробными сведениями об ошибке и перестает отвечать.
  • 10.2: опускает черную прозрачную шторку, затем отображает сообщение на белом фоне, информирующее пользователя о том, что он должен перезагрузить компьютер. Сообщение отображается в английский, Французский, Немецкий и Японский.
  • 10.3–10.5: паника ядра почти такая же, как и в версии 10.2, но фон экрана ошибки черный.
  • 10.6–10.7-10.8: текст был изменен и теперь включает испанский перевод.
  • 10.9 и новее: компьютер перестает отвечать перед немедленной перезагрузкой. Когда компьютер запускается, он показывает предупреждающее сообщение в течение нескольких секунд о перезагрузке компьютера из-за паники ядра, а затем компьютер перезагружается. Сообщение теперь включает Китайский перевод.

Иногда при возникновении пяти или более паники ядра в течение трех минут после первой на Mac отображается сообщение запрещающий знак на 30 секунд, а затем завершите работу (это известно как «повторяющаяся паника ядра»).

Во всех версиях выше 10.2 текст накладывается на символ ожидания и не во весь экран. Отладочная информация сохраняется в NVRAM и записывается в файл журнала при перезагрузке. В 10.7 есть функция автоматического перезапуска после паники ядра. В некоторых случаях в 10.2 и более поздних версиях помимо символа режима ожидания может отображаться белый текст с подробным описанием ошибки.

Смотрите также

Рекомендации

  1. ^ «KP - Kernel Panic (Linux) | AcronymFinder». www.acronymfinder.com. Получено 6 января, 2016.
  2. ^ «Проверка ошибок (синие экраны)». Центр разработки оборудования - Microsoft.
  3. ^ Хоффман, Крис. «Знаете ли вы, что в Windows 10 есть зеленый экран смерти?». How-To Компьютерщик. Получено 4 июня, 2020.
  4. ^ «FreeBSD 11.0 - справочная страница по панике (раздел 9 freebsd) - Команды Unix и Linux». www.unix.com.
  5. ^ "ошибка загрузки-init умер - Unix Linux Forums - HP-UX". www.unix.com.
  6. ^ Рэндольф Дж. Гербер (1 сентября 1999 г.). "Re: PANIC: init умер". Группа новостейcomp.sys.sgi.admin.
  7. ^ Дэниел П. Севиорек; Роберт С. Сварц (1998). Надежные компьютерные системы: проектирование и оценка. А. К. Петерс, ООО с. 622. ISBN  978-1-56881-092-8. Получено 6 мая, 2011.
  8. ^ "Unix и Multics". www.multician.org.
  9. ^ Исходный код /usr/sys/ken/prf.c из V6 UNIX
  10. ^ Стивен М. Хэнкок (22 ноября 2002 г.). Устранение неполадок Tru64 UNIX: диагностика и устранение системных проблемHP Technologies SeriesITPro collection. Цифровая пресса. С. 119–126. ISBN  978-1-55558-274-6. Получено 3 мая, 2011.
  11. ^ Майкл Джанг (2006). Недовольство Linux для гиков. O'Reilly Media, Inc., стр. 267–274. ISBN  978-0-596-00801-7. Получено 29 апреля, 2011.
  12. ^ Дэвид Пог (17 декабря 2009 г.). Переход на Mac: отсутствующее руководство, издание Snow Leopard. O'Reilly Media, Inc. стр. 589. ISBN  978-0-596-80425-1. Получено 4 мая, 2011.
  13. ^ Грег Кроа-Хартман (2007). Вкратце о ядре Linux. O'Reilly Media, Inc. стр. 59. ISBN  978-0-596-10079-7. Получено 3 мая, 2011.
  14. ^ Вольфганг Мауэрер (26 сентября 2008 г.). Профессиональная архитектура ядра Linux. Джон Уайли и сыновья. С. 1238–1239. ISBN  978-0-470-34343-2. Получено 3 мая, 2011.
  15. ^ linux / init / main.c, LXR Cross Referencer
  16. ^ "Драйверы устройств Linux, Глава 4" (PDF).
  17. ^ Джеймс Киркланд; Дэвид Кармайкл; Кристофер Л. Тинкер; Грегори Л. Тинкер (май 2006 г.). Устранение неполадок Linux для системных администраторов и опытных пользователей. Prentice Hall. п. 62. ISBN  9780132797399. Получено 5 февраля, 2016.
  18. ^ «OS X: о панике ядра - служба поддержки Apple». support.apple.com.
  19. ^ «Новый экран смерти для Mac OS X». OSXBook.com.