어떤 모듈이 커널을 오염시키고 있는지 확인하는 방법은 무엇입니까?

어떤 모듈이 커널을 오염시키고 있는지 확인하는 방법은 무엇입니까?

특정 무선 네트워크에 연결되면 커널이 계속 패닉 상태에 빠지게 됩니다. 버그 보고서를 보내고 싶지만 내 커널이 오염된 것 같습니다. 에서 /var/log/messages:

Apr 17 21:28:22 Eiger kernel: [13330.442453] Pid: 4095, comm: kworker/u:1 Tainted: G           O 3.8.4-102.fc17.x86_64 #1

그리고

[root@Eiger ~]# cat /proc/sys/kernel/tainted 
4096

4096 비트마스크의 의미에 대한 문서를 찾을 수 없습니다., 그러나 이 G플래그는 외부 GPL 모듈이 커널에 로드되었음을 나타냅니다.. 커널을 오염시키는 모듈을 찾는 방법은 무엇입니까?

나는 [Tt]aintin /var/log/messages또는 dmesg모듈을 로드할 때 해당하는 항목을 찾지 못했습니다. 내 커널은 Fedora 17의 최신 커널인 3.8.4-102.fc17.x86_64입니다.

고쳐 쓰다rts5139: 모듈 때문일 수도 있습니다 . 이전 커널 3.8.3-103.fc17.x86_64를 부팅할 때 표시되지만 생성되며 lsmod모듈 은 나열되지 않으며 커널은 오염되지 않습니다( 0).modinfo rts5139ERROR: Module rts5139 not found.lsmod/proc/sys/kernel/taint

나는 이 모듈을 블랙리스트에 올리려고 했습니다.

echo 'blacklist rts5139' >> /etc/modprobe.d/blacklist.conf

그러나 재부팅해도 여전히 커널이 오염된 것으로 표시됩니다.

답변1

글쎄요, 표준 Fedora 커널 패키지에는 이 오염을 유발하는 모듈이 포함되어 있다고 생각하지 않습니다. 따라서 질문은 어떤 다른 커널 모듈을 설치했습니까?

일반적인 후보는 그래픽 드라이버(비록 이것이 대부분 "독점" 비트를 설정한다고 생각하지만)와 무선 드라이버입니다.

lsmod출력에서 후보라고 생각되는 항목을 찾을 수 있는 경우 실행하여 modinfo <module-name>출력에 intree: Y현재 보고 있는 오염을 유발하는 모듈이 포함되어 있는지 확인하세요.

고쳐 쓰다: rts5139표시되지만 lsmod시스템에 없는 것으로 보이는 모듈은 initrd에 있을 수 있으며 기본 파일 시스템이 마운트되기 전 부팅 프로세스 초기에 거기에서 로드될 수 있습니다.

이는 또한 업데이트된 블랙리스트로 initrd를 다시 빌드해야 하기 때문에 블랙리스트가 작동하지 않는 이유를 설명합니다. initrd를 다시 빌드하면 dracut어쨌든 모듈이 사라집니다.

답변2

➜  ~  dmesg | grep -i 'taint'
[   10.029333] vboxdrv: module verification failed: signature and/or required key missing - tainting kernel
[   10.029364] Disabling lock debugging due to kernel taint

답변3

taint또 다른 방법은 각 모듈에 대해 다음 파일을 확인하는 것입니다 /sys/module.

#!/bin/bash

cat /proc/modules |
while read module rest
do
    if [[ $(od -A n /sys/module/$module/taint) != " 000012" ]] ; then
        echo $module
    fi
done

모듈에 오염이 없으면 파일에는 " "로 표시되는 taint개행 문자가 하나만 포함됩니다 . 실제 내용과 상관없이 파일 크기가 4,096바이트로 기재되어 있어 파일 크기를 확인할 수 없습니다.od000012

답변4

부팅 로그를 확인하거나 초기 단계(RW가 디스크에 설치되기 전)의 부팅 프로세스를 관찰하세요. 이는 initrd의 잘못된 모듈일 수 있습니다.

DKMS 또는 이와 유사한 것이 있습니까?

관련 정보