2013-05-09 20 views
8

İşletim Sistemim Ubuntu 12.04. Bu Kernel Modülü'nü yazdım ve insmod ve rmmod komutunu kullanıyorum ama/var/log mesajlarında bir şey yok. Bu sorunu nasıl çözebilirim?printk()/var/log/messages içinde yazmıyor

/* 
* hello-1.c - The simplest kernel module. 
*/ 
#include <linux/module.h> /* Needed by all modules */ 
#include <linux/kernel.h> /* Needed for KERN_INFO */ 

int init_module(void) 
{ 
    printk(KERN_INFO "Hello world 1.\n"); 

    /* 
    * A non 0 return means init_module failed; module can't be loaded. 
    */ 
    return 0; 
} 

void cleanup_module(void) 
{ 
    printk(KERN_INFO "Goodbye world 1.\n"); 
} 
+2

KERN_INFO yerine KERN_ALERT öğesini deneyin; bunun nedeni, günlük düzeyinizin çok yüksek ayarlanıp ayarlanmadığıdır. Ayrıca günlük seviyenizi de değiştirebilirsiniz. –

+0

Günlük seviyesini nasıl değiştirebilirim? – woody

+1

klogd -c n, burada n seviyesidir. Bunu ayarlamanın başka yolları da vardır. –

cevap

1

bu hangi Doğru isem /var/log/messages için kopyalar çekirdek halkası/günlük mesajı tampon printk mesajları süreçtir beri syslog ve arka planda çalışan, çalışır durumda olup olmadığını kontrol edin. printk mesajları, dmesg yardımcı programı/komutu kullanılarak görülebilir veya mesajlar/var/log/messages dizininde olacaktır. Eğer doğru google ayarlanmışsa, baskı mesajları doğrudan konsolda görüntülenecektir, dmesg kullanmaya gerek yoktur,/var/log/mesajlarını kontrol etmeye gerek yoktur. printk hata ayıklama mesajları ayrıca /var/log/syslog'un bir parçası olabilir.

0

Modern Linux dağıtımları artık rsyslog (veya başka bir syslog daemon) kullanmıyor. Onlar, sistemd'nin bir parçası olan günlüklere güvenir, bu yüzden/var/log/messages dosyası eksiktir ve sistem günlüğünü okumak için journalctl komutunu kullanmanız gerekir.

0

Öncelikle, kontrol etmelisiniz senin modülü düzgün bazı mesaj yazdıran bir çekirdek modülü yazdığımdan bu komutu

lsmod | grep "hello-1" //hello-1 is the name of your module 

kullanarak, yüklenen olup olmadığını. Çekirdek ve modülden gelen mesajlar/var/log/syslog dizininde bulunabilir veya bu tür mesajları dmesg komutunu kullanarak görüntüleyebilirsiniz. Modülünüz "Hello World 1." ı yazdırırken, modülden gelen mesajı görmek için aşağıdaki komutu kullanmalısınız.

dmesg | grep "Hello World 1." 
0

Bunu /etc/syslog.conf, * .info ... satırlarında arayın. Bunlar, printk ile neyin kaydedildiğini kontrol ediyor gibi görünüyor.

*.=info;*.=notice;*.=warn;\ 
auth,authpriv.none;\ 
cron,daemon.none;\ 
mail,news.none   -/var/log/messages 

buldum o/proc/sys/kernel/printk sadece gerçekten konsol günlük düzeylerini, dosyaya değil günlüğü kontrollü. Ve sanırım syslog da çalışıyormuş gibi çalışıyordu;) Tam olarak aynı sorunu yaşıyorduk, KERN_INFO dosyaları günlüğe kaydetmiyor ve bu da düzeltildi. ht

İlgili konular