¿Qué es un kernel contaminado en Linux?

Pregunta:

Bajo ciertas condiciones, el kernel de Linux puede contaminarse . Por ejemplo, cargar un controlador de video propietario en el kernel corrompe el kernel. Esta condición puede ser visible en los registros del sistema, mensajes de error del kernel (oops y pánicos) y a través de herramientas como lsmod , y permanece hasta que se reinicia el sistema.

¿Qué significa esto? ¿Afecta mi capacidad para usar el sistema y cómo podría afectar mis opciones de soporte?

Respuesta:

Cuando el kernel está contaminado, significa que está en un estado que no es compatible con la comunidad . La mayoría de los desarrolladores de kernel ignorarán los informes de errores que involucren kernels corruptos, y los miembros de la comunidad pueden pedirle que corrija la condición de contaminación antes de poder continuar con el diagnóstico de problemas relacionados con el kernel. Además, algunas funciones de depuración y llamadas a la API pueden deshabilitarse cuando el kernel está contaminado.

En la mayoría de los casos que involucran controladores propietarios, puede ignorar con seguridad la condición de corrupción , pero algunos escenarios que hacen que el kernel se corrompa pueden ser indicativos de problemas graves del sistema.

La función está destinada a identificar las condiciones que pueden dificultar la resolución adecuada de un problema del kernel. Por ejemplo, la carga de un módulo propietario puede hacer que la salida de depuración del kernel no sea confiable porque los desarrolladores del kernel no tienen acceso al código fuente del módulo y, por lo tanto, no pueden determinar lo que el módulo pudo haberle hecho al kernel. Del mismo modo, si el kernel había experimentado previamente una condición de error o si se había producido un error de hardware grave, la información de depuración generada por el kernel puede no ser confiable.

El kernel puede contaminarse por varias razones , que incluyen (pero no se limitan a) las siguientes:

  • El uso de un módulo de kernel patentado (o no compatible con GPL): esta es la causa más común de kernels contaminados y generalmente resulta de la carga de controladores de video propietarios de NVIDIA o AMD
  • El uso de los conductores de parada, que son parte del código fuente del núcleo pero no se prueban completamente
  • El uso de módulos fuera del árbol que no están incluidos en el código fuente del kernel de Linux.
  • Carga o descarga forzada de un módulo del kernel (como insertar a la fuerza un módulo no construido para la versión actual del kernel)
  • El uso de un kernel SMP (multiprocesador) en ciertas CPU monoprocesador no compatibles, principalmente procesadores AMD Athlon más antiguos
  • Anulación deACPI DSDT, a veces necesario para corregir errores de administración de energía (consulte aquí para obtener más detalles)
  • Ciertas condiciones de error críticas, como excepciones de verificación de máquina y fallos del kernel
  • Ciertos errores graves en el firmware del sistema (BIOS, UEFI) que el kernel debe solucionar

Cada una de estas condiciones está representada por una bandera particular en el kernel. Algunos proveedores de Linux, como SUSE, agregan indicadores de corrupción adicionales para indicar condiciones como cargar un módulo que no es compatible con el proveedor.

Hay más información disponible en la documentación del kernel . Los indicadores de corrupción enumerados allí son (con _ un sustituto de 'en blanco')

  • G | P : G si todos los módulos cargados tienen una licencia GPL o compatible, de lo contrario se ha cargado un módulo propietario. Los módulos sin un MODULE_LICENSE o con un MODULE_LICENSE que insmod no reconoce como compatibles con GPL se supone que son propietarios.
  • F | _ : si algún módulo fue forzado a cargar por "insmod -f" de lo contrario, si todos los módulos se cargaron normalmente.
  • S | _ : si el error ocurrió en un kernel SMP que se ejecuta en hardware que no ha sido certificado como seguro para ejecutar multiprocesador. Actualmente, esto ocurre solo en varios Athlons que no son compatibles con SMP.
  • R | _ : si rmmod -f forzó la descarga de un módulo, de lo contrario, si todos los módulos se descargaron normalmente.
  • M | _ : si algún procesador ha informado una excepción de verificación de máquina , de lo contrario no se han producido excepciones de verificación de máquina.
  • B | _ : si una función de liberación de página ha encontrado una referencia de página incorrecta o algunas marcas de página inesperadas.
  • U | _ : si un usuario o una aplicación de usuario solicitó específicamente que se estableciera el indicador Tainted.
  • D | _ : si el kernel ha muerto recientemente, es decir, hubo un OOPS o BUG.
  • A | _ : si se ha anulado la tabla ACPI.
  • W | _ : si el kernel ha emitido previamente una advertencia (aunque algunas advertencias pueden establecer indicadores de corrupción más específicos).
  • C | _ : si se ha cargado un controlador de prueba.
  • I | _ : si el kernel está trabajando alrededor de un error grave en el firmware de la plataforma (BIOS o similar).
  • O | _ : si se ha cargado un módulo construido externamente ("fuera del árbol").
  • E | _ : si se ha cargado un módulo sin firmar en un kernel que admite la firma del módulo.
  • L | _ : si se ha producido previamente un bloqueo suave en el sistema.
  • K | _ : si el kernel ha sido parcheado en vivo.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım