
Mi kernel sigue entrando en pánico cuando se conecta a una determinada red inalámbrica. Me gustaría enviar un informe de error pero mi kernel aparentemente está contaminado. De /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
y
[root@Eiger ~]# cat /proc/sys/kernel/tainted
4096
No he podido encontrar documentación sobre lo que significa la máscara de bits 4096, pero la . ¿Cómo puedo saber qué módulo está contaminando el kernel?G
bandera significa que un módulo GPL externo está cargado en el kernel
Busqué [Tt]aint
en /var/log/messages
o dmesg
y no encontré nada correspondiente a cuando se carga un módulo. Mi kernel es el último kernel de Fedora 17: 3.8.4-102.fc17.x86_64.
ACTUALIZAR: Puede deberse al rts5139
módulo. Aparece lsmod
pero modinfo rts5139
produce. ERROR: Module rts5139 not found.
Al arrancar el kernel anterior, 3.8.3-103.fc17.x86_64, este módulo no aparece en la lista lsmod
y el kernel no está contaminado ( /proc/sys/kernel/taint
es 0).
Intenté incluir este módulo en la lista negra.
echo 'blacklist rts5139' >> /etc/modprobe.d/blacklist.conf
pero al reiniciar todavía se muestra que el kernel está contaminado.
Respuesta1
Bueno, no creo que un paquete estándar del kernel de Fedora incluya ningún módulo que pueda desencadenar esta contaminación, por lo que la pregunta es: ¿qué otros módulos del kernel ha instalado?
Los candidatos comunes serían los controladores de gráficos (aunque creo que en su mayoría establecerán el bit "propietario") y los controladores inalámbricos.
Si puede encontrar algo en el lsmod
resultado que crea que puede ser candidato, ejecútelo modinfo <module-name>
y vea si el resultado incluye intree: Y
algún módulo sin que eso active la contaminación que está viendo.
ACTUALIZAR: El rts5139
módulo que está viendo lsmod
pero que no parece estar en su sistema probablemente esté en initrd y se esté cargando desde allí al principio del proceso de arranque antes de que se monte el sistema de archivos principal.
Eso también explica por qué la lista negra no funcionará, ya que tendría que reconstruir el initrd con la lista negra actualizada. Sin embargo , reconstruir el initrd dracut
hará que el módulo desaparezca de todos modos.
Respuesta2
➜ ~ 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
Respuesta3
Otra forma de hacerlo es examinar el taint
archivo de cada módulo en /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
Si un módulo no tiene contaminación, el taint
archivo solo contendrá una nueva línea, que od
se representa como " 000012
". No puede verificar el tamaño del archivo ya que todos los tamaños aparecen como 4096 bytes, independientemente de su contenido real.
Respuesta4
Verifique su registro de arranque o observe su proceso de arranque en la etapa inicial (antes de que sus discos se monten RW). Este podría ser un módulo defectuoso en su initrd.
¿Tiene DKMS o algo así instalado?