커널이 더러워 지면 커뮤니티에서 지원하지 않는 상태임을 의미합니다 . 대부분의 커널 개발자는 오염 된 커널과 관련된 버그 보고서를 무시하고 커뮤니티 회원은 커널과 관련된 문제 진단을 진행하기 전에 오염 상태를 수정하도록 요청할 수 있습니다. 또한 커널이 오염되면 일부 디버깅 기능 및 API 호출이 비활성화 될 수 있습니다.
독점 드라이버가 관련된 대부분의 경우, 오염 상태를 무시해도 안전 하지만 커널이 오염되는 일부 시나리오는 심각한 시스템 문제를 나타낼 수 있습니다.
이 기능은 커널 문제를 올바르게 해결하기 어려운 조건을 식별하기위한 것입니다. 예를 들어, 독점 모듈을로드하면 커널 개발자가 모듈의 소스 코드에 액세스 할 수 없으므로 모듈이 커널에 수행 한 작업을 확인할 수 없으므로 커널 디버그 출력을 신뢰할 수 없게 만들 수 있습니다. 마찬가지로 커널에 이전에 오류 조건이 발생했거나 심각한 하드웨어 오류가 발생한 경우 커널에서 생성 된 디버그 정보가 신뢰할 수 없습니다.
커널은 다음과 같은 여러 가지 이유로 오염 될 수 있습니다 .
- 독점 (또는 비 GPL 호환) 커널 모듈 사용 — 이것은 오염 된 커널의 가장 일반적인 원인이며 일반적으로 독점 NVIDIA 또는 AMD 비디오 드라이버를로드 한 결과입니다
- 커널 소스 코드의 일부이지만 완전히 테스트되지 않은 스테이징 드라이버 사용
- 의 사용은 아웃 - 오브 - 트리 리눅스 커널 소스 코드에 포함되지 않은 모듈
- 커널 모듈의 강제로드 또는 언로드 (예 : 현재 버전의 커널 용으로 빌드되지 않은 모듈을 강제로 삽입)
- 지원되지 않는 특정 단일 프로세서 CPU (주로 이전 AMD Athlon 프로세서)에서 SMP (멀티 프로세서) 커널 사용
- ACPI DSDT 재정의, 전원 관리 버그 수정에 필요한 경우가 있습니다 (자세한 내용은 여기 참조).
- 머신 검사 예외 및 커널 oopses 와 같은 특정 중요 오류 조건
- 커널이 해결해야하는 시스템 펌웨어 (BIOS, UEFI)의 심각한 버그
이러한 각 조건은 커널에서 특정 플래그로 표시됩니다. SUSE와 같은 일부 Linux 공급 업체 는 공급 업체에서 지원하지 않는 모듈로드와 같은 조건을 표시하기 위해 추가로 오염 플래그 를 추가 합니다.
자세한 내용은 커널 설명서를 참조하십시오 . 거기에 나열된 오염 플래그가 있습니다 (_ 'blank'의 스탠드 인으로)
- G | P :로드 된 모든 모듈에 GPL 또는 호환 라이센스가있는 경우 G, 그렇지 않으면 독점 모듈이로드 된 것입니다. MODULE_LICENSE가 없거나 MODULE_LICENSE가있는 모듈은 insmod에 의해 GPL 호환으로 인식되지 않는 모듈은 독점적 인 것으로 간주됩니다.
- F | _ : "insmod -f"로 모듈을 강제로드 한 경우 그렇지 않으면 모든 모듈이 정상적으로로드 된 경우.
- S | _ : 멀티 프로세서를 실행하기에 안전한 것으로 인증되지 않은 하드웨어에서 실행되는 SMP 커널에서 oops가 발생한 경우. 현재 이것은 SMP가 불가능한 다양한 애슬론에서만 발생합니다.
- R | _ :에 의해 모듈이 강제로 언로드 된
rmmod -f
경우, 그렇지 않으면 모든 모듈이 정상적으로 언로드 된 경우.
- M | _ : 프로세서가 Machine Check Exception을 보고 한 경우 그렇지 않은 경우 Machine Check Exception이 발생하지 않습니다.
- B | _ : 페이지 해제 기능이 잘못된 페이지 참조 또는 예기치 않은 페이지 플래그를 발견 한 경우.
- U | _ : 사용자 또는 사용자 애플리케이션이 Tainted 플래그 설정을 구체적으로 요청한 경우.
- D | _ : 커널이 최근에 죽었다면, 즉 OOPS 또는 BUG가있었습니다.
- A | _ : ACPI 테이블이 재정의 된 경우.
- W | _ (. 일부 경고는 더 구체적인 더러운 플래그를 설정할 수 있지만) 경고가 이전에 커널에 의해 발행 된 경우
- C | _ : 스테이징 드라이버가로드 된 경우
- I | _ : 커널이 플랫폼 펌웨어 (BIOS 또는 이와 유사한)의 심각한 버그를 해결하는 경우.
- O | _ : 외부 빌드 ( "트리 외부") 모듈이로드 된 경우
- E | _ : 서명되지 않은 모듈이 모듈 서명을 지원하는 커널에로드 된 경우.
- L | _ : 이전에 시스템에서 소프트 잠금이 발생한 경우.
- K | _ : 커널이 실시간 패치 된 경우.