Pergunta

Estou escrevendo um módulo do kernel e quero poder imprimir algo na saída do console ao carregá-lo usando insmod module.ko.

Tentei usar

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

mas nada aparece no meu console.No entanto, ele aparece em dmesg.

Informações extras:
Estou usando um Intel x86 de 32 bits com linux-3.0.0

e cat /proc/sys/kernel/printk4 4 1 7

Foi útil?

Solução

1- certifique-se de que você está no modo de terminal completo (pressione Alt + Ctrl + F1)

2- em vez de printk(KERN_EMERG "test kernel emergency\n"); tente

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

Outras dicas

Jens,

As saídas do printk são enviadas para o kernel e coletadas pelo daemon syslogd. dmesg ecoa os dados coletados pelo daemon syslogd.

Esta mensagem pode não ser impressa por seu console (de onde você chamou insmod) se você estiver usando a versão gráfica do linux.Eu tentei isso no ubuntu e ele não imprime as mensagens de printk, mesmo se o nível de log for ALERTA ou EMERGÊNCIA.

Você precisa modificar seu syslog para imprimir mensagens de emergência do kernel para o console (ou usuários específicos ou ttys).

Existem muitos daemons syslog, se você não controlar aquele que usa e não for root - você está sem sorte.Se você controlar aquele que usa, o syslog-ng é muito bom e tem exemplos de como fazer isso em seu manual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top