Jump to content

Паника ядра

Сообщение о панике ядра из Linux системы
Паника ядра OpenSolaris.
Паника ядра OpenSolaris .
Паника ядра в Ubuntu 13.04 «Raring Ringtail» (ядро Linux 3.8) в Oracle VM VirtualBox

Паника ядра (иногда сокращенно КП). [1] ) — это мера безопасности, принимаемая операционной системы при ядром обнаружении внутренней фатальной ошибки , из-за которой либо оно не может безопасно восстановиться, либо продолжение работы системы будет иметь более высокий риск серьезной потери данных. Этот термин в значительной степени специфичен для Unix и Unix-подобных систем. Эквивалентом в операционных системах Microsoft Windows является стоп-ошибка , часто называемая «синим экраном смерти».

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

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

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

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

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

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

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

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

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

Ниже приведена реализация окончательной инициализации ядра Linux в kernel_init(): [13]

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

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

[ редактировать ]
Паника ядра, как видно на консоли iKVM

Паника ядра возникает в Linux, как и в других Unix-подобных системах; однако серьезные, но нефатальные ошибки могут вызвать другой тип ошибки, известный как « kernel oops» . [14] В этом случае ядро ​​обычно продолжает работать после завершения нарушителя процесса- . Поскольку сообщение oops может привести к тому, что некоторые подсистемы или ресурсы станут недоступными, это может позже привести к полной панике ядра.

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

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

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

Иногда, когда в течение трех минут после первого происходит пять или более паник ядра, Mac отображает запрещающий знак в течение 30 секунд, а затем выключается; это известно как «повторяющаяся паника ядра». [18]

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

См. также

[ редактировать ]
  1. ^ «КП — Kernel Panic (Linux) | AcronymFinder» . www.acronymfinder.com . Архивировано из оригинала 26 октября 2015 года . Проверено 6 января 2016 г.
  2. ^ «FreeBSD 11.0 — справочная страница по панике (раздел 9 freebsd) — Команды Unix и Linux» . www.unix.com . Архивировано из оригинала 1 апреля 2024 года . Проверено 26 октября 2010 г.
  3. ^ «ошибка загрузки-init умерла - Форумы Unix Linux - HP-UX» . www.unix.com . Архивировано из оригинала 1 апреля 2024 года . Проверено 12 июня 2013 г.
  4. ^ Рэндольф Дж. Гербер (1 сентября 1999 г.). «Re: ПАНИКА: инициализация умерла» . Группа новостей : comp.sys.sgi.admin . Архивировано из оригинала 22 января 2011 года . Проверено 9 декабря 2017 г.
  5. ^ Дэниел П. Северек; Роберт С. Сварц (1998). Надежные компьютерные системы: проектирование и оценка . АК Петерс, ООО с. 622. ИСБН  978-1-56881-092-8 . Проверено 6 мая 2011 г.
  6. ^ «Юникс и мультики» . www.multicians.org . Архивировано из оригинала 5 августа 2012 года . Проверено 25 мая 2005 г.
  7. ^ «Исходный код /usr/sys/ken/prf.c» . Архивировано из оригинала 24 февраля 2021 г. из V6 UNIX.
  8. ^ Стивен М. Хэнкок (22 ноября 2002 г.). Устранение неполадок Tru64 UNIX: диагностика и исправление системных проблем. Коллекция HP Technologies SeriesITPro . Цифровая пресса. стр. 119–126. ISBN  978-1-55558-274-6 . Проверено 3 мая 2011 г.
  9. ^ Майкл Джанг (2006). Неудобства Linux для гиков . O'Reilly Media, Inc., стр. 267–274. ISBN  978-0-596-00801-7 . Проверено 29 апреля 2011 г.
  10. ^ Дэвид Пог (17 декабря 2009 г.). Переход на Mac: недостающее руководство, Snow Leopard Edition . О'Рейли Медиа, Инк. с. 589. ИСБН  978-0-596-80425-1 . Проверено 4 мая 2011 г.
  11. ^ Грег Кроа-Хартман (2007). Коротко о ядре Linux . О'Рейли Медиа, Инк. с. 59. ИСБН  978-0-596-10079-7 . Проверено 3 мая 2011 г.
  12. ^ Вольфганг Мауэрер (26 сентября 2008 г.). Профессиональная архитектура ядра Linux . Джон Уайли и сыновья. стр. 1238–1239. ISBN  978-0-470-34343-2 . Архивировано из оригинала 1 апреля 2024 года . Проверено 3 мая 2011 г.
  13. ^ "linux/init/main.c" . Перекрестный справочник LXR . Архивировано из оригинала 6 октября 2022 года.
  14. ^ « Драйверы устройств Linux , глава 4» (PDF) . Архивировано (PDF) из оригинала 14 ноября 2014 г. Проверено 21 июля 2016 г.
  15. ^ Джеймс Киркланд; Дэвид Кармайкл; Кристофер Л. Тинкер; Грегори Л. Тинкер (май 2006 г.). Устранение неполадок Linux для системных администраторов и опытных пользователей . Прентис Холл . п. 62. ИСБН  9780132797399 . Архивировано из оригинала 1 апреля 2024 года . Проверено 5 февраля 2016 г.
  16. ^ «OS X: О панике ядра — Служба поддержки Apple» . support.apple.com . Архивировано из оригинала 21 мая 2013 года.
  17. ^ «Новый экран смерти для Mac OS X» . OSXBook.com . Архивировано из оригинала 1 мая 2012 года . Проверено 30 апреля 2011 г.
  18. ^ «OS X: О панике ядра — Служба поддержки Apple» . support.apple.com . Архивировано из оригинала 24 мая 2018 года.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 19f3eeafa838c8e91864818fa579b742__1722266940
URL1:https://arc.ask3.ru/arc/aa/19/42/19f3eeafa838c8e91864818fa579b742.html
Заголовок, (Title) документа по адресу, URL1:
Kernel panic - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)