यूजरस्पेस, या आउटपुट टेक्स्ट से कंसोल के रूप में / dev / fb0 का उपयोग कैसे करें


24

इसलिए मेरे पास एक पाम प्री (मूल P100EWW) मॉडल है जिसे मैंने डेवलपर मोड सक्षम किया है, और एक डेबियन स्क्वीज़ चेरोट स्थापित किया है। बहुत अच्छा काम करता है। मेरे पास कुछ भी (बिटोरेंट पीयर, वेब सर्वर) लेकिन एक फोन के लिए इसका उपयोग करने की योजना है।

मैंने देखा अगर मैं ऐसा करता हूं तो cat /dev/urandom > /dev/fb0यह वास्तव में स्क्रीन पर यादृच्छिक पिक्सल लिखता है जब तक कि कोई No space left on deviceत्रुटि उत्पन्न नहीं होती है। बहुत बढ़िया, अब मैं डिस्प्ले का उपयोग कर सकता हूं।

तो किस तरह के उपयोग हैं जो या तो ए) मुझे एक कंसोल के रूप में / देव / fb0 का उपयोग करने देंगे / मैं बी को आउटपुट कर सकता हूं या बी) कमांड लाइन से / dev / fb0 पर टेक्स्ट रेंडर कर सकता हूं।

मैं अभी तक इसके लिए कर्नेल को फिर से शुरू करने के बारे में नहीं जानता (मुझे अंततः WebOS को पूरी तरह से बंद करना होगा और इसे एक न्यूनतम एआरएम सर्वर में बदलना होगा) यदि वे मौजूद हैं, तो उपयोगकर्तास्पेस टूल, जिनके बारे में मैं पूछ रहा हूं। इसके अलावा सीधे / dev / fb0 को प्रस्तुत करना पसंद करेंगे और X का उपयोग नहीं करेंगे।


लिनक्स वर्चुअल कंसोल को एक फ्रेमबफ़र ड्राइवर पर काम करना चाहिए। वर्चुअल कंसोल एक शक्तिशाली उपकरण हैं; लिनक्स 2.6 के बाद से वे प्रत्येक कंसोल के लिए अलग-अलग फ़ॉन्ट सेट करने की अनुमति देते हैं। लेकिन वे ( यूजर्सस्पेस से) / dev / vcs n और / dev / vcsa  n के माध्यम से नियंत्रित होते हैं  , न कि / dev / fc0 से।
इंनिस मिसी

जवाबों:


11

फ़्रेमबफ़र को कंसोल के रूप में उपयोग करने के लिए आपको fbdevमॉड्यूल की आवश्यकता होती है । आपको अपनी गिरी को फिर से जोड़ना पड़ सकता है।

आप DirectFB प्रोजेक्ट में भी रुचि ले सकते हैं, जो एक लाइब्रेरी है जो फ्रेमबफ़र का उपयोग करना आसान बनाता है। पहले से ही इसके लिए लिखे गए अनुप्रयोग और GUI वातावरण भी हैं।


1
ऐसा लगता है कि जब मैंने Directfb ( webos-internals.org/wiki/Directfb ) स्थापित किया था, तो यह एक उपयोगिता के साथ आया था, dfbgजो मुझे वहां पर एक तस्वीर डालने देता है (और जैसे पूरा होने पर इसे हटाता नहीं है fbi)। मुझे पता है कि मैं एक ब्लॉक पाठ से एक .png या समान बनाने के लिए एक उपयोगिता पा सकता हूं, इसलिए यह सिर्फ काम कर सकता है ...
लॉरेंस

24

कई लोगों ने कर्नेल के साथ काम करने और फ्रेमबफ़र पर (पाठ के बजाय) छवियां डालने से आपके प्रश्न के कुछ हिस्सों का जवाब दिया है , लेकिन अभी तक बाकी सब अनसुना है। हाँ, आप कर्नेल वर्चुअल टर्मिनल सबसिस्टम का उपयोग तथाकथित फ्रेमबफ़र कंसोल बनाने के लिए कर सकते हैं । लेकिन कई उपकरण हैं जो आपको उपयोगकर्ता-स्पेस वर्चुअल टर्मिनल बनाने के लिए फ़्रेमबफ़र डिवाइस का उपयोग करने की अनुमति देते हैं । इसमें शामिल है:

  • जेकॉन ( डेबियन ) - एक यूजरस्पेस वर्चुअल टर्मिनल कर्नल सबसिस्टम की तुलना में CJK I / O को संभालने की दिशा में सक्षम है। इसकी विशेष ताकत आईएसओ 2022 गैर-यूटीएफ एन्कोडिंग को संभालने में है; इसकी विशेष कमजोरी UTF एनकोडिंग है।
  • fbterm ( डेबियन ) - एक यूजरस्पेस वर्चुअल टर्मिनल जिसने jfbterm सहित कई कांटे पैदा किए हैं । इसमें CJK इनपुट मेथड प्लग-इन का एक गुच्छा है।
  • bogl-bterm ( डेबियन ) - एक यूजरस्पेस वर्चुअल टर्मिनल, जिसमें नाइटर्म जैसे कांटे होते हैं
  • अली घोलमी रूडी का फैबपैड - एक न्यूनतम उपयोगकर्ता वर्चुअल टर्मिनल है जिसकी एक्स लाइब्रेरी पर कोई निर्भरता नहीं है।
  • console-terminal-emulatorऔर console-fb-realizerमें उपकरण nosh - एक यूज़रस्पेस आभासी टर्मिनल लिनक्स और FreeBSD / पीसी-BSD कर्नेल आभासी टर्मिनल नकल करने के उद्देश्य से। इसकी एक्स लाइब्रेरी पर भी कोई निर्भरता नहीं है।
  • kmscon - एक यूजरस्पेस वर्चुअल टर्मिनल जो सिस्टमड में logindसर्वर और "सीट्स" की धारणाओं के साथ जुड़ा हुआ है ।

विशेष रूप से अली घोलमी रूडी ने फ्रेमबफ़र काम के लिए सिर्फ एक टर्मिनल एमुलेटर से अधिक उत्पादन किया है। उन्होंने एक डायरेक्ट-टू-फ्रेमबफ़र पीडीएफ दर्शक, वीएनसी दर्शक, मीडिया प्लेयर और कुरान रीडर भी लिखा

एक पूर्ण पक्षीय तुलना इस उत्तर के दायरे से बाहर है; लेकिन यहाँ कुछ बिंदु हैं जो प्रश्न के लिए प्रासंगिक हैं:

  • जैसा कि कहा गया है, उपयोगकर्ता-स्पेस वर्चुअल टर्मिनल प्रोग्राम में से कई फ़ॉन्ट हैंडलिंग, कीबोर्ड मैपिंग, सीजेके इनपुट विधियों और इसके आगे के लिए एक्स लाइब्रेरीज़ का उपयोग करते हैं। वे एक्स क्लाइंट नहीं हैं, लेकिन उनके पास एक्स लाइब्रेरी से निर्भरता है। fbpadऔर डिजाइन के द्वारा नोश उपकरण किसी भी एक्स लाइब्रेरी का उपयोग नहीं करते हैं।
  • फ़ॉन्ट हैंडलिंग के लिए X लाइब्रेरीज़ का उपयोग करने वाले प्रोग्राम बेशक एक्स फोंट का उपयोग करते हैं। दूसरे अन्य व्यवस्था करते हैं।
    • bogl-bterm और fbpad दोनों के अपने-अपने idiosyncratic फ़ॉन्ट प्रारूप हैं। एक बीडीएफ फोंट को bdftoboglउपकरण के साथ बीओजीएल फोंट में परिवर्तित करता है; और एक टीटीएफ को "लिटिलफोंट" फोंट में परिवर्तित करता है जिसका उपयोग एफबीपैड द्वारा ft2tf ( आर्क ) टूल के साथ किया जाता है ।
    • Nosh console-fb-realizerटूल नए फ्रीबीएसडी 10.1 कर्नेल वर्चुअल टर्मिनल सबसिस्टम के समान "वीटी" फॉन्ट का उपयोग करता है, और इस प्रकार vtfontcvtबीडीएफ फोंट को परिवर्तित करने के लिए फ्रीबीएसडी फॉन्ट हेरफेर उपकरण साझा करता है ।
  • एक्स लाइब्रेरी का उपयोग करने वाले प्रोग्राम एक्स कीबोर्ड मैपिंग का उपयोग करते हैं। दूसरों के लिए के रूप में:
    • नोश टूल्स का अपना स्वयं का आइडिओसोनिक कीबोर्ड मानचित्र प्रारूप होता है, जिसका लक्ष्य आईएसओ "सामान्य" समूह के साथ पूर्ण आईएसओ 9995-3 सक्षम कीबोर्ड प्रदान करना होता है। एक बीएसडी kbdmap फ़ाइलों को console-convert-kbdmapटूल के साथ इस प्रारूप में परिवर्तित करता है। फिर से, ये kbdmap फाइलें FreeBSD / PC-BSD vt सबसिस्टम के साथ प्रयोग की जाती हैं
    • fbpad अपनी खुद की कीबोर्ड मैपिंग बिल्कुल नहीं करता है, और इसके लिए कर्नेल वर्चुअल टर्मिनल सबसिस्टम और उसके कीबोर्ड मैपिंग तंत्र की उपस्थिति पर निर्भर करता है।
  • मंगलाचरण और आवश्यक विशेषाधिकारों में कुछ बदलाव हैं:
    • zhcon, fbterm, bogl-bterm, fbpad, और kmscon इस आधार पर काम करते हैं कि टर्मिनल एमुलेटर टर्मिनल / शेल प्रोग्राम को सीधे चाइल्ड प्रोसेस के रूप में खोल देता है। उन्हें स्पॉन करने के लिए सुपरसुसर विशेषाधिकारों की आवश्यकता होती है login
    • नोश टूल्स को एक मौजूदा /etc/ttys(बीएसडी), /etc/inittab(लिनक्स सिस्टम 5 init), या अन्य सिस्टम के साथ एकीकृत करने के लिए डिज़ाइन किया गया था , जिसके लिए वे स्पॉटी गेटी / लॉगिन / शेल की नौकरी छोड़ देते हैं। console-fb-realizerफ़्रेमबफ़र और इनपुट ईवेंट डिवाइस को खोलने के लिए केवल पर्याप्त विशेषाधिकार की आवश्यकता होती है, जिसे सुपरसुसर विशेषाधिकारों की आवश्यकता नहीं होती है, और इसके द्वारा बनाए गए FIFOs और साधारण फ़ाइलों तक पहुंचने के लिए console-terminal-emulator, जिसके लिए किसी विशेष विशेषाधिकार की आवश्यकता नहीं होती है।

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

  • bogl-bterm निश्चित रूप से बेन पफ़्फ़्स बेन ऑफ़ ओन ग्राफिक्स लाइब्रेरी पर आधारित एक फ्रेमबफ़र I / O लाइब्रेरी है जिसे सिस्टम सेटअप / बचाव वातावरण में उपयोग के लिए डिज़ाइन किया गया है (और "पीडीए में GUIs के लिए" )। आप निश्चित रूप से उन कार्यक्रमों को लिख सकते हैं जो सीधे उपयोग करते हैं।
  • एक आधे रास्ते के घर के लिए एक प्रोग्राम लिखने के बीच, जो एक फ्रेमबफ़र लाइब्रेरी का उपयोग अपने स्वयं के रेंडरिंग करने के लिए करता है और एक प्रोग्राम जो एस्केप सिक्वेंस को स्पिट करता है, जो यह सोचता है कि यह एक टर्मिनल है: नोश उपयोगकर्ता-स्पेस वर्चुअल टर्मिनल मॉड्यूलर है, और अलग हो जाता है घटक के टुकड़े। एक बस का उपयोग नहीं कर सकते हैं console-terminal-emulator

    console-fb-realizerएक चरित्र सेल सरणी के साथ एक प्रदर्शन फ़ाइल का उपयोग करता है, /dev/vcsa*लेकिन एक साधारण फ़ाइल (एक चरित्र विशेष डिवाइस फ़ाइल नहीं) और यूनिकोड कोड बिंदुओं के साथ, ECMA-48 विशेषताएँ और 24-बिट RGB रंग। तो कोई इसे चला सकता है और सीधे कैरेक्टर सेल ऐरे फाइल में कैरेक्टर + एट्रीब्यूट + कलर लिख सकता है, जिससे console-fb-realizerफॉन्ट रेंडर करने के लिए फॉन्ट रेंडरिंग कर सकता है।

    एक तरफ के रूप में: निरीक्षण करें कि यह BRLTTY के साथ एकीकरण के विपरीत है , जो उपयोग करता है console-terminal-emulatorलेकिन चलता नहीं है console-fb-realizer


1
यह एक अद्भुत उत्तर है। ज्ञानवर्धक पुस्तकालयों का दावा है कि लिनक्स पर फ्रेमबफ़र समर्थन है fbcon- संकलन-समय विकल्पों पर निर्भर करता है । यह उनके आश्रित टर्मिनल एमुलेटर शब्दावली का भी सच है : सीधे लिनक्स फ्रेमबफ़र (fbcon) में काम करता है । इसके अलावा terminology, मैं kmscon (और डेविड हेरमैन की अन्य कार्यों की) दूसरी सिफारिश करता हूं
मोकेसर

1
रुडी फ्रेमबफ़र का एक मास्टर है! एक दिन मैं X11 भी खोदूंगा।
सिरो सेंटिल्ली :58 改造 iro i ''

10

यदि आप /dev/urandom > /dev/fb0स्क्रीन पर कैट और रैंडम पिक्स प्राप्त कर सकते हैं, तो आपके पास आपकी आवश्यकता है।

मेरे मामले में मुझे कुछ पाठ जानकारी डंप करने की आवश्यकता थी। मैंने इसे बिजीबॉक्स और रास्पि में परीक्षण किया है, इसलिए यह आपके लिए काम कर सकता है। इसका उत्तर थोड़ा लंबा हो सकता है, क्योंकि यदि आप कुछ कंसोल का उपयोग नहीं करते हैं, तो आपको अपने आप चार्ट के पिक्सेल प्रिंट करने की आवश्यकता होगी। सौभाग्य से किसी ने कठिन काम किया है, इसलिए हमें बस इसे संयोजित करने की आवश्यकता है।

बिजीबॉक्स में या आपके रसपी में आपके पास एक fbsetबाइनरी होना चाहिए । इससे आपको स्क्रीन आयामों के रूप में अपनी सेटिंग्स का पता लगाने में मदद मिल सकती है।

मेरे एम्बेडेड में इस तरह दिखता है:

# fbset

mode "480x272-1"
    # D: 0.104 MHz, H: 0.207 kHz, V: 0.657 Hz
    geometry 480 272 480 272 16
    timings 9600000 3 3 0 32 17 11
    accel false
    rgba 5/0,6/5,5/11,0/0
endmode

यहाँ का महत्वपूर्ण भाग चौड़ाई 480 और ऊँचाई 272 पिक्सेल है।

जैसा कि आपने उल्लेख किया है, आप स्क्रीन को पूरा कर सकते हैं cat /dev/urandom > /dev/fb0

और आप इसे साफ कर सकते हैं cat /dev/zeros > /dev/fb0

अपनी स्क्रीन को साफ़ करें, हमें आश्वस्त करना चाहिए कि आपको आयाम ठीक से मिलेंगे।

संयोग से मेरे बिजीबॉक्स में एक fbsplash बाइनरी था जो इनपुट .ppm फ़ाइल के रूप में मिलता है।

सही है अगर मैं गलत हूं, लेकिन ऐसा लगता है कि fb0इस प्रारूप को स्वीकार करता है। विकिपीडिया पर पोर्टेबल अनिमैप पर एक नज़र डालते हुए , कई "उपप्रकार" हैं ... fbsplash रंग के साथ एक फैंसी का उपयोग करता है, और इसी तरह ... लेकिन हम सिर्फ पढ़ने योग्य कुछ प्रिंट करने में सक्षम होना चाहते हैं। आइए सरलता के लिए ASCII में कोडित P1 का उपयोग करें। यदि हम एक ऊर्ध्वाधर रेखा प्रिंट कर सकते हैं, तो हमें पता होगा कि हमारे आयाम सही हैं। चलो यह कोशिश करते हैं:

Ppm प्रकार P1 में एक वर्टिकल लाइन इस तरह दिखनी चाहिए:

P1
480 272
f 0 0 0 0 ... 0 
f 0 0 0 0 ... 0
... 
f 0 0 0 0 ... 0

तो, वहाँ 272 लाइनों, 959 चौड़े चौड़े होंगे। प्रलेखन का कहना है कि यह एफ के बजाय 1 होना चाहिए ... व्यस्त बॉक्स पर और रास्पि एफ उज्जवल था।

यह महत्वपूर्ण है कि आपके पास 0 के बाद कोई स्थान नहीं है ... यह कार्य थोड़ा थकाऊ हो सकता है ... आप बेहतर तरीके से एक पाठ संपादक का उपयोग करते हैं जो आपकी मदद करता है। Vim में, आप पहले दो पंक्तियों को कॉपी कर सकते हैं, कमांड मोड (esc) पर जा सकते हैं, निम्न वर्णों को टाइप करें:

of(esc)479a 0(esc)yy271p

बेशक, मैं अपने आयामों का उपयोग कर रहा हूं, आपको आपका उपयोग करना चाहिए। इस फ़ाइल को कैट करें /dev/fb0, यह इस तरह दिखना चाहिए: वर्टिकल लाइन स्क्रीन

ठीक है, मैं धोखा दे रहा हूं ... यह सिर्फ एक पंक्ति नहीं है ... यह लगभग 8 है ... लेकिन जब यह काम नहीं करता है (हमारे पास गलत आयाम हैं या हमारे पास अंत में जगह है, तो बस एक पंक्ति ज्यादा है आसान)।

यदि आपको वह मिल गया है, तो हमें चार्ट के रूप में देखने के लिए सही पिक्सेल प्रिंट करना होगा। Marcel Sondaar और GitHub पर उनके रेपो के लिए धन्यवाद, हमें प्रत्येक वर्ण को आकर्षित करने की आवश्यकता नहीं होगी।

एक छोटी सी ट्वीक एक साथ विस्तार उसकी साधारण प्रोग्राम मुद्रित करने के लिए fके बजाय Xऔर 0, रिक्त स्थान के बजाय, प्रत्येक चार के बीच रिक्त स्थान डालने शीर्ष लेख और हम पत्र अपने charcode इसी के साथ एक .ppm फ़ाइल है।

एक छोटा कदम और आप इनपुट के रूप में एक चार नहीं मिलता है, लेकिन एक लाइन। एक फ़ाइल कैट, अपने कार्यक्रम और आउटपुट के लिए पाइप /dev/fb0और आप एक पाठ उत्पादन मिलता है:

टेक्स्ट आउटपुट का उदाहरण

मैं एक रास्पबेरी पाई पर भी इस समाधान का परीक्षण करता हूं और यह काम करता है। सिस्टम मुझे बताता है कि मेरे पास 2 से अधिक लिंक पोस्ट करने के लिए प्रतिष्ठा नहीं है। जब तक मुझे यह नहीं मिलता, तब तक आपको मेरे शब्द पर भरोसा करना चाहिए: डी


2

कंसोल साइड के लिए, आप सामान को गूंज /dev/consoleसकते हैं या आप syslog का उपयोग कर सकते हैं, और विभिन्न अन्य सेटिंग्स के आधार पर, यह कंसोल पर दिखाई दे सकता है।

छवियों के लिए, मैंने बस fb0 के लिए एक bmp फ़ाइल को पूरा करने की कोशिश की और यह वास्तव में काम किया! (छँटाई - कई प्रतियाँ, छोटे आकार)

मैं एक bmp करने वाली फ्रेमबफर कार्यक्रम पाया यहाँ । यह उस प्रारूप का एक आदर्श उदाहरण होना चाहिए जिसकी fb0 उम्मीद कर रही है। वहाँ भी है fbi, फ्रेम बफर को सीधे लिखने के लिए एक कार्यक्रम।


fbiमुझे स्क्रीन पर एक तस्वीर लगाने की अनुमति देता है, जो उपयोगी है, लेकिन एक बार बाहर निकलने के बाद यह फ्रेमबफ़र को साफ करता है।
LawrenceC

0

यह एक पुरानी पोस्ट है, लेकिन मुझे समझ में आता है कि आपको फ्रेमबफ़र पर कंसोल चलाने के लिए फ़्रेमबफ़र कंसोल (fbcon) की आवश्यकता होती है। यह विन्यास में है। (डिवाइस ड्राइवर / ग्राफिक्स / कंसोल डिस्प्ले ..)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.