커널 번역(기사,문서)

[번역] admin-guide/tainted-kernel.rst

iamyooon 2018. 9. 8. 16:57

Tainted kernels

몇몇 웁스 리포트는 program counter 뒤에 'Tainted:' 라는 문자열을 포함하고 있다. 이 문자열은 커널이 어떤 메카니즘에 의해 오염되었음(tainted)을 나타낸다. 이 문자열에는 각각의 문자가 특정한 tainted value를 나타내는 position-sensitive 문자리스트가 뒤이어 나온다.

Tainted: Some oops reports contain the string 'Tainted:' after the program counter. This indicates that the kernel has been tainted by some mechanism. The string is followed by a series of position-sensitive characters, each representing a particular tainted value.


'G'는 로딩된 모든 모듈이 GPL 혹은 호환가능한 라이센스를 가졌음을 나타낸다. 'P'는 독점 모듈이 로딩되었음을 나타낸다. MODULE_LICENSE가 빠진 모듈이나 insmod에 의해 인식되지 않는 MODULE_LICENSE를 사용하는 모듈인 경우 모두 독점 모듈로 간주된다.

'G' if all modules loaded have a GPL or compatible license, 'P' if any proprietary module has been loaded. Modules without a MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by insmod as GPL compatible are assumed to be proprietary.


'F'는 insmod -f에 의해 강제로 로딩된 모듈이 있음을 나타낸다, ' '는 모든 모듈이 normally 로딩되었음을 나타낸다.

F if any module was force loaded by insmod -f, ' ' if all modules were loaded normally.


'S'는 멀티프로세서로 동작시키는게 안전하다고 인증되지 않은 하드웨어 기반에서 동작중인 SMP 커널에서 발생한다. 현재로선 SMP capable하지 않는 다양한 애슬론 프로세서에서만 발생한다.

S if the oops occurred on an SMP kernel running on hardware that hasn't been certified as safe to run multiprocessor. Currently this occurs only on various Athlons that are not SMP capable.


'R'는 모듈이 강제적으로 언로딩된 모듈이 있음을 나타낸다, ' '는 모든 모듈이 normally 언로딩되었음을 나타낸다.

R if a module was force unloaded by rmmod -f, ' ' if all modules were unloaded normally.


'M'는 machine check exception이 리포트된 프로세서가 있음을 나타낸다, ' '는 machine check exception이 리포트된 프로세서가 없음을 나타낸다.

M if any processor has reported a Machine Check Exception, ' ' if no Machine Check Exceptions have occurred.


'B'는 page-release 함수가 bad page reference나 예상치 않은 페이지 플래그를 발견했음을 나타낸다.

B if a page-release function has found a bad page reference or some unexpected page flags.


'U'는 유저나 유저어플리케이션이 특별히 Tainted flag를 설정하기를 요청한 경우를 나타낸다. ' '는 요청한 적이 없음을 나타낸다.

U if a user or user application specifically requested that the Tainted flag be set, ' ' otherwise.


' D'는 커널이 최근에 die된 경우를 나타낸다. 예를 들어 oops나 bug가 발생한 경우를 의미한다.

D if the kernel has died recently, i.e. there was an OOPS or BUG.


'A'는 ACPI 테이블이 overriding되었음을 나타낸다.

A if the ACPI table has been overridden.


'W'는 커널에 의해 warning이 발생한 경우를 나타낸다(어떤 warning은 이 문자 외에 다른 taint flag를 더 설정할 수 있다)

W if a warning has previously been issued by the kernel. (Though some warnings may set more specific taint flags.)


'C'는 staging 드라이버가 로딩된 경우를 나타낸다.

C if a staging driver has been loaded.


'I'는 커널이 몇몇 버그가 존재하는 플랫폼 펌웨어 기반(BIOS or ??)에서 동작중임을 나타낸다.

I if the kernel is working around a severe bug in the platform firmware (BIOS or similar).


'O'는 커널소스트리 밖에서 빌드된 모듈이 로딩된 경우를 나타낸다.

O if an externally-built ("out-of-tree") module has been loaded.


'E'는 module signature를 지원하는 커널에서 unsigned 모듈이 로딩된 경우를 나타낸다.

E if an unsigned module has been loaded in a kernel supporting module signature.


'L'은 시스템에 soft lockup이 발생했음을 나타낸다.

L if a soft lockup has previously occurred on the system.


'K'는 라이브패치가 수행된 커널임을 나타낸다.

K if the kernel has been live patched.

'Tainted: ' 문자열의 주요 용도는 커널 디버거에게 이 커널이 clean kernel인지 여부나 일반적이지 않은 무언가가 발생했음을 커널 디버거에게 알려준다는 것이다. Tainting 정보는 영구적으로 남는다: offending 모듈이 언로드되어도, tainted value는 커널이 믿을 수 없는 상태임을 나타내기 위해 남는다.

The primary reason for the 'Tainted: ' string is to tell kernel debuggers if this is a clean kernel or if anything unusual has occurred. Tainting is permanent: even if an offending module is unloaded, the tainted value remains to indicate that the kernel is not trustworthy.