/ proc / sys बनाम / sys / मॉड्यूल / मॉड / पैरामीटर


10

मैं पिछले कुछ दिनों से सोच रहा था कि यह कैसे काम करता है। हम sysctl या का उपयोग कर गिरी runtimes मापदंडों सेट कर सकते हैं echo boolen 1> /proc/sys/module/exactParameter, लेकिन में /sys/modules/module/parameters/parameterहम भी मूल्यों को निर्धारित कर सकते हैं।

क्या /proc/sys/केवल कर्नेल में कठिन अनुपालन से संबंधित मॉड्यूल के लिए पैरामीटर हैं ? या लोडेबल कर्नेल मॉड्यूल के लिए भी पैरामीटर हो सकते हैं?

LKM को कर्नेल चलाने में लोड करने के बाद उनके मापदंडों को प्रकट किया जाता है /sys/modules/module/paraeter/params। क्या इसका मतलब है, कि कर्नेल में संकलित मॉड्यूल के लिए पैरामीटर नहीं हैं?

दोनों निर्देशिकाओं में क्या अंतर है।

जवाबों:


5

इस तथ्य के अलावा /proc/sysऔर कुछ के बीच कोई संबंध नहीं /sysहै कि दोनों कर्नेल इंटरफेस हैं और नामों का संयोग है।

/proc/syssysctl का इंटरफ़ेस है , जो कर्नेल कॉन्फ़िगरेशन पैरामीटर हैं। पढ़ना या संशोधित /proc/sys/foo/barकरना foo.barsysctl प्राप्त करने या स्थापित करने के बराबर है । सिस्टेक्टल मान सिमेंटिक श्रेणियों द्वारा आयोजित किए जाते हैं, वे आंतरिक रूप से कर्नेल की संरचना से संबंधित नहीं होते हैं। कई sysctl मान सेटिंग्स हैं जो हर लिनक्स सिस्टम पर मौजूद हैं चाहे ड्राइवरों या विशेषताओं को संकलित किया जाए; कुछ वैकल्पिक सुविधाओं (उदाहरण के लिए कुछ नेटवर्क प्रोटोकॉल) से संबंधित हैं, लेकिन विशिष्ट हार्डवेयर उपकरणों के लिए कभी नहीं।

/sys/moduleजैसा कि नाम से संकेत मिलता है, कर्नेल मॉड्यूल के लिए एक इंटरफ़ेस। प्रत्येक निर्देशिका एक कर्नेल मॉड्यूल से मेल खाती है। आप पढ़ सकते हैं, और कभी-कभी संशोधित कर सकते हैं, मॉड्यूल के मापदंडों को fooलिखकर /sys/module/foo/parameters/*

कर्नेल में लोड किए गए घटक कर्नेल कमांड लाइन से अपने मापदंडों को पढ़ते हैं। इन मापदंडों को रनटाइम पर सेट नहीं किया जा सकता है (कम से कम स्वचालित रूप से उत्पन्न इंटरफेस के माध्यम से नहीं जैसे /sys/module: घटक इसके लिए एक कस्टम इंटरफ़ेस को उजागर कर सकता है)।


तो कर्नेल में संकलित मॉड्यूल के लिए, मैं केवल कर्नेल कमांड लाइन के माध्यम से पैरामीटर जोड़ सकता हूं (जैसे: / proc / cmdline)। उन्हें रनटाइम पर बदलने का कोई और तरीका नहीं है? क्या मैंने सही समझा? तो क्या वास्तव में ये कर्नेल (कॉन्फ़िगरेशन) पैरामीटर हैं? मुझे लगा कि वे कर्नेल में संकलित कुछ मॉड्यूलों के परिवर्तनीय पैरामीटर हैं
ast

@ast sysctl पैरामीटर Documentation/sysctl/*.txtलिनक्स कर्नेल डॉक्यूमेंटेशन में प्रलेखित है। यह उन मापदंडों का एक समूह है, जो अधिकतर इस बात पर ध्यान दिए बिना लागू होते हैं कि कौन सी सुविधाएँ और ड्राइवर किसी विशेष कर्नेल में संकलित हैं।
गिल्स एसओ- बुराई को रोकना '

बहुत बहुत धन्यवाद, मैं इस रिश्ते को पूरी तरह से समझने की कोशिश कर रहा था और जवाब खोजने के लिए बहुत सारी चीजें पढ़ने में 3 दिन बिताए।
ast

3

पैट्रिक मोशेल का पेपर " सिसफस फाइलसिस्टम " आपको /sysइस बॉक्स में दिए गए उद्देश्य और इतिहास से कहीं बेहतर अवलोकन देगा। सार का हवाला देते हुए:

sysfs लिनक्स 2.6 कर्नेल की एक विशेषता है जो कर्नेल कोड को इन-मेमोरी। लेस सिस्टम के माध्यम से उपयोगकर्ता प्रक्रियाओं को जानकारी निर्यात करने की अनुमति देता है। Ystem घाव तंत्र निर्देशिका पदानुक्रम का संगठन सख्त है, और कर्नेल डेटा संरचनाओं के आंतरिक संगठन पर आधारित है। Ystem लेस जो fi लेस सिस्टम में बनाई जाती हैं (ज्यादातर) ASCII fi लेस के साथ (आमतौर पर) एक मान प्रति ली होता है। ये विशेषताएं सुनिश्चित करती हैं कि निर्यात की गई जानकारी सटीक और आसानी से सुलभ हो, जिससे sysfs 2.6 कर्नेल की सबसे सहज और उपयोगी विशेषताओं में से एक बन जाए।

आपके विशिष्ट प्रश्न के उत्तर में "क्या लोड करने योग्य कर्नेल मॉड्यूल को एक प्रतिनिधित्व मिलता है /sys?" उत्तर "हाँ, यदि मॉड्यूल का लेखक एक इंटरफ़ेस प्रदान करता है"। यह दिखा कर आसानी से प्रदर्शित किया जा सकता है कि कितने लोड किए गए मॉड्यूल में समान प्रविष्टियां हैं/sys/module

$ lsmod | awk '{print $1}' | sort > /tmp/lsmod
$ cd /sys/module ; ls > /tmp/sysmodule
$ comm -12 /tmp/lsmod /tmp/sysmodule
ahci
arc4
ath
ath9k
ath9k_common
ath9k_hw
bluetooth
bnep
cfg80211
…

जो मेरे सिस्टम पर पता चलता है कि 73 लोड करने योग्य मॉड्यूल में से 73 में एक समान प्रविष्टि है /sys/module


मुझे विशेष रूप से / sys / मॉड्यूल / के बारे में जानकारी मिली, कि हमेशा प्रत्येक LKM और मॉड्यूल_परम (नाम, प्रकार, परमिट) निर्देशिका मापदंडों की उपस्थिति को प्रभावित करता है। लेकिन मेरे पास अभी भी sysctl और / proc / sys के बारे में प्रश्न हैं, जहां हम कर्नेल रनटाइम पैरामीटर सेट कर सकते हैं। क्यों नियोजित / sys / मॉड्यूल संभव नहीं है? और जहां हम कर्नेल संकलित मॉड्यूल (/ sys / मॉड्यूल / या / proc / sys / too) के लिए पैरामीटर सेट करते हैं? शायद मैं मॉड्यूल मापदंडों के साथ कर्नेल विकल्प मिलाता हूं (मुझे लगा कि वे समान हैं) इसलिए sysctl का उपयोग करके मुझे मॉड्यूल पैरामीटर या कुछ कर्नेल कार्यक्षमता निर्धारित करनी चाहिए
ast
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.