GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo determinar qué módulo contamina el kernel?

Mi núcleo sigue entrando en pánico cuando se conecta a una determinada red inalámbrica. Me gustaría enviar un informe de error, pero aparentemente mi kernel está contaminado. Desde /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

[[email protected] ~]# cat /proc/sys/kernel/tainted 
4096

No he podido encontrar documentación sobre lo que significa la máscara de bits 4096, pero la G bandera significa que un módulo GPL externo está cargado en el kernel . ¿Cómo averiguo qué módulo está contaminando el kernel?

He buscado [Tt]aint en /var/log/messages o dmesg y no encuentra 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 ser debido al rts5139 módulo. Aparece en lsmod pero modinfo rts5139 produce ERROR: Module rts5139 not found. Al iniciar el kernel anterior, 3.8.3-103.fc17.x86_64, este módulo no aparece en la lista de 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 aún se muestra el kernel como contaminado.

Respuesta aceptada:

Bueno, no creo que un paquete estándar del kernel de Fedora incluya ningún módulo que desencadene 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 configurarán el bit "propietario") y los controladores inalámbricos.

Si puede encontrar algo en el lsmod salida que cree que puede ser un candidato, luego ejecute modinfo <module-name> y vea si la salida incluye intree: Y ya que cualquier módulo sin eso activará la corrupción que está viendo.

ACTUALIZAR :El rts5139 módulo que está viendo en lsmod pero lo que no parece estar en su sistema probablemente esté en el initrd y se cargue 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. Reconstruyendo el initrd con dracut hará que el módulo desaparezca de todos modos.


Linux
  1. Linux:¿cómo encontrar las implementaciones de las llamadas al sistema del kernel de Linux?

  2. Linux:¿cómo recargar correctamente un módulo del kernel?

  3. Cómo limpiar los cachés utilizados por el kernel de Linux

  4. ¿Cómo encontrar la versión de un módulo kernel compilado?

  5. ¿Cómo codificar un módulo del kernel de Linux?

Cómo usar el comando Modprobe en Linux

Cómo cargar y descargar módulos del kernel en Linux

Cómo verificar la versión del kernel en Linux

Cómo actualizar el kernel de Linux en CentOS 7

Cómo instalar el último kernel de Linux en CentOS 7

Cómo usar el comando which en Linux