Kernel panic | это... Что такое Kernel panic? (original) (raw)

Linux 2.6 не может смонтировать корневую файловую систему.

Kernel panic (англ.: тревога, сбой в ядре) — сообщение о критической ошибке ядра операционной системы, после которой операционная система не может продолжать дальнейшую работу[1].

Обычно этот термин применяется в среде операционных систем типа UNIX. Её имя связано с текстом ошибки вида «Kernel panic: …» и именем функции ядра panic() из оригинальной ОС UNIX[2].

Kernel panic возможен на Android, который базируется на ядре Linux. Поскольку Mac OS X, а также iOS базируются на Darwin, относяшемуся к классу UNIX-систем, они тоже подвержены kernel panic[3].

Содержание

История

История Kernel panic тесно связана с историей операционной системы UNIX, которая была разработана в конце 1960-х годов сотрудниками Bell Labs, в первую очередь Кеном Томпсоном, Деннисом Ритчи и Дугласом Макилроем.

Сообщение Kernel panic было введено в ранних версиях UNIX и представляло собой важное отличие в философии этой операционной системы от главного конкурента на то время и предшественника UNIX, Multics. Multics был разработан для работы на 36-битном мейнфрейме GE-645, в то время как UNIX разрабатывался для гораздо менее мощного 18-битного миникомпьютера PDP-7 и по этой причине операционной системе было доступно меньше ресурсов, что привело к необходимости их экономии, в том числе и при обработке ошибок. Разработчик Multics, Том ван Влек, так описывает это изменение в дискуссии с разработчиком UNIX Деннисом Ритчи[4]:

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

Оригинальный текст (англ.)

I remarked to Dennis that easily half the code I was writing in Multics was error recovery code. He said, «We left all that stuff out. If there’s an error, we have this routine called panic, and when it is called, the machine crashes, and you holler down the hall, ‘Hey, reboot it.’

Изначальная функция panic() принципиально не менялась от UNIX V5 до базирующихся на VAX систем 32V и выводила только сообщение об ошибке без дополнительной информации, после чего система переводилась в бесконечный пустой цикл. Позже, в процессе развития UNIX, функция panic() была доработана и стала выводить на терминал разнообразную информацию, необходимую для отладки.

Подобный принцип обработки критических ошибок был перенят большинством более поздних операционных систем, например Mac OS[3] или Microsoft Windows[5].

Причины Kernel panic

Сообщение об аппаратной ошибке и Kernel panic.

Одной из самых распространённых причин kernel panic является невозможность найти и смонтировать корневую файловую систему. Часто это ошибка конфигурации, которая может быть исправлена при перезагрузке ядра вручную[6].

В Linux возникновению паники ядра зачастую предшествует состояние под названием oops. В ряде случаев oops может приводить к такому же неработоспобному состоянию системы, как и паника ядра[1].

В большинстве остальных случаев причиной Kernel panic является критическая аппаратная ошибка (отказ оперативной памяти, ошибка процессора, материнской платы, графической карты или другого критически важного устройства) или ошибка в самом ядре операционной системы, например, попытка обращения к ошибочному или запрещённому адресу в памяти. Также причиной для Kernel panic могут быть ошибки в драйверах периферийных устройств или ошибки в файловой системе[3][7]. Во время финальной стадии инициализации пространства пользователя, kernel panic обычно возникает тогда, когда не удалось запустить init, так как, несмотря на запущенное и работоспособное ядро, сама система остаётся непригодной к дальнейшей работе[8]. Kernel panic может быть вызван и прикладными программами, если те некорректно работают с ядром. Так, ошибка в Google Chrome вызывала Kernel panic на Mac OS X[9].

Исходный код функции panic()

Исходный код функции panic() в UNIX V6[10]:

char panicstr; /

}

Обработка Kernel panic

В нормальном случае при возникновении Kernel panic происходит остановка работы операционной системы с выдачей сообщений об ошибках на экран, после чего система ожидает выключения компьютера или перезагрузки. Однако, такая обработка этого события неприемлема тогда, когда простой компьютера крайне нежелателен или человека нет рядом (например на удалённых серверах или в нерабочее время)[11].

В современных операционных системах, таких как GNU/Linux, FreeBSD или Solaris, существует возможность изменить стандартное поведение функции panic() и производить перезагрузку компьютера автоматически. В GNU/Linux данная настройка осуществляется при помощи procfs[11]:

echo 5 > /proc/sys/kernel/panic

Чтобы изменения действовали в GNU/Linux и после перезагрузки, необходимо добавить в файл /etc/sysctl.conf строку:

Значение параметра kernel.panic — количество секунд, после которых произойдёт перезагрузка. При установке отрицательного или равного 0 значения этого параметра, автоматической перезагрузки не произойдёт[11].

Также в системах BSD есть специальная опция в ядре. Цитата из файла /usr/src/sys/conf/NOTES[12]:

Set the amount of time (in seconds) the system will wait before

rebooting automatically when a kernel panic occurs. If set to (-1),

the system will wait indefinitely until a key is pressed on the

console.

options PANIC_REBOOT_WAIT_TIME=16

В Solaris автоматическая перезагрузка после Kernel panic является стандартным поведением системы[13].

Перезагрузка после Kernel panic имеет и очень серьёзный недостаток, особенно если это изменение не пропадает после первой перезагрузки. В случае, если перезагрузка не устраняет ту ошибку, которая вызывает Kernel panic, система будет останавливаться и перезапускаться вновь и вновь, что может привести к аппаратным ошибкам или потерям данных[6]. В случае если такая ситуация возникла после сборки нового ядра, решением проблемы может стать загрузка сохранённой копии старого, работающего ядра. Как правило, для этого достаточно вручную указать при загрузке путь к работающей копии ядра[14].

Для изучения причины паники ядра Linux может пригодиться файл System.map[15].

Kernel panic в различных операционных системах

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

В не-UNIX операционных системах

Синий экран смерти Windows XP/2003/Vista/7.

В то время как термин Kernel panic употребляется в основном для UNIX-совместимых операционных систем, в других операционных системах обработка критических ошибок методом остановки системы тоже прижилась и получила следующие названия:

См. также

Примечания

  1. 1 2 James Kirkland, Christopher L. Tinker, 2002, p. 51
  2. Информация о функции panic() на сайте UNIX.com. BSD manpage on The UNIX and Linux Forums (August 11, 1995). Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  3. 1 2 3 4 Причины Kernel panic в Mac OS X. macmaps.com. Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  4. Unix and Multics. www.multicians.org (03/21/93). Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  5. 1 2 3 Информация о поведении Windows в нештатных ситуациях. Microsoft Corp.. Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  6. 1 2 Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum, 2008, p. 170
  7. Информация о причинах Kernel panic на сайте Apple. Apple Inc.. Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  8. Wolfgang Mauerer Professional Linux Kernel Architecture. — John Wiley and Sons. — P. 1238–1239. — ISBN 978-0-470-34343-2
  9. Google comes clean: Yes, your kernel panic is Chrome's fault. Betanews (07.2012). Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  10. Исходный код prf.c UNIX V6. Unix-tree. Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  11. 1 2 3 Kropper, 2005, p. 178
  12. OpenBSD SYSCTL.CONF man page. OpenBSD. Архивировано из первоисточника 6 августа 2012. Проверено 27 декабря 2012.
  13. Solaris System Engineers , 2009, p. 9.3.4.2
  14. Michael Urban, Brian Tiemann, 2002, p. 172
  15. Michael Schwarz, 2002, p. 21
  16. James Kirkland, Christopher L. Tinker, 2002, p. 52
  17. 1 2 3 4 A New Screen of Death for Mac OS X. Amit Singh. Архивировано из первоисточника 6 августа 2012. Проверено 30 июля 2012.
  18. Ted Landau, 2000, p. 133
  19. Ted Landau, 2000, p. 83
  20. 1 2 Eric S. Raymond, 1996, p. 230

Литература

Ссылки

П: Портал «Компьютерные технологии»
commons: Kernel panic на Викискладе?
Просмотр этого шаблона Экраны смерти
Цветные Белый · Зелёный · Красный · Пурпурный · Синий · Чёрный
Другие экраны Kernel panic · Бомба · Красное кольцо смерти · Строчка из бомб · Guru Meditation · Kill screen · Вращающийся курсор ожидания · ✰ Эта статья входит в число хороших статей русскоязычного раздела Википедии. Категории: Экраны смертиЯдра операционных систем Wikimedia Foundation.2010. Игры ⚽ Нужна курсовая? Рогоз Тесьма Полезное Смотреть что такое "Kernel panic" в других словарях: Kernel panic — en Linux … Wikipedia Español Kernel panic — A kernel panic is an action taken by an operating system upon detecting an internal fatal error from which it cannot safely recover; the term is largely specific to Unix and Unix like systems. The kernel routines that handle panics (in AT T… … Wikipedia Kernel Panic — Eine Kernelpanic auf einer Linux Konsole Eine Kernel panic ist eine Fehlermeldung eines Betriebssystemkerns nach Auftreten eines Fehlers, nach dem sich das Betriebssystem in einem undefinierten Zustand befindet und keine Möglichkeit mehr besteht … Deutsch Wikipedia Kernel panic — Eine Kernel panic ist eine Fehlermeldung eines Betriebssystemkerns nach Auftreten eines Fehlers, nach dem sich das Betriebssystem in einem undefinierten Zustand befindet und keine Möglichkeit mehr besteht, das System kontrolliert weiter zu… … Deutsch Wikipedia Kernel panic — Panique du noyau Panique d un noyau Linux QEMU … Wikipédia en Français Kernel panic — El kernel panic es un mensaje desplegado por un sistema operativo una vez detectado un error interno de sistema del cual no se puede recuperar. Los Kernel Panics usalmente proveeN información de depuración encrpitada que es útil solo para los… … Enciclopedia Universal kernel panic — ● ►en loc. m. ►DEBUG Un panic de la part du kernel. Cela fait très peur, en général, surtout quand ça arrive sur un serveur de production, car c est généralement lié à un très gros problème … Dictionnaire d'informatique francophone Kernel Panic — … Википедия Panic (disambiguation) — Panic may refer to:* Panic, a sudden, overwhelming fear * Panic, or panic grass, an older name used to indicate members of the genus Panicum * Panic (album), an album by the punk rock group MxPx * Panic (comic), an EC Comic published from 1954 to … Wikipedia Kernel-Panik — Eine Kernelpanic auf einer Linux Konsole Eine Kernel panic ist eine Fehlermeldung eines Betriebssystemkerns nach Auftreten eines Fehlers, nach dem sich das Betriebssystem in einem undefinierten Zustand befindet und keine Möglichkeit mehr besteht … Deutsch Wikipedia 18+ © Академик, 2000-2024 Обратная связь:Техподдержка,Реклама на сайте 👣 Путешествия Экспорт словарей на сайты, сделанные на PHP, Joomla, Drupal, WordPress, MODx. Пометить текст и поделиться Искать во всех словарях Искать в переводах Искать в Интернете Поделиться ссылкой на выделенное