커널 패닉

(커널패닉에서 넘어옴)

Kernel panic

Kernel-panic.jpg

1 소개

어떤 운영체제커널이 와장창 꼬여버리는 상태로, 쉽게 말해 운영체제의 개판 5분 전 상태. 커널은 운영체제의 핵심이므로, 이놈이 꼬여버리게 되면 컴퓨터를 사용할 수 없다. 이 경우엔 재부팅이 답이지만, 그 다음부터 아예 쓸 수 없는 경우도 가끔 발생한다. 다만, 윈도우는 이런 경우에 레드 스크린을 띄울 수 있는데, 요즘은 블루스크린 하나로 다 띄운다. 인간도 스트레스 등으로 꼬여서 갑작스럽게 공황발작을 하기도 한다?

흔히 윈도우에서 보여지고 잘 알려진 블루스크린이 대표적인 커널 패닉이며,[1] 유닉스에도 macOS에도 있다. 사실 커널 패닉이 없는 운영체제는 없으며, iOS, 안드로이드 자체에서도 발생하는 건 마찬가지다. 따라서 어느 기계에서나 발생할 수 있으며, ATM, 스마트폰 등도 예외는 아니라는 소리. 단, 심각하게 불안한 윈도 9x 계열을 제외하곤 잘 보이지 않을 뿐이다.

2 왜 생기는가?

커널 패닉은 커널에서 예기치 못한 형식이나 정상적으로 다룰 수 없는 명령어를 수신했을 때에 발생한다.[2] 대부분은 CPU가 이를 발생시키지만, 커널 내부에서 자체적으로 발생시키기도 하며, 어떤 방법으로도 더이상 진행할 수 없게 되면 재부팅 밖엔 답이 없다.

한편, 윈도우즈 98/Me 시절의 블루스크린은 서드파티 디바이스 드라이버의 탓이 크다.[3] OS와의 동작 호환이 완벽하게 검증되지 않은 디바이스 드라이버가 마구 양산되었고 디바이스 드라이버의 특성상(일반적인 프로그램과 달리 커널 내부에서 동작한다) 커널을 매우 불안정하게 만들었던 것으로 추정. 당장 빌 게이츠가 주관한 시연회에서부터 스캐너를 USB로 꼽자마자 블루스크린이 뜨면서 일반 사용자에게 이런 일이 일어날 것임을 예고하기도 하였다. 고질적인 메모리 누수와 오동작하는 디바이스 드라이버의 시너지는 유저들에게 인내심의 진정한 의미를 재발견하도록 만들었다.

이 때문에 윈도우즈 2000 이후의 디바이스 드라이버들은 마이크로소프트의 인증 센터에서 WHQL 서명을 받지 않는 한 설치시에 경고 메시지가 뜨게 된다. 그래서 윈도우 2000이후부턴 어지간한 해서는 커널패닉 창이 뜨지 않는다.[4] 커널 모드 드라이버에서 문제가 발생하였다면? 잠시 정지했다가 드라이버 재시작을 시도한다. 재시작에 성공했다면 커널 패닉 메시지는 뜨지 않는다.

하지만 어디까지나 로드를 시도했을 때의 드라이버가 멀쩡한 경우의 이야기, 어차피 드라이버는 커널 모드에서 동작하므로 로드된 드라이버가 커널 모드에서 에러를 발생시키면 그건 거의 100% 확률로 커널 패닉 크리가 발생한다. 드라이버를 정지합니다. 앙대잖아? 버틸 수가 없다! 이건 어떠한 OS이건 간에 다 똑같으며, 커널 패닉이 없는 운영체제가 절대로 나타날 수 없는 좋은 이유가 된다.

어찌됐든 커널 패닉 자체는 더 이상의 장치 고장을 막기 위해 커널에서 수행하는 운영체제의 "최후통첩"이다. 그런 만큼 커널 패닉이 떴다고 좌절하지 말길 바라며, 너무 자주 뜬다 싶은 경우에는 모든 부분을 점검하는 자세도 필요하다.

3 각종 OS들의 커널 패닉 화면

macOS의 경우 초기에는 커널 패닉이 윈도 XP 블루스크린과 비슷한 모양이었고 맥이 완전히 정지했지만,

Panic10.6.png
Mac OS X[5] 10.6-10.7의 커널 패닉

10.2판부터는 메시지가 뜨고 맥 자체는 정지하지 않는다. 영어, 프랑스어,[6] 스페인어, 독일어, 일본어, 중국어(간체)[7]의 6개 국어로 컴퓨터를 재시동하라는 메시지가 표시된다. 그림 참조. 10.8부터는 커널 패닉이 발생할 경우 일단 컴퓨터가 재부팅된 뒤, 메시지 창을 띄운다. 이 때문에 멘트가 살짝 바뀌었고[8] 메시지 창의 서체가 Lucida Grande에서 Helvetica Neue로 변경되었고, 화면이 회색으로 덮이고 메시지가 뜬다.

[1]
저 윗 경우 뿐만 아니라 부팅중에 이렇게 커널패닉이 발생하는 경우가 있는데, 대다수 사람들은 이게 커널 패닉 걸린지도 모른다(...) 보통 IOKIT 상에서 패닉이 걸리면 이 화면이 뜬다. S/W적인 측면도 있겠지만, 하드웨어 측면을 보는 걸 추천한다. 단, 해킨토시 삽질을 한다면 매우 익숙해진다... 첫 5번 정도는 샷건을 치다가 나중에는 해탈해서 헛웃음밖에 안나온다


리눅스의 커널 패닉은 접하기 그리 어려운 것은 아니지만 별 거 없다. 시커먼 콘솔 화면에 Kernel panic 어쩌고 저쩌고 하는 메시지가 전부이다. 그리고 시스템 다운.[9]
가끔 모니터에 표시조차 할 수 없는 상황에서는 키보드의 Caps, Scroll, Num Lock 등으로 알려주거나 비프음 등으로 표시하기도 한다.

그 외에,

oops-2.jpg
SPARC의 커널 패닉의 모습. 위쪽의 깨알같은 아스키 아트가 압권.

[2]
SPARC의 커널 패닉을 위키러가 직접 만들어 보았다.

d649e50aefb951669ab0070db1649218.JPG
안드로이드에서의 커널 패닉.

파일:XW6YK.jpg
모 인공지능의 커널 패닉[10]

파일:Attachment/wntkp.gif
NT 커널 윈도우 커널 패닉.

MULTIPLE_IRP_COMPLETE_REQUESTS이 버그 확인 문자열, 0x00000044이 버그 체크 코드, Ntfs.sys가 커널패닉을 일으킨 원인 드라이버이다. 문자열과 체크 코드를 구글등의 검색엔진에 검색해 알려진 해결책을 찾을 수 있다. 예시에서는 원인 드라이버가 Ntfs.sys이지만 그 외 다른 드라이버가 문제를 일으키는 경우도 있으며 오류가 일어난 모듈 정보가 없는 경우도 있다. 같은 드라이버가 반복적으로 문제을 일으킬 경우에는 해당 드라이버를 업데이트/롤백 하거나 제조업체에 문의하는 것 외에는 별다른 방법이 없으며 그 드라이버를 삭제하면 커널 패닉은 일어나지 않지만 장치나 프로그램은 사용할 수 없다. 간혹 오류 모듈 정보가 없는 경우도 있는데 안전모드로 부팅이 되고 오류가 발생하지 않는다면 역시 프로그램 문제인 경우가 많다. 백신이나 방화벽같은 프로그램에서 간혹 발생하며 업데이트를 기다리거나 가능한 경우 이전 버전으로 돌아가거나 프로그램을 삭제하면 해결할 수 있다.

IMG_2893r.JPG

힌트: 범인은 이안에 있습니다[11]
  1. NT 계열에선 100%. 하지만 9x 계열의 Windows에서는 일부 블루스크린만 해당한다. 그 이전의 버전(1.0, 2.xx, 3.xx)에서는 아예 커널 패닉이 아니다.
  2. 소프트웨어나 하드웨어의 오동작, 전기적인 노이즈로 인한 꼬인 데이터 취급 등.
  3. 물론 이 탓도 있으나 9x 계열 자체에는 여러가지 보안 허점들도 있었고 무엇보다도 NT 계열의 Windows와는 그 구조가 너무나도 달랐다! 예를 들면, DLL과 같이 동적으로 로드되어 사용되는 라이브러리의 경우 NT 계열처럼 각각의 Process Address Space에 올라가는 게 아니라, Shared Memory에 올라갔다. 만일 해당 DLL이 올라간 공간에 누군가가 조금이라도 잘못된 조작을 하게 된다면 어떨까? 버틸 수가 없다! 게다가 덤으로 일반적으로 커널 모드에서만 가능한 Port I/O 명령같은 Privileged Instruction을 사용자 모드에서 실행되는 일개 응용 프로그램조차도 충분히 사용할 수 있었다!(이러한 점을 악용한 대표적인 바이러스가 바로 CIH 바이러스) 어쨌든 OS 자체의 결함에다가 잘못된 서드파티 디바이스 드라이버에 의한 시너지 효과까지 받아(...) 일어났다고 볼 수 있다.
  4. 뿐만 아니라 9x와는 달리 웬만한 오류들은 OS의 동작이 더 이상 불가능한 상황이 아니라면 그냥 가볍게 씹어주시는 위엄을 발휘한다. 이게 다 구조가 달라서야 구조가
  5. macOS라는 명칭은 10.12 Sierra 부터 사용되기 시작했다.
  6. 10.6 Snow Leopard 때 추가됨.
  7. 电脑因出现问题而重新启动。请按一下按键,或等几秒钟以继续启动。10.8 Mountain Lion 때 추가됨.
  8. You need to restart your computer → Your computer restarted because of a problem
  9. 메시지가 매우 많아 보이지만 Kernel panic 위의 한 두줄 정도 뭔가 꼬이기 시작하는 메시지를 제외하고는 모두 정상적인 동작 중에 현재 상태를 알리는 메시지이다. 저 아래 Palm Web OS도 마찬가지.
  10. 윗쪽의 AMBIENT TEMPERATURE OVERLOAD에서 알 수 있듯이, 용광로에 빠지면서 CPU가 과열되어 발생한 커널 패닉이다. 화면의 기본 색상이 빨간색이고 해당 화면이 뜬 후 3초 뒤에 작동이 정지하므로 레드 스크린의 일종이기도 하다.
  11. 주인장이 끄적인 을 보면, 주인장이 블루투스 키보드를 갖고 노트북 우분투를 만지작하다 냥이갑툭튀해 노트북 기판을 두드리다가 그만... 그런데 잘 보면 화면에 마우스 커서가 보인다! 설마..? 가상머신일수도 있지 왜 촬영자 기를 죽이고 그래요