Pregunta

Estoy escribiendo un módulo del kernel y quiero poder imprimir algo en la salida de la consola cuando lo cargue usando insmod module.ko.

Intenté usar

printk(KERN_EMERG "test kernel emergency\n");

pero no aparece nada en mi consola.Sin embargo, sí aparece en dmesg.

Información adicional:
Estoy usando un Intel x86 de 32 bits con linux-3.0.0

y cat /proc/sys/kernel/printk proporciona4 4 1 7

¿Fue útil?

Solución

1- asegúrese de estar en modo terminal completo (presione Alt + Ctrl + f1)

2- en lugar de printk(KERN_EMERG "test kernel emergency\n"); probar

printk(KERN_ALERT "test kernel alert\n");

Otros consejos

Jens,

Las salidas de printk se envían al kernel y se recopilan mediante el demonio syslogd. dmesg se hace eco de los datos recopilados por el demonio syslogd.

Es posible que su consola no imprima este mensaje (desde donde llamó a insmod) si está utilizando la versión gráfica de linux.He intentado esto en ubuntu y no imprime los mensajes de printk incluso si el nivel de registro es ALERTA o EMERGENCIA.

Necesita modificar su syslog para imprimir mensajes de emergencia del kernel en la consola (o usuarios específicos o ttys).

Hay muchos demonios de syslog, si no controlas el que usas y no eres root, no tienes suerte.Si controlas el que usas, syslog-ng es bastante bueno y tiene ejemplos de cómo hacer esto en su manual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top