एक युक्ति फ़ाइल /dev/console
कहा जाता है, जिसका (major,minor)
(5,1)
है नहीं है। जब मैं एक धारावाहिक कंसोल के साथ बूट करता हूं, तो यह मेरे यूएआरटी पोर्ट से /dev/ttyS0
करता है। लेकिन जब मैं सीरियल कंसोल अक्षम साथ बूट, /dev/console
को कहीं और कनेक्ट करने के लिए है, जहां /dev/ttyS0
हमेशा एक ही भौतिक डिवाइस, अर्थात् UART0
को जोड़ता है लगता है। वहाँ कोई संकेत इस तरह की जानकारी दिखा (/proc
या /sys
में कुछ की तरह) है? मैंने वहां कोशिश की है लेकिन मुझे कुछ भी नहीं मिला है। मैं अपने संबंधों को स्पष्ट करने के लिए लिनक्स कर्नेल स्रोत का पता लगाने शुरू कर रहा हूं। क्या कोई मुझे कुछ संकेत दे सकता है? जब, कहाँ, कैसे और कैसे भौतिक डिवाइस को निर्धारित करने के लिए /dev/console
कनेक्ट करता है?मैं कैसे पा सकता हूं कि कौन सा भौतिक उपकरण/dev/console कनेक्ट होता है?
संपादित करें:
/dev/console
कर्नेल पैरामीटर, जो बारी मेंgetty
द्वारा किया जाता हैstdin/stdout/stderr
को खोलने के लिए कीconsole=
से कॉन्फ़िगर किया गया है: नवीनतम खोज है। यदिconsole=
निर्दिष्ट नहीं है,/dev/null
stdin/stdout/stderr
के रूप में खोला गया है। लेकिन मुझे यकीन नहीं है कि वे/dev/console
के साथ बिल्कुल वही हैं, जो/dev/console
का तात्पर्य है I/O विभिन्न भौतिक उपकरणों से कनेक्ट हो सकता है।/dev/console
अगर एक यूएसबी HID कुंजीपटल प्लग किया गया है पढ़ा जा सकता है औरconsole=
UART के रूप में कॉन्फ़िगर नहीं है। इसलिए/dev/console
==/dev/null
थोड़ा समझ में आता है। अधिक जांच की आवश्यकता है।
कर्नेल कमांड लाइन से 'console = 'पैरामीटर को कैसे प्रबंधित किया जाता है, यह देखने का प्रयास करें। – sawdust
हाँ, मैंने इसे देखा है और यह पता चला है कि पैरामीटर 'init' को पास कर दिए गए हैं और बदले में 'getty_main()' है, जो 'busybox' के भीतर' गेटी' का कार्यान्वयन है। प्रासंगिक भाग मूल मानक इनपुट को 'बंद' करना है और फिर पास पैरामीटर के अनुसार एक नया खोलना है। तो मैं एक ऐसे तरीके की तलाश में हूं जो फ़ाइल डिस्क्रिप्टर से पथ पुनर्प्राप्त कर सके; चूंकि मैं जानना चाहता हूं कि 'डिफ़ॉल्ट' डिवाइस क्या है यदि कोई 'console = 'निर्दिष्ट नहीं है। – user1937358
ऐसा लगता है कि 'गेट्टी' के लिए कोई कंसोल निर्दिष्ट नहीं है, तो 'init' द्वारा खोला गया बहुत मुट्ठी stdin/stdout/stderr '/ dev/null' है। रुचि रखने वालों के लिए, यह 'busybox' के स्रोत के' init_main() '->' console_init() '->' bb_sanitize_stdio() 'है। – user1937358