Cuando mi kernel arranca, además de la información importante útil, imprime mucha información de depuración, como
....
kernel: [0.00000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
kernel: [0.00000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
kernel: [0.00000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
...
kernel: [0.00000] MTRR variable ranges enabled:
kernel: [0.00000] 0 base 0000000000 mask 7E00000000 write-back
...
kernel: [0.00000] init_memory_mapping: [mem 0x00100000-0xcf414fff]
kernel: [0.00000] [mem 0x00100000-0x001fffff] page 4k
kernel: [0.00000] [mem 0x00200000-0xcf3fffff] page 2M
kernel: [0.00000] [mem 0xcf400000-0xcf414fff] page 4k
....
kernel: [0.00000] ACPI: XSDT 0xD8FEB088 0008C (v01 DELL CBX3 01072009 AMI 10013)
kernel: [0.00000] ACPI: FACP 0xD8FFC9F8 0010C (v05 DELL CBX3 01072009 AMI 10013)
....
kernel: [0.00000] Early memory node ranges
kernel: [0.00000] node 0: [mem 0x00001000-0x0009cfff]
kernel: [0.00000] node 0: [mem 0x00100000-0xcf414fff]
kernel: [0.00000] node 0: [mem 0xcf41c000-0xcfdfcfff]
....
kernel: [0.00000] ACPI: Local APIC address 0xfee00000
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
kernel: [0.00000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
y mucho, mucho más.
No veo cómo esto puede ser útil para nadie que no sea un desarrollador / depurador de kernel.
He descubierto que puedo deshacerme de ellos utilizando loglevel=5
como parámetro de arranque. Los registros de depuración ya no se imprimen en el terminal, pero todavía están dentro dmesg
y fuera syslog
.
¿Es posible disminuir el nivel de detalle de registro de inicio a nivel mundial, por lo que dmesg
y syslog
no se inundó por esta información inútil?
Estoy usando kernel autocompilado 3.18
SOLUCIÓN ACEPTADA
Resulta que poner las siguientes líneas para /etc/rsyslog.conf
resolver el problema para mí:
kern.debug /dev/null
& ~
syslog
ydmesg
se inundó con los registros de depuración inútiles, y con lo que las advertencias y errores reales más fácil de pasar por alto. Además,dmesg
ysyslog
debe ser leído por humanos (es decir, el administrador). Ese es todo su propósito.Respuestas:
Para syslog Puede agregar la siguiente línea a
/etc/syslog.conf
:Descartará los mensajes de kernel .info y .debug (que se descartan con loglevel = 5)
Además,
dmesg
se puede usar con la opción-n
de mostrar mensajes con cierto nivel de registro.fuente
Algunos de los registros están impresos por printk () que no pudo desactivar. Y algunos están impresos por pr_debug (), que puede desactivarse depende de la configuración del núcleo. El comportamiento de pr_debug () está controlado por la función de depuración dinámica. Si se configura CONFIG_DYNAMIC_DEBUG , todas las llamadas pr_debug () se pueden habilitar / deshabilitar dinámicamente por llamada. El detalle de la depuración dinámica está aquí . Si CONFIG_DYNAMIC_DEBUG no está configurado, pero DEBUG está definido en el archivo fuente, pr_debug () funciona como printk () . Si ambos no están definidos, pr_debug no hará nada.
Aquí está la definición en el núcleo:
Por lo tanto, verifique la configuración de su núcleo y descubra de dónde provienen estos registros. Entonces sabrás cómo deshabilitarlo.
fuente
echo 8 > /proc/sys/kernel/printk
: stackoverflow.com/questions/28936199/…Además de configurar el
loglevel
KCL, también puede ajustar elkernel.printk
sysctl para que el nivel máximo refleje lo que desea y persista durante el arranque.En cuanto a esta aclaración adicional en el comentario:
Solo lo usaría
logrotate
en un trabajo cron para mover los archivos fuera del camino después de reiniciar :Luego comienza de nuevo, por así decirlo, con datos de depuración limitados que se descargan en registros.
fuente
logrotate
completamente pierde el punto. Mi problema no es que mis archivos de registro sean demasiado grandes y que me esté quedando sin espacio en disco. En cambio, el problema es que la información de depuración en esos archivos de registro hace que la información útil sea menos accesible.