2013-03-19 5 views
12

एक युक्ति फ़ाइल /dev/console कहा जाता है, जिसका (major,minor)(5,1) है नहीं है। जब मैं एक धारावाहिक कंसोल के साथ बूट करता हूं, तो यह मेरे यूएआरटी पोर्ट से /dev/ttyS0 करता है। लेकिन जब मैं सीरियल कंसोल अक्षम साथ बूट, /dev/console को कहीं और कनेक्ट करने के लिए है, जहां /dev/ttyS0 हमेशा एक ही भौतिक डिवाइस, अर्थात् UART0 को जोड़ता है लगता है। वहाँ कोई संकेत इस तरह की जानकारी दिखा (/proc या /sys में कुछ की तरह) है? मैंने वहां कोशिश की है लेकिन मुझे कुछ भी नहीं मिला है। मैं अपने संबंधों को स्पष्ट करने के लिए लिनक्स कर्नेल स्रोत का पता लगाने शुरू कर रहा हूं। क्या कोई मुझे कुछ संकेत दे सकता है? जब, कहाँ, कैसे और कैसे भौतिक डिवाइस को निर्धारित करने के लिए /dev/console कनेक्ट करता है?मैं कैसे पा सकता हूं कि कौन सा भौतिक उपकरण/dev/console कनेक्ट होता है?

संपादित करें:

  1. /dev/console कर्नेल पैरामीटर, जो बारी में getty द्वारा किया जाता है stdin/stdout/stderr को खोलने के लिए की console= से कॉन्फ़िगर किया गया है: नवीनतम खोज है। यदि console= निर्दिष्ट नहीं है, /dev/nullstdin/stdout/stderr के रूप में खोला गया है। लेकिन मुझे यकीन नहीं है कि वे /dev/console के साथ बिल्कुल वही हैं, जो /dev/console का तात्पर्य है I/O विभिन्न भौतिक उपकरणों से कनेक्ट हो सकता है।
  2. /dev/console अगर एक यूएसबी HID कुंजीपटल प्लग किया गया है पढ़ा जा सकता है और console= UART के रूप में कॉन्फ़िगर नहीं है। इसलिए /dev/console == /dev/null थोड़ा समझ में आता है। अधिक जांच की आवश्यकता है।
+1

कर्नेल कमांड लाइन से 'console = 'पैरामीटर को कैसे प्रबंधित किया जाता है, यह देखने का प्रयास करें। – sawdust

+1

हाँ, मैंने इसे देखा है और यह पता चला है कि पैरामीटर 'init' को पास कर दिए गए हैं और बदले में 'getty_main()' है, जो 'busybox' के भीतर' गेटी' का कार्यान्वयन है। प्रासंगिक भाग मूल मानक इनपुट को 'बंद' करना है और फिर पास पैरामीटर के अनुसार एक नया खोलना है। तो मैं एक ऐसे तरीके की तलाश में हूं जो फ़ाइल डिस्क्रिप्टर से पथ पुनर्प्राप्त कर सके; चूंकि मैं जानना चाहता हूं कि 'डिफ़ॉल्ट' डिवाइस क्या है यदि कोई 'console = 'निर्दिष्ट नहीं है। – user1937358

+0

ऐसा लगता है कि 'गेट्टी' के लिए कोई कंसोल निर्दिष्ट नहीं है, तो 'init' द्वारा खोला गया बहुत मुट्ठी stdin/stdout/stderr '/ dev/null' है। रुचि रखने वालों के लिए, यह 'busybox' के स्रोत के' init_main() '->' console_init() '->' bb_sanitize_stdio() 'है। – user1937358

उत्तर

7

मुझे लगता है कि /sys/devices/virtual/tty/console/active आप जो खोज रहे हैं है।

+0

दुर्भाग्य से मेरे सिस्टम पर ऐसी कोई फ़ाइल नहीं है, जो एक एआरएम आधारित एम्बेडेड डिवाइस है। अब तक जो मैंने सीखा है वह यह है कि कंसोल को '/ etc/inittab' द्वारा कॉन्फ़िगर किया जा सकता है। – user1937358

+2

कर्नेल के अंदर, जो भी कंसोल के साथ आरंभ किया गया अंतिम मॉड्यूल है कंसोल के रूप में कॉन्फ़िगर किया गया है। अगर मैं सही ढंग से समझता हूं तो इनटैब का उपयोग यह कॉन्फ़िगर करने के लिए किया जाता है कि कौन सा टीटी टर्मिनल लॉग इन प्रोग्राम चलाने के लिए उपयोग किया जाएगा। –

+3

एफवाईआई लिनक्स 2.6।35 में फ़ाइल नहीं है, कुछ नए लिनक्स सिस्टम में यह है। – pts

0

http://man7.org/linux/man-pages/man4/console.4.html से: "वर्तमान सांत्वना भी द्वारा /dev/कंसोल या/dev/tty0, प्रमुख संख्या 4 और छोटी संख्या 0. साथ चरित्र डिवाइस संबोधित किया जाता है"

मुझे उम्मीद है कि आप यही चाहते थे।

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

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