2016-06-20 8 views
5

मैं एक साधारण कर्नेल मॉड्यूल बनाने और इसे रास्पबेरी पीआई पर चलाने की कोशिश कर रहा हूं। मैंने आधिकारिक रास्पबेरी साइट से कर्नेल स्रोत डाउनलोड किए हैं, लेकिन बोर्ड पर मेरे रास्पियन के बाद उनके पास थोड़ा अलग कर्नेल संस्करण है। कर्नेल मॉड्यूल चलाने के लिए स्रोत और लक्ष्य मशीन पर कर्नेल का पूरी तरह से समान संस्करण होना जरूरी है? मैं अपने रास्पबेरी Piलक्ष्य के लिए कर्नेल संस्करण और मॉड्यूल के लिए

$ uname -a 
Linux raspberrypi 4.4.11+ #888 Mon May 23 20:02:58 BST 2016 armv6l GNU/Linux 

पर इस राशि और ये मेरे मॉड्यूल के बारे में

$ modinfo ./threads.ko 
filename:  /lib/modules/4.4.11+/kernel/mymodules/./threads.ko 
version:  0.0.1 
description: Kernel threads example 
author:   xxxxxx 
license:  GPL 
srcversion:  C906582EC824D2D8DA76BFB 
depends:   
vermagic:  4.4.13+ mod_unload modversions ARMv6 

जैसा कि आप देख: "4.4.11+" बनाम "4.4.13 +" ... क्यों मैं कर रहा हूँ पूछ रही हो?

$ sudo insmod ./threads.ko 
insmod: ERROR: could not insert module ./threads.ko: Invalid module format 

और समझ में नहीं आता है, यह कर्नेल के संस्करण के अंतिम संख्या में मूल्यवान अंतर नहीं है या कोई और समस्या है: जब डालने मॉड्यूल मैं एक त्रुटि है।

उत्तर

5

Is it necessary to have fully identical version of kernel on source and target machine to run kernel module?

हां।

+0

धन्यवाद! तो, मैं इस संस्करण में कैसे स्विच कर सकता हूं? – artsin

+0

मैंने 'गिट fetch' बनाया, फिर 'गिट चेकआउट v4.4.11' लेकिन एक त्रुटि है: "त्रुटि: pathspec' v4.4.11 'गिट को ज्ञात किसी भी फ़ाइल से मेल नहीं खाती।" – artsin

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