E D R , A S I H C RSS

커널 패닉

last modified: 2015-08-12 14:50:25 by Contributors




당신이 컴퓨터로 무엇을 하고 있었든지 간에, 그러한 것들을 단숨에 한줌의 재로 날려버리는 OS의 비밀무기.

Contents

1. 소개
2. 왜 생기는가?
3. 각종 OS들의 커널 패닉 화면


1. 소개

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

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

2. 왜 생기는가?

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

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

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

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

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

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

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

10.2판부터는 메시지가 뜨고 맥 자체는 정지하지 않는다. 그림 참조.

10.8부터 화면이 회색으로 덮이고 메시지가 뜬다. 이 때 아무 키나 누르거나 기다리면 재부팅된다.

리눅스의 커널 패닉은 접하기 그리 어려운 것은 아니지만 별 거 없다. 시커먼 콘솔 화면에 Kernel panic 어쩌고 저쩌고 하는 메시지가 전부이다. 그리고 시스템 다운.[5]


그 외에,

SPARC의 커널 패닉의 모습. 위쪽의 이모티콘이 인상적이다.고스트 버스터즈의 슬라이머 같다


아이폰에서의 커널패닉 모습. 다른 경우엔 부팅 스크린을 오래 띄워두기도 한다.



NT커널 윈도우 커널패닉
wntkp.gif
[GIF image (17.05 KB)]


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


리눅스를 쓴다면 BSOD라는 화면보호기를 설치해 보자. 온갖 커널 패닉 화면을 볼 수 있으며, 심지어는 구형 ATM의 커널 패닉도 맛볼 수 있다.
----
  • [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] 메시지가 매우 많아 보이지만 Kernel panic 위의 한두줄정도 뭔가 꼬이기 시작하는 메시지를 제외하고는 모두 정상적인 동작 중에 현재 상태를 알리는 메시지이다. 저 아래 Palm Web OS도 마찬가지.
  • [6] 사실 고양이가 일으킨게 맞다. 주인장이 끄적인 을보면, 주인장이 블루투스 키보드를 갖고 노트북 우분투를 만지작하다 냥이가 갑툭튀해 노트북 기판을 두드리다가 그만...
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2015-08-12 14:50:25
Processing time 0.3688 sec