कोई फ्रेमबफ़र डिवाइस: इसे कैसे सक्षम करें?


23

मैं अपने हेडलेस होम सर्वर में एक PCMCIA ट्यूनर कार्ड बनाने की कोशिश कर रहा हूं, जो डेबियन स्क्वीज चल रहा है। अब, क्योंकि मुझे कैप्चर करने के लिए सही कमांड लाइन खोजने में बहुत बड़ी परेशानी है, वीडियो को वीएलसी का उपयोग करके नेटवर्क पर ट्रांसकोड करना है, मैंने कदम दर कदम जाने का फैसला किया, और पहले स्थानीय आउटपुट पर काम किया।

यही वह जगह है जहां समस्या आती है: संलग्न स्क्रीन पर ग्राफिक्स प्रदर्शित करने के लिए एक्सेस करने के लिए कोई फ्रेमबफ़र डिवाइस (/ देव / fb0) नहीं लगता है! और वास्तव में मैंने देखा कि मेरे पास बूट पर लिनक्स पेंगुइन की छवि नहीं है (ध्यान नहीं दिया जाता है क्योंकि स्क्रीन संलग्न है, लेकिन हमेशा बंद है, और वैसे भी कंप्यूटर हमेशा चालू है)।

जैसा कि मैं लिनक्स ग्राफिक्स से बहुत परिचित नहीं हूं, मैं इसे समझना चाहूंगा:

  • क्या यह मेरे विशेष हार्डवेयर (नीचे देखें) से संबंधित है? या यह डेबियन निचोड़ / एक कर्नेल संस्करण / ... के लिए विशिष्ट है?
  • क्या कुछ ड्राइवर है जिसे मुझे मैन्युअल रूप से स्थापित / लोड करने की आवश्यकता है?

अब कुछ सामान्य जानकारी:

  • कंप्यूटर में कोई समर्पित ग्राफिक कार्ड नहीं है, लेकिन एक एम्बेडेड ग्राफिक चिपसेट (Intel G31 Express), जो मदरबोर्ड पर एम्बेडेड है (गीगाबाइट G31M-ES2L)
  • मैं एक पूर्ण विशेषताओं वाला एक्स सर्वर स्थापित नहीं करना चाहता, बस इस विशेष परीक्षण के लिए एक फ्रेमबफ़र डिवाइस है

इस मुद्दे पर कोई विचार / टिप्पणी?


1
एक बार जब आप अपना /dev/fb0उठना और दौड़ना शुरू कर दें, तो कृपया मेरे उत्तर को स्वीकार करना सुनिश्चित करें। शायद ही कभी कम आम विषय पर वास्तविक अनुभव वाले लोग करते हैं, मुख्यालय जवाब देने के लिए चारों ओर हो जाते हैं। वे यूनिक्स-एसई पर मौजूद हैं, इसके अपेक्षाकृत असामान्य विषय इतने कम विशेषज्ञ मौजूद हैं।
जेएम बेकर

संबंधित: unix.SE/159807
n611x007 14:17

जवाबों:


36

मैं आपके सवाल का समाधान कर सकता हूं, पहले लिनक्स एफबी के साथ काम कर चुका हूं।

कैसे Linux अपने FB करता है।

  1. सबसे पहले आपको अपने कर्नेल में अपने हार्डवेयर के अनुरूप फ़्रेमबफ़र का समर्थन करने की आवश्यकता है। अधिकांश आधुनिक वितरण में कर्नेल मॉड्यूल के माध्यम से समर्थन होता है। इससे कोई फर्क नहीं पड़ता कि आपका डिस्ट्रो बूट लोगो के साथ प्री-कॉन्फिडेंट हो जाता है, मैं एक का उपयोग नहीं करता और एफबी सपोर्ट करता हूं।

  2. इससे कोई फर्क नहीं पड़ता कि आपके पास एक समर्पित ग्राफिक्स कार्ड है, जब तक हार्डवेयर फ्रेमबफ़र समर्थित है तब तक एकीकृत काम करेगा।

  3. आपको X की आवश्यकता नहीं है, जो कि फ़्रेमबफ़र होने का सबसे मोहक पहलू है। कुछ लोग बेहतर नहीं जानते हैं, इसलिए उन्होंने अपनी गलतफहमी को दूर करने के लिए एक्स के कुछ रूप की वकालत की।

  4. आपको सीधे एफबी के साथ काम करने की आवश्यकता नहीं है, जिसे कई लोग गलत तरीके से मानते हैं। FrameBuffer के साथ विकसित करने के लिए एक बहुत ही बढ़िया पुस्तकालय है DirectFBयह कुछ बुनियादी त्वरण समर्थन भी है। मैं हमेशा कम से कम इसकी जाँच करने का सुझाव देता हूं, यदि आप एक पूर्ण विशेषताओं वाली एफबी आधारित परियोजना (वेब ​​ब्राउज़र, गेम, जीयूआई ...) शुरू कर रहे हैं।

अपने हार्डवेयर के लिए विशिष्ट

  1. Vesa Generic FrameBuffer का उपयोग करें, इसके मॉड्यूल को कहा जाता है vesafb। आप इसे लोड कर सकते हैं, यदि आपके पास यह उपलब्ध है, तो कमांड के साथ modprobe vesafb। कई वितरण इसे अक्षम कर देते हैं, आप इसमें देख सकते हैं /etc/modprobe.d/। एक या अन्य ब्लैकलिस्ट फ़ाइल में blacklist vesafbटिप्पणी करने की आवश्यकता हो सकती है ।#blacklist-framebuffer.conf

  2. सबसे अच्छा विकल्प, एक हार्डवेयर विशिष्ट KMS ड्राइवर है। इंटेल के लिए मुख्य एक इंटेल GMA है, यह सुनिश्चित नहीं है कि इसके मॉड्यूल का नाम क्या है। आपको अपने डिस्ट्रो दस्तावेजों से इसके बारे में पढ़ना होगा। यह सबसे अच्छा प्रदर्शन करने वाला एफबी विकल्प है, मैं व्यक्तिगत रूप से हमेशा संभव हो तो केएमएस पहले जाऊंगा।

  3. लिगेसी हार्डवेयर विशिष्ट FB ड्राइवर्स का उपयोग करें, अनुशंसित नहीं क्योंकि वे कभी-कभी छोटी गाड़ी होते हैं। जब तक अंतिम उपाय आवश्यक न हो, मैं इस विकल्प से बचता हूँ।

मेरा मानना ​​है कि यह आपके सभी प्रश्नों को कवर करता है, और उस /dev/fb0उपकरण को उपलब्ध कराने के लिए जानकारी प्रदान करनी चाहिए । कुछ भी अधिक विशिष्ट के लिए वितरण विवरण की आवश्यकता होगी, और यदि आप कुछ हद तक अनुभवी हैं, तो आरटीएफएम आपको चाहिए। (इसे पढ़ने के बाद)।

मुझे आशा है कि मैंने आपकी मदद की है, आपके भाग्यशाली मेरे एक विषय के बारे में पूछ रहे हैं! यह यूनिक्स-एसई पर एक उपेक्षित विषय है, क्योंकि हर कोई (जानबूझकर) लिनक्स फ़्रेमबफ़र का उपयोग नहीं करता है।

नोट: UvesaFB या VesaFB?

आपने पढ़ा होगा कि लोग बेहतर उपयोग करते uvesafbहैं vesafb, क्योंकि इसका प्रदर्शन बेहतर था। यह WAS आम तौर पर सच है, लेकिन आधुनिक हार्डवेयर के साथ एक आधुनिक डिस्ट्रो में नहीं। यदि आपका ग्राफ़िक्स हार्डवेयर संरक्षित मोड VESA (VESA> = 2.0) का समर्थन करता है, और आपके पास कुछ हालिया कर्नेल vesafbहै, तो अब एक बेहतर विकल्प है।


1
आपके उत्तर के लिए बहुत बहुत धन्यवाद !!! यह गहराई और गुणवत्ता के मामले में मैं जो उम्मीद कर रहा था उससे परे है !! मैं वास्तव में सराहना करता हूं जब मुझे आपके जैसे पोस्ट / उत्तर मिल सकते हैं क्योंकि न केवल वे विशिष्ट मुद्दे पर समाधान देते हैं, बल्कि इससे भी महत्वपूर्ण बात वे आंतरिक कामकाज पर सामान्य जानकारी देते हैं जो समान या संबंधित स्थितियों के लिए दूसरों के लिए सहायक हो सकते हैं !!
फेडरिको

1
अपने मुद्दे के बारे में, मैं इसे आपके इनपुट के आधार पर देखूंगा और जैसे ही मुझे संतोषजनक परिणाम प्राप्त होंगे, वापस रिपोर्ट कर दूंगा ...
फेडरिको

3
इसलिए मैंने कोशिश की modprobe vesa(जो मुझे याद है कि यहां सवाल पूछने से पहले कोशिश की गई थी) जो विफल रहता है क्योंकि मॉड्यूल मेरे सिस्टम पर मौजूद नहीं है ( FATAL: Module vesafb not found.) -> यह समझना होगा कि क्या यह मेरे हार्डवेयर या मेरे लिनक्स वितरण से संबंधित है (डेबियन स्क्वीज़ )। अच्छी खबर यह है कि modprobe uvesafbकाम करता है और /dev/fb0डिवाइस बनाता है। हालाँकि, अब जब मैंने आपका उत्तर पढ़ लिया है, तो मैं चीजों को उचित तरीके से स्थापित करने और KMS ड्राइवर को खोजने का प्रयास करूँगा ...
Federico

1
मैंने आपकी टिप्पणियों को वोट दिया, मैं उत्साहित हूं कि मैं मदद कर सकता हूं! आपकी अंतिम टिप्पणी को संबोधित करने के लिए, आप समाधान 2 के बारे में गलत हैं। आप ABSOLUTELY को एक्स के बिना एक KMS प्राप्त कर सकते हैं, लेकिन जैसा मैंने कहा कि वास्तविक उत्तर सचमुच कचरे में डूब रहे हैं। सही हार्डवेयर मॉड्यूल का नाम कहा जाता है inteldrmfb, मैंने पाया कि यह कुछ त्वरित शोध कर रहा है। मेरे पास हमेशा एटीआई है, इसलिए इंटेल जीपीयू संबंधित समर्थन मेरा सबसे मजबूत बिंदु नहीं है। आपको इसके लिए एक पैकेज स्थापित करने की आवश्यकता हो सकती है, लेकिन मैं देखूंगा कि क्या मुझे पता चल सकता है।
जेएम बेकर

1
ओ रुको, मैंने एक गलती की ... मैंने बस अपनी इंटेल नेटबुक की जांच की और मॉड्यूल है i915, लेकिन यह फ़्रेमबफ़र को लोड करता है जिसे इन्टेल्ड्रम्फब के रूप में जाना जाता है। आपको पैकेज को स्थापित करने की आवश्यकता हो सकती है libdrm-intel1, या अगर यह स्थापित है तो जांचें।
जेएम बेकर

10

मैंने आखिरकार अपनी समस्या का हल ढूंढ लिया है !!

सबसे पहले, उन सभी को बहुत धन्यवाद, जिन्होंने योगदान दिया और विशेष रूप से TechZilla में और विस्तृत विवरण उन्होंने प्रदान किया जिसके बिना मुझे लगता है कि मैंने बहुत पहले छोड़ दिया होगा!

तो मूल रूप से सभी को जो करने की आवश्यकताmodeset=1 होती है वह i915कर्नेल मॉड्यूल लोड होने पर मोडसेटिंग ( ) सक्षम करता है। यह सामान्य तरीके से किया जा सकता है:

  • GRUB के कर्नेल पैरामीटर के माध्यम से,
  • में एक कॉन्फ़िगर फ़ाइल के माध्यम से /etc/modprobe.d
  • या कमांड लाइन पर:

    # rmmod i915
    # modprobe i915 modeset=1
    

वास्तव में, आपको पैकेज स्थापित करने पर कुछ भी करने की आवश्यकता नहीं है xserver-xorg-video-intel, जो /etc/modprobe.d/i915-kms.confयुक्त बनाता है options i915 modeset=1। हालाँकि, अगर कोई X (मेरे मामले में) को स्थापित नहीं करना चाहता है, तो KMS स्वचालित रूप से सक्षम नहीं है, जो बताता है कि फ्रेमबफ़र डिवाइस क्यों नहीं बनाया गया ...


2
आपको अभी भी मेरे उत्तर को स्वीकार करना चाहिए, क्योंकि "मैं निचोड़ के साथ केएमएस को कैसे चालू करता हूं" आपका प्रारंभिक प्रश्न नहीं था। मुझे विश्वास है कि मैंने आपके प्रारंभिक उत्तर का उत्तर दिया था, और आपको आपके इच्छित मार्ग पर इंगित किया। दूसरा कारण, आपको केवल 'अन्य' लोगों को जवाब देने के लिए अंक मिलते हैं। भले ही आत्म-पुरस्कार के लिए अच्छा है अगर कोई भी करीब नहीं आता है, इस मामले में इसका कोई मतलब नहीं है। आपका जवाब भले ही आपके उत्तर को पोस्ट करता रहे, या प्रश्न में जानकारी को एकीकृत करता है। किसी भी तरह से ठीक होगा। वास्तव में खुशी है कि मैंने हालांकि मदद की! मुझे वास्तव में खुशी है कि आपको KMS समाधान काम कर रहा है, क्योंकि यह सादे VESA से अधिक तेज़ होना चाहिए।
जेएम बेकर

1
मैंने अभी-अभी आपका स्वीकृत उत्तर वापस बदल दिया है! यहाँ नए तरह के होने के कारण, मुझे ठीक से पता नहीं था कि क्या करना है: प्रश्न को हल करने के लिए, अपने स्वीकृत उत्तर के लिए एक टिप्पणी में, या एक नए उत्तर के रूप में पोस्ट करें। मुझे लगा कि एक नया स्वीकृत उत्तर बनाने से, लोग पहले प्रश्न को पढ़ेंगे, फिर आपका उत्तर जो शीर्ष पर आता है क्योंकि इसमें अधिक उत्थान होता है और फिर मेरा उत्तर ...
फेडेरिको

जबकि अन्य उत्तर पूरी तरह से है, यह स्वीकृत उत्तर होना चाहिए। भले ही लेखक कितना भी प्यारा लगे।
मोग

-2

आप Xvfb (X वर्चुअल फ़्रेमबफ़र) की तरह एक वर्चुअल फ़्रेमबफ़र आज़मा सकते हैं।

निचोड़ में xvfb पैकेज का विवरण


1. यह एक 'वर्चुअल' फ़्रेमबफ़र है, न कि एक वास्तविक प्रत्यक्ष हार्डवेयर फ़्रेमबफ़र। 2. इसका एक एक्स सर्वर, और विशेष रूप से सवाल का अनुरोध नहीं एक्स।
जेएम बेकर

-2

जब तक यह कुछ भी नहीं फैंसी और एक मानक गिरी के साथ एक मानक डेबियन स्थापित है, तो आपको एक HGA VGA कंसोल प्राप्त करने में सक्षम होना चाहिए जो कि कर्नेल पैरामीटर जैसे "vga = 792" के साथ फ्रेमबफ़र डिवाइस का उपयोग करता है (जो कि 24 × 1024 × 768 है )। सुनिश्चित करें कि कर्नेल इसे पदावनत करता है, लेकिन यह काम करता है।

कर्नेल मापदंडों के लिए http://www.kernel.org/doc/Documentation/kernel-parameters.txt देखें । दिलचस्प है कि वहाँ "vga =" paremeter को दर्शाया नहीं गया है।

अपडेट-ग्रब (2) और परिवर्तन के बाद पसंद को फिर से चलाना सुनिश्चित करें।

इसके अलावा http://packages.debian.org/squeeze/svgalib-bin पर एक नज़र डालें, यह सही नहीं है, लेकिन यह आपको कंसोल पर कुछ फैंसी ग्राफिक्स सामान करने की अनुमति देता है।


3
नहीं, यह काम नहीं करता है, MANY परिस्थितियों में। यह जवाब है कि मैं हमेशा बात कर रहा हूं। यदि आप GRUB2 का उपयोग करते हैं तो यह केवल तब काम करता है जब विरासत में 16गिरावट के साथ बूट हो रहा हो। यह भी पदावनत है, जो कम से कम आप स्वीकार करते हैं, व्यावहारिक रूप से इसका मतलब है कि आईटी के साथ नया सेट न करें। vga=यदि आप अपने हार्डवेयर मॉड्यूल को निष्क्रिय कर चुके हैं /etc/modprobe.d/और कई डिस्ट्रोफिक आ चुके हैं तो पुराना कचरा बूट नहीं हो पाएगा ।
जेएम बेकर

इसलिए अगली समस्या, स्लीगिब-बिन एक लाइब्रेरी है जो '/ dev / fb0' डिवाइस नहीं है। जो कुछ भी svgalib चाहता है, उसे svgalib के साथ विकसित करने की आवश्यकता है। इसका उपयोग एफबी को बदलने के लिए किया जा सकता है, लेकिन यह एफबी को बदलने के लिए 'शाब्दिक' नहीं है। मैंने वास्तव में आखिरी टिप्पणी में एक त्रुटि की, जब मैंने कहा कि "बूट करने में विफल ', मेरा मतलब था" एफबी लोड करने में विफल, संभावना मानक वीजीए पर वापस आ जाएगी "
जेएम बेकर

3
यह वास्तव में आपकी गलती भी नहीं है, हमारा समुदाय भयानक रूप से पुराने दस्तावेज छोड़ देता है। हर कोई इंटरनेट पर पुराने जवाबों को दोहराता है, जिससे आधुनिक समझ जानवर के लिए मुश्किल हो जाती है। बहुत सारे लोग तो बस हार मान लेते हैं, क्योंकि असली जवाब नया है और आने वाले सालों में दफन किए गए समाधान।
जेएम बेकर

1
निचोड़ का उपयोग करते समय "vga =" पैरामीटर काम करता है। मैंने केवल यह सुझाव दिया है कि यह एक आसान त्वरित सुधार है, इसके बजाय शोध करने के बजाय कि यह क्या है। kernel.org/doc/Documentation/kernel-parameters.txt "vga =" को पदावनत नहीं दिखाता है। एकमात्र कारण जो मुझे पता है कि कर्नेल द्वारा एक त्वरित बमुश्किल पठनीय बूट संदेश के कारण है ... भ्रम की स्थिति ... इसलिए कर्नेल पर पाठ के अनुसार "vga =" को पदावनत नहीं किया जाता है। हम क्या मानने वाले हैं?
असक

1
वैसे तो svgalib का उपयोग करने का मेरा सुझाव है क्योंकि उपयोगकर्ता X का उपयोग नहीं करना चाहता है। मैं svgalib के दोषियों को समझता हूं, लेकिन कुछ अन्य विकल्प भी हैं।
असक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.