본문 바로가기

Skills/System

Kernel 패닉시 떨어지는 Taint 에대해서..

Taint 가 뭐냐면... 뭐 단어는 구글단어장에서 찾아!!!

일단 Kernel 패닉등이 일어나면 코어에 혹은 로그에 관련 로그가 찍히는데,

거기보면 Pid: 15652, comm: scopeux Tainted: P      2.6.9-89.ELsmp 이런게 남는다. 여기에 있는 Tainted다.

대략 정리해보자면 이 상태를 찍어주는 Flag 의 종류는 레드햇의 경우 총 7개가 있다..
(소스보기 귀찮아서 그냥 매뉴얼만 봤다.. 디테일하게 묻진 말자 :P )

1. P: Proprietary License 를 갖고있는 모듈이 문제를 일으켰다는 내용으로 독점적 라이센스를 뜻한다.
   즉 써드파티따위에서 GNU 나 GPL 아래 있는 모듈이 아닌 자체제작된 모둘이라는 것으로 source 코드에
   대한 지원이 불가능함을 뜻한다. 즉 일단 써드파티 모듈부터 까고 봐야 한다는거지!

2. G: 잘 안나오는녀석이긴한데, 이건 말 그대로 GPL 에 영향에 있는 공개된 모듈에서 문제가 됬다는 것이다.
   P 의 반대로 생각하면 된다. 이경우엔 리눅스 커널 개발자가 알아서 해줄지도 모른다 :)

3. F: 강제로 로드된 모듈에서 결국 문제가 발생되어버렸다 라는 뜻으로, insmod 나 modprobe 의 -f 옵션으로
  강제 로드된 모듈에서 버전 정보등의 검사를 하는 도중 커널에 문제를 일으켰다는 내용으로 보면 된다.

4. R: 커널이 운영되고 있는 중에, 그리고 사용중인 모듈인데 강제로 (rmmod -f 옵션) Unload 시켰을때
  발생하는 플래그이다.. 결국 뻘짓거리 하지말고 정상적으로 사용하라는 것...

5. S: SMP 커널을 사용할때 CPU 할당 관련 문제시 발생하는 플래그이다.

6. M : MCE ( Machine Check Exception ) 에서 일으키는 문제에 대한 플래그로, CPU 온도가 높다던가,
  메모리 뱅크 및 슬롯이 잘못됬을때 하드웨어에서 감지하고 일으키는 문제에 대한 플래그.

7. B: Bad Page State 를 뜻하는 것으로, 리눅스가상메모리(virtual memory) 에서 잘못된 부분을 감지했을때
  사용되는 플래그이다. 보통 RAM 또는 메모리 캐쉬의 문제시 발생되곤 한단다..

자...7개다.. kernel Document 보면 사실 한 3개쯤 더 있는데, 난 7개만 썼다.. 왜?

오래된 문서를 보고 정리한거고, 커널문서에서는 tainted 에 대한 비트수만 나와있지 뭐라고 찍히는지는

안나아욌어서다... 짜증나게 깊이 묻지 말자... :)

대략 tainted 에서 뜨는 내용만 보고도 어디를 조져야 할지 나온다. 좀 이런것좀 보면서 일하잔 말이다! ㅠㅠ

어만 리눅스만 자꾸 잡아대려고 하지 말고!

근데 나 이거 열심히 쓰고 봤더니 예전에 내가 정리해서 쓰지 않았던가 라는 데자뷰현상이!!!!

블로그 뒤지다보면 간간히 예전에 썼다 생각했는데 없는것들이 있다...

뭐지.. 나 해킹당하나 머릿속 해킹... :(