Cómo modificar el nivel de impresión del kernel
A veces se imprimirá demasiada información al depurar el módulo del kernel. En este caso, se puede controlar modificando el contenido del archivo /proc/sys/kernel/printk. . La configuración predeterminada es 6 4 1 7
# cat /proc/sys/kernel/printk
7 4 1 7
#
Este archivo tiene cuatro valores, que definen la ubicación donde se envía la información del registro según su importancia. Para obtener más información sobre los diferentes niveles de registro, consulte la ayuda en línea de syslog(2). Los cuatro números que se muestran arriba corresponden a:
Nivel de registro de consola: prioridad [s1] Los mensajes por encima de este valor se imprimirán en la consola
Nivel de registro de mensajes predeterminado: esto La prioridad será se utiliza para imprimir mensajes sin prioridad
Nivel mínimo de registro de la consola: el valor mínimo para el nivel de registro de la consola (prioridad más alta) que se puede configurar
p>Nivel de registro de la consola de control predeterminado: el valor predeterminado del nivel de registro de la consola
Cuanto menor sea el valor de [s1], mayor será la prioridad
Estos cuatro valores están en realidad en kernel/printk.c La definición es como sigue en c:
int console_printk[4] = {
DEFAULT_ CONSOLE_LOGLEVEL, /* console_logle nivel */
DEFAULT_MESSAGE_LOGLEVEL, /* default_message_lOGLEVEL * // p>
MINIMUM_CONSOLE_LOGLEVEL, /* mínimo_console_lOGLEVEL *//p>
DEFAULT_CONSOLE_LOGLEVEL, /* default_console_lOGLEVEL *//p>
};
El contenido generado por el kernel a través de printk() tiene un nivel de registro. El nivel de registro se puede controlar agregando un número entero entre corchetes angulares antes de la cadena generada por printk(), por ejemplo, printk("lt;6gt; Hola , world!\n");. El kernel**** proporciona ocho niveles de registro diferentes y proporciona las macros correspondientes en linux/kernel.h.
#define KERN_EMERG "lt; 0gt;" /* el sistema no se puede utilizar */
#define KERN_ALERT "lt; 1gt;" /* se deben tomar medidas de inmediato */
##define KERN_CRIT "lt; 1gt;" /*Debe tomar medidas inmediatas*/
##define KERN_CRIT "lt; 2gt;" /*Condiciones clave*/
#define KERN_ERR "lt; 3gt;" /* condiciones de error */
#define KERN_WARNING "lt; 4gt;" /* condiciones de advertencia */
#define KERN_NOTICE "lt; 5gt;" /* normal pero significativo */
#define KERN_INFO "lt;6gt;" /*Información*/
#define KERN_DEBUG "lt;7gt;" /*Nivel de depuración Mensaje*/
Entonces printk() se puede usar así: printk(KERN_INFO "Hello, world!\n");.
printk() sin nivel de registro El valor predeterminado El nivel utilizado es DEFAULT_MESSAGE_LOGLEVEL, que se define en kernel/printk.c como el número entero 4, correspondiente a KERN_WARNING.
/* Printk sin nivel de registro usa este nivel...*/
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING *//p>
Con Con el Con conocimientos anteriores, debemos saber cómo controlar manualmente la impresión printk. Por ejemplo, si quiero evitar la impresión de todas las impresiones del kernel, simplemente establezca el primer valor en el valor mínimo de 1 o 0.
# echo 1 4 1 7 gt /proc/sys/kernel/printk
o
# echo 0 4 0 7 gt; /kernel/printk
Además, /proc/sys/kernel/printk_ratelimit y /proc/sys/kernel/printk_ratelimit_burst también se pueden utilizar para controlar la impresión, lo cual debe investigarse.