2012-01-02 8 views
9

जो मैंने पढ़ा है, उससे डिप्मोड का उद्देश्य प्रत्येक कर्नेल मॉड्यूल के लिए लोड होने पर निर्भरताओं को ट्रैक करना है। कर्नेल मॉड्यूल लोड होने पर यह स्वचालित रूप से स्वचालित रूप से क्यों निर्धारित नहीं किया जा सकता है, गतिशील रूप से उपयोगकर्तास्पेस साझा लाइब्रेरी को लोड करने के समान?कर्नेल मॉड्यूल के निर्माण और काम करने के लिए डिममोड क्यों आवश्यक है?

उत्तर

15

डिप्मोड सीधे निर्भरता की गणना करने से अधिक करता है - यह हार्डवेयर पहचानकर्ताओं और मॉड्यूल के बीच एक मैपिंग भी बनाता है जो उन्हें संभालता है। इसका उपयोग हार्डवेयर के किसी ज्ञात टुकड़े के लिए लोड करने के लिए सही मॉड्यूल को खोजने के लिए किया जाता है।

यह क्यों नहीं है कि यह उपयोगकर्ता की तरह की मांग लोडिंग क्यों नहीं करता है, इसका एक हिस्सा यह है कि कर्नेल लिंकर को डिज़ाइन द्वारा फ़ाइल सिस्टम तक पहुंचने की अनुमति नहीं है। कर्नेल में दर्शन फाइल सिस्टम का लेआउट पूरी तरह से उपयोगकर्ताओं के लिए है, और इसलिए कोई गारंटी नहीं है कि foo.ko/lib/modules/3.0.1/drivers/somesubsys/foo.ko में मिलेगा। इस प्रकार, कर्नेल उपयोगकर्ता मॉडस उपयोगिताओं (जैसे डिममोड और मॉडप्रोब) पर निर्भर करता है ताकि इसे अपने मॉड्यूल के लिए कच्चे डेटा को पास किया जा सके, ताकि उसे लोड करने की आवश्यकता हो; यदि उपयोगकर्ता इस कार्य में विफल रहता है, तो यह केवल एक त्रुटि देता है, और उपयोगकर्ताओं को गड़बड़ी से निपटने देता है।

+1

लेकिन फिर, मॉडप्रोब इन-मॉड्यूल जानकारी से निर्भरताओं को हल करने और पहले निर्भर मॉड्यूल की जांच करने का ख्याल रख सकता है, है ना? – PypeBros

+3

depmod modprobe के उपयोग के लिए इस निर्भरता जानकारी का कैश बनाता है। वास्तव में इस जानकारी के लिए सभी मॉड्यूल स्कैन करने में काफी समय लग सकता है, इसलिए जब भी आप मॉडरप्रोब को कॉल करते हैं तो आप इसे नहीं करना चाहते हैं – bdonlan

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