커널 패닉

최근 수정 시각:


파일:external/upload.wikimedia.org/Kernel-panic.jpg

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

1. 개요[편집]

Kernel panic

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

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

2. 왜 생기는가?[편집]

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

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

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

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

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

3. 각종 OS들의 커널 패닉 화면[편집]

파일:panic10.6.png

파일:macos Kernel panic.jpg

  • macOS의 경우 초기에는 커널 패닉이 윈도 XP 블루스크린과 비슷한 모양이었고 맥이 완전히 정지했지만, 10.2판부터는 메시지가 뜨고 맥 자체는 정지하지 않는다. 영어, 프랑스어,[7] 스페인어, 독일어, 일본어, 중국어(간체)[8]의 6개 국어로 컴퓨터를 재시동하라는 메시지가 표시된다. 그림 참조. 10.8부터는 커널 패닉이 발생할 경우 일단 컴퓨터가 재부팅된 뒤, 메시지 창을 띄운다. 이 때문에 멘트가 살짝 바뀌었고[9] 메시지 창의 서체가 Lucida Grande에서 Helvetica Neue로 변경되었고, 화면이 회색으로 덮이고 메시지가 뜬다. 경우에 따라 저 두번째 사진처럼 부팅중에 이렇게 커널패닉이 발생하는 경우가 있는데, 대다수 사람들은 이게 커널 패닉 걸린지도 모른다(...) 보통 IOKIT 상에서 패닉이 걸리면 이 화면이 뜬다. S/W적인 측면도 있겠지만, 하드웨어 측면을 보는 걸 추천한다. 단, 해킨토시 삽질을 한다면 매우 익숙해진다... 첫 5번 정도는 샷건을 치다가 나중에는 해탈해서 헛웃음밖에 안나온다


파일:external/www.symantec.com/S5303538%20-%20Copy%20-%20Copy.jpg

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


파일:external/www.techmynd.com/oops-2.jpg


파일:external/www.androidpub.com/d649e50aefb951669ab0070db1649218.jpg


파일:attachment/wntkp.gif

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

4. 여담[편집]

사용자들에겐 이렇게 혈압을 올리는 커널 패닉이지만, 의외로 이를 좋아하는 사람도 있는데(?) 바로 해커들이다. 커널에서 권한 상승을 위해 임의 코드 실행 취약점을 찾기 위해서는 커널 소스를 직접 눈으로 분석하여 취약점을 찾거나, 또는 퍼징(Fuzzing) 이라는 무작위 데이터 삽입 기법으로 취약점을 찾게 되는데 이 떄 취약점에 작용하는 데이터가 들어갔을 경우, 비정상적인 데이터로 인해 커널 패닉이 출력될 수 있다. 물론 이는 취약점을 찾은 것이므로 해커에게는 올레!

이는 일반적인 유저 모드 소프트웨어에서 취약점을 찾을 때도 똑같이 적용되는 얘기인데, 단지 대상이 커널로 바뀌었을 뿐 유저 모드 소프트웨어 대상으로 퍼징을 할 경우 커널 패닉이 아닌 소프트웨어 크래시(Crash) 가 발생하여 종료되는 것을 모니터링하여 취약점을 찾게 된다.

[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] Windows 8까지는 서명이 없는 드라이버라면 경고 메시지는 떠도 사용자 선택에 따라 여전히 설치는 가능했지만, Windows 10부터는 WHQL 서명이 없는 드라이버의 설치를 아예 막아버려서 일반적인 방법으론 설치할 수가 없다.[5] 뿐만 아니라 9x와는 달리 웬만한 오류들은 OS의 동작이 더 이상 불가능한 상황이 아니라면 그냥 가볍게 씹어주시는 위엄을 발휘한다. 이게 다 구조가 달라서야 구조가[6] 모두 그렇다는 것은 아니다! Windows 의 경우 UMDF 라는 유저 모드에서 동작하는 드라이버 개발 프레임웍을 지원하고 있다. 이는 중간에 추상화 계층을 하나 더 두어서 구현되고, 이 드라이버에서 크래시가 나도 커널 패닉은 발생하지 않는다. 물론 모든 드라이버가 이렇게 개발할 수 있는 것은 아니다.(어쩔 수 없이 커널 모드에서 동작해야 하는 드라이버도 있기 때문이다)[7] 10.6 Snow Leopard 때 추가됨.[8] 电脑因出现问题而重新启动。请按一下按键,或等几秒钟以继续启动。10.8 Mountain Lion 때 추가됨.[9] You need to restart your computer → Your computer restarted because of a problem[10] 메시지가 매우 많아 보이지만 Kernel panic 위의 한 두줄 정도 뭔가 꼬이기 시작하는 메시지를 제외하고는 모두 정상적인 동작 중에 현재 상태를 알리는 메시지이다. 저 아래 Palm Web OS도 마찬가지.

분류