커널 패닉

Kernel panic
Linux 시스템에서 커널 패닉 메시지
Oracle VM VirtualBoxUbuntu 13.04(Linux 3.8) 커널 패닉

커널 패닉(KP라고도[1] 함)은 시스템을 안전하게 복구할 수 없거나 계속 가동하면 중대한 데이터 손실 위험이 높아지는 내부 치명적인 오류를 검출했을 때 운영 체제커널에 의해 실행되는 안전 조치입니다.이 용어는 주로 Unix 및 Unix 유사 시스템에 고유합니다.Microsoft Windows operating system에서는, 「죽음의 블루 스크린」이라고 불리는 정지 에러입니다.

패닉을 처리하는 커널 루틴.panic()AT&T에서 파생된 BSD Unix 소스 코드에서는 일반적으로 콘솔에 오류 메시지를 출력하고 사후 디버깅을 위해 커널 메모리의 이미지를 디스크에 덤프한 후 시스템이 수동으로 재부팅될 때까지 기다리거나 자동 재부팅을 [2]시작하도록 설계되었습니다.제공되는 정보는 매우 기술적인 것으로, 시스템 관리자 또는 소프트웨어 개발자가 문제를 진단하는 데 도움이 되는 것을 목적으로 하고 있습니다.커널 패닉은 커널 공간 외부에서 발생한 오류로 인해 발생할 수도 있습니다.예를 들어 많은 Unix 운영체제는 사용자 공간에서 실행되는 init 프로세스가 [3][4]종료되면 패닉 상태가 됩니다.

역사

Unix 커널은 장애 검출 메커니즘으로서의 어사션을 통해 내부 일관성과 런타임 정확성을 유지합니다.기본적인 전제조건은 하드웨어와 소프트웨어가 올바르게 동작해야 하며 어설션이 실패하면 패닉(즉, [5]모든 시스템액티비티를 자발적으로 정지)이 발생한다는 것입니다.커널 패닉은 Unix의 초기 버전에서 도입되었으며 Unix와 이전 버전의 Multics의 디자인 철학 사이에 큰 차이가 있음을 보여주었다.멀티픽스 개발자인 Tom van Vleck는 UNIX 개발자인 Dennis Ritchie와 이 변화에 대해 논의했다고 회상합니다.

나는 Dennis에게 내가 Multics로 쓰고 있던 코드의 절반이 오류 복구 코드였다고 말했다.그는 "우리는 그 모든 것을 생략했다.오류가 발생하면 패닉이라는 루틴이 발생합니다. 호출되면 기계가 고장나면 복도를 따라 '이봐, 재부팅해'라고 외칩니다."[6]

오리지널panic()기능은 기본적으로 Fifth Edition UNIX에서 VAX 기반 UNIX 32V로 변경되지 않았으며 다른 정보가 없는 오류 메시지만 출력한 후 시스템을 무한 아이돌루프에 빠뜨렸습니다.

소스 코드panic()V6 [7]UNIX의 기능:

/* * 콘솔이 꺼져 있는 경우 * panicstr에 last에 대한 인수가 포함되어 있습니다. * 패닉에 대한 전화. */     *패닉스트러;  /* * 패닉은 해결할 수 없는 문제입니다. * 치명적인 오류입니다. * "panic: messg"를 동기화하여 출력하고 * 그 후 루프합니다. */ 패닉(s)  *s; {         패닉스트러 = s;         갱신하다();         인쇄물("메시지: %s\n", s);         위해서(;;)                 게으른(); } 

UNIX 코드베이스가 확장됨에 따라panic()또한 다양한 형식의 디버깅 정보를 콘솔에 덤프하도록 기능이 확장되었습니다.

원인들

하드웨어 장애 또는 운영 체제의 소프트웨어 버그로 인해 패닉이 발생할 수 있습니다.대부분의 경우 운영체제는 오류가 발생한 후에도 계속 작동할 수 있습니다.다만, 시스템은 불안정한 상태로, 시큐러티 위반이나 데이터 파손의 위험이 있는 것이 아니라, operating system은, 추가의 손상을 방지해, 에러의 진단을 용이하게 하기 위해서 정지해, 통상은 [8]재기동합니다.

소스 코드에서 커널 바이너리 이미지를 다시 컴파일한 후 커널이 올바르게 구성, 컴파일 또는 [9]설치되지 않은 경우 커널을 부팅하는 동안 커널 패닉이 발생할 수 있습니다.OS와의 호환성이 없거나 [10]디바이스 드라이버가 없어 기동시에 하드웨어나 RAM의 오동작도 치명적인 커널 에러의 원인이 될 수 있습니다.커널이 들어갈 수도 있습니다.panic()루트 파일 [11]시스템을 찾을 수 없는 경우커널 사용자 공간 초기화 마지막 단계에서 일반적으로 init이 실패하면 패닉이 트리거됩니다.초기 프로세스가 종료되면 시스템을 사용할 [12]수 없게 되므로 패닉이 발생할 수도 있습니다.

다음은 Linux 커널 최종 초기화의 구현입니다.kernel_init()다음과 같습니다.[13]

정적인 인트 __ref kernel_init(무효 *미사용의) {           ...          /* * 1개 성공 시까지 모두 시도합니다. * * Bourne 쉘은 init 대신 사용할 수 있습니다. * 정말 고장난 기계를 복구하려고 합니다. */         한다면 (execute_command) {                 한다면 (!run_init_process(execute_command))                         돌아가다 0;                 에러(%s을(를) 실행하지 못했습니다.기본값을 시도하는 중...\n",                         execute_command);         }         한다면 (!run_init_process("/sbin/init")                !run_init_process("/etc/init")                !run_init_process("/bin/init")                !run_init_process("/bin/sh"))                 돌아가다 0;          패닉("init을 찾을 수 없습니다.init= 옵션을 커널에 전달해 보십시오."               「Linux Documentation/init 를 참조해 주세요.txt를 참조해 주세요.); } 

운영체제 사양

리눅스

iKVM 콘솔에 표시되는 커널 패닉

커널 패닉은 다른 Unix 계열 시스템과 마찬가지로 Linux에서도 나타나지만 커널 [14]웁스라고 하는 다른 종류의 에러 상태를 발생시킬 수도 있습니다.이 경우 커널은 일반적으로 문제가 되는 프로세스를 종료한 에도 계속 실행됩니다.oops로 인해 일부 서브시스템 또는 리소스를 사용할 수 없게 될 수 있으므로 나중에 커널 패닉이 완전히 발생할 수 있습니다.

Linux에서는 커널 패닉으로 인해 키보드 LED가 점멸하여 심각한 상태를 [15]시각적으로 나타냅니다.

MacOS

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 이후:컴퓨터가 즉시 재기동하기 전에 응답하지 않게 됩니다.시스템 백업이 시작되면 커널 패닉으로 인해 시스템이 재시작된다는 경고 메시지가 몇 초 동안 표시되고 시스템이 다시 시작됩니다.메시지에는 중국어 번역이 포함되어 있습니다.

첫 번째 커널 패닉으로부터 3분 이내에 5개 이상의 커널 패닉이 발생하면 Mac은 30초 동안 금지 신호를 표시한 후 종료됩니다. 이를 "재귀 커널 패닉"이라고 합니다.

10.2 이상의 모든 버전에서는 텍스트는 스탠바이 기호 위에 겹쳐져 있으며 전체 화면이 아닙니다.디버깅 정보는 NVRAM에 저장되며 재부팅 시 로그 파일에 기록됩니다.10.7에는 커널 패닉 후 자동으로 재시작하는 기능이 있습니다.경우에 따라서는, 10.2 이후에서는, 스탠바이 기호와 함께, 에러를 상술한 흰색 텍스트가 표시되는 일이 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "KP - Kernel Panic (Linux) AcronymFinder". www.acronymfinder.com. Retrieved January 6, 2016.
  2. ^ "FreeBSD 11.0 - man page for panic (freebsd section 9) - Unix & Linux Commands". www.unix.com.
  3. ^ "boot failure-init died - Unix Linux Forums - HP-UX". www.unix.com.
  4. ^ Randolph J. Herber (September 1, 1999). "Re: PANIC: init died". Newsgroup: comp.sys.sgi.admin.
  5. ^ Daniel P. Siewiorek; Robert S. Swarz (1998). Reliable computer systems: design and evaluation. A K Peters, Ltd. p. 622. ISBN 978-1-56881-092-8. Retrieved May 6, 2011.
  6. ^ "Unix and Multics". www.multicians.org.
  7. ^ V6 UNIX의 소스 코드 /usr/sys/ken/prf.c
  8. ^ Steven M. Hancock (November 22, 2002). Tru64 UNIX troubleshooting: diagnosing and correcting system problemsHP Technologies SeriesITPro collection. Digital Press. pp. 119–126. ISBN 978-1-55558-274-6. Retrieved May 3, 2011.
  9. ^ Michael Jang (2006). Linux annoyances for geeks. O'Reilly Media, Inc. pp. 267–274. ISBN 978-0-596-00801-7. Retrieved April 29, 2011.
  10. ^ David Pogue (December 17, 2009). Switching to the Mac: The Missing Manual, Snow Leopard Edition. O'Reilly Media, Inc. p. 589. ISBN 978-0-596-80425-1. Retrieved May 4, 2011.
  11. ^ Greg Kroah-Hartman (2007). Linux kernel in a nutshell. O'Reilly Media, Inc. p. 59. ISBN 978-0-596-10079-7. Retrieved May 3, 2011.
  12. ^ Wolfgang Mauerer (September 26, 2008). Professional Linux Kernel Architecture. John Wiley and Sons. pp. 1238–1239. ISBN 978-0-470-34343-2. Retrieved May 3, 2011.
  13. ^ linux/init/main.c, LXR 크로스 레퍼런스
  14. ^ "Linux Device Drivers, Chapter 4" (PDF).
  15. ^ James Kirkland; David Carmichael; Christopher L. Tinker; Gregory L. Tinker (May 2006). Linux Troubleshooting for System Administrators and Power Users. Prentice Hall. p. 62. ISBN 9780132797399. Retrieved February 5, 2016.
  16. ^ "OS X: About kernel panics - Apple Support". support.apple.com.
  17. ^ "A New Screen of Death for Mac OS X". OSXBook.com.