2013-05-09 5 views
8

मेरा ओएस उबंटू 12.04। मैंने यह कर्नेल मॉड्यूल लिखा है और मैं insmod और rmmod कमांड का उपयोग करता हूं लेकिन/var/log संदेशों में कुछ भी नहीं है। मैं इस समस्या को कैसे ठीक करुं?printk()/var/log/संदेशों में प्रिंट नहीं करता

/* 
* 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 के बजाय KERN_ALERT आज़माएं यह देखने के लिए कि ऐसा इसलिए है क्योंकि आपका लॉग स्तर बहुत अधिक सेट है। आप अपना लॉग स्तर भी बदल सकते हैं। –

+0

मैं लॉग स्तर कैसे बदल सकता हूं? – woody

+1

klogd -c n, जहां n स्तर है। इसे सेट करने के अन्य तरीके भी हैं। –

उत्तर

1

चेक syslog डेमॉन प्रक्रिया चल रही है, के बाद से इस प्रक्रिया है जिसके /var/log/संदेशों को प्रतियां गिरी अंगूठी/लॉग संदेश बफर से printk संदेशों अगर मैं सही हूँ। dmesg उपयोगिता/कमांड या संदेश/var/log/संदेशों में संदेश का उपयोग करके प्रिंटक संदेश देखे जा सकते हैं। यदि सही loglevel सेट किया गया है तो प्रिंटर संदेशों को तुरंत कंसोल पर प्रदर्शित किया जाएगा, dmesg का उपयोग करने की आवश्यकता नहीं है या/var/log/संदेशों में जांच करने की आवश्यकता नहीं है। प्रिंटक डीबग संदेश भी /var/log/syslog का हिस्सा हो सकते हैं।

0

आधुनिक लिनक्स वितरण अब rsyslog (या कोई अन्य syslog डिमन) का उपयोग नहीं करते हैं। वे पत्रिका पर भरोसा करते हैं जो systemd का हिस्सा है, इसलिए/var/log/messages फ़ाइल गुम है और आपको सिस्टम लॉग पढ़ने के लिए जर्नल कमांड का उपयोग करना होगा।

0

सबसे पहले, आपको सुनिश्चित करना चाहिए कि अपने मॉड्यूल ठीक से भरी हुई है कि क्या है या नहीं, तो इस आदेश

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

का उपयोग कर जब से तुम एक कर्नेल मॉड्यूल है, जो कुछ संदेश प्रिंट लिखा। कर्नेल और उसके मॉड्यूल के संदेश/var/log/syslog में पाए जा सकते हैं या आप dmesg कमांड का उपयोग करके इस तरह के संदेशों को देख सकते हैं। आपके मॉड्यूल के रूप में "हैलो वर्ल्ड 1." प्रिंट करता है, तो आपको अपने मॉड्यूल से संदेश देखने के लिए निम्न आदेश का उपयोग करना चाहिए।

dmesg | grep "Hello World 1." 
0

/etc/syslog.conf, * .info ... लाइनों में इसकी तलाश करें। ऐसा लगता है कि प्रिंटक के माध्यम से क्या लॉग हो जाता है।

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

मैंने पाया कि/proc/sys/कर्नेल/printk केवल वास्तव में नियंत्रित सांत्वना प्रवेश स्तर, फ़ाइल के लिए नहीं लॉगिंग। और मुझे लगता है कि जांच syslog भी चल रहा है;) हमारे पास बिल्कुल वही समस्या थी, KERN_INFO फाइल लॉग करने के लिए नहीं जा रहा है और यह इसे ठीक करता है। एचटी

संबंधित मुद्दे