ইউজারস্পেস থেকে কনসোল হিসাবে / dev / fb0 কীভাবে ব্যবহার করতে হয়, বা এতে আউটপুট পাঠ্য ব্যবহার করা যায়


24

সুতরাং আমার কাছে একটি পাম প্রি (মূল পি 100 ডাব্লুডাব্লু) মডেল রয়েছে যা আমি বিকাশকারী মোড সক্ষম করেছিলাম এবং একটি ডেবিয়ান স্কুইজ ক্রুট ইনস্টল করেছি। দুর্দান্ত কাজ করে। আমার এটি অন্য যে কোনও জন্য (বিটোরেন্ট পিয়ার, ওয়েব সার্ভার) তবে একটি ফোনের জন্য ব্যবহার করার পরিকল্পনা রয়েছে।

আমি লক্ষ্য করেছি যে আমি যদি এটি করি তবে cat /dev/urandom > /dev/fb0এটি No space left on deviceত্রুটি উত্পন্ন না হওয়া অবধি স্ক্রিনে এলোমেলো পিক্সেল লিখে । দুর্দান্ত, এখন আমি ডিসপ্লেটি ব্যবহার করতে পারি।

সুতরাং সেখানে কী ধরনের ইউটিলিটি রয়েছে যা ক) ক) আমাকে / dev / fb0 কনসোল হিসাবে ব্যবহার করতে দিন আমি পাঠ্য আউটপুট করতে পারি বা বি) কমান্ড লাইন থেকে / dev / fb0 এ পাঠ্য রেন্ডার করতে পারি।

আমি এটির জন্য কার্নেলটি পুনরায় সংশ্লেষ করার বিষয়ে জানি না (আমি শেষ পর্যন্ত ওয়েবসকে পুরোপুরি বন্ধ করতে এবং এটিকে একটি নূন্যতম এআরএম সার্ভারে রূপান্তর করতে পছন্দ করব) সুতরাং ব্যবহারকারীস্পেসের সরঞ্জামগুলি যদি তাদের উপস্থিত থাকে তবে আমি যা জিজ্ঞাসা করছি। এছাড়াও সরাসরি / dev / fb0 এ রেন্ডার করতে এবং এক্স ব্যবহার না করা পছন্দ করে would


লিনাক্স ভার্চুয়াল কনসোলগুলি ফ্রেমবফার ড্রাইভারের উপর কাজ করা উচিত। ভার্চুয়াল কনসোলগুলি একটি শক্তিশালী সরঞ্জাম; লিনাক্স ২.6 থেকে তারা প্রতিটি কনসোলের জন্য বিভিন্ন ফন্ট সেট করার অনুমতি দেয়। তবে সেগুলি / ব্যবহারকারী / স্থান থেকে) / ডেভ / ভিসিএস এন এবং / ডেভ / ভিসিএসএ  এন এর মাধ্যমে নিয়ন্ত্রিত হয়  / দেব / এফবি0 নয়।
ইনকিনিস মিসেসি

উত্তর:


11

কনসোল হিসাবে ফ্রেমবফারটি ব্যবহার করতে আপনার fbdevমডিউলটি প্রয়োজন । আপনার কার্নেলটি পুনরায় সংকলন করতে হতে পারে।

আপনি ডাইরেক্টএফবি প্রকল্পেও আগ্রহী হতে পারেন, এটি একটি লাইব্রেরি যা ফ্রেমবফারটি আরও সহজ করে তোলে। এর জন্য ইতিমধ্যে লিখিত অ্যাপ্লিকেশন এবং জিইউআই পরিবেশ রয়েছে।


1
দেখে মনে হচ্ছে যখন আমি Directfb ইনস্টল করেছি ( ওয়েবস- ইনটার্নালস.আর / উইকি / ডাইরেক্টফবি ), এটি একটি ইউটিলিটি নিয়ে এসেছিল dfbgযা আমাকে সেখানে একটি ছবি রাখতে দেয় (এবং এটি সম্পূর্ণ হওয়ার পরে এটি সরিয়ে দেয় না fbi)। আমি জানি আমি সম্ভবত একটি ব্লক পাঠ্য থেকে .png বা অনুরূপ তৈরির জন্য কোনও ইউটিলিটি পেতে পারি যাতে এটি কেবল কাজ করতে পারে ...
লরেন্স

24

বেশ কিছু লোক আপনার প্রশ্নের অংশগুলি উত্তর দিয়েছিল যে কার্নেল নিয়ে কাজ করে এবং চিত্রগুলি (পাঠ্যের পরিবর্তে) ফ্রেমবফারটিতে রাখে, তবে এখনও অবধি বাকী অংশটি অবরুদ্ধ থাকে। হ্যাঁ, আপনি তথাকথিত ফ্রেমবফার কনসোল তৈরি করতে কার্নেল ভার্চুয়াল টার্মিনাল সাবসিস্টেমটি ব্যবহার করতে পারেন । তবে এমন বেশ কয়েকটি সরঞ্জাম রয়েছে যা আপনাকে ইউজার-স্পেস ভার্চুয়াল টার্মিনালগুলি তৈরি করতে ফ্রেমবফার ডিভাইস ব্যবহার করতে দেয় । এর মধ্যে রয়েছে:

  • zhcon ( ডেবিয়ান ) - একটি ইউজার-স্পেস ভার্চুয়াল টার্মিনাল মধ্যে CJK ইনপুট / আউটপুট হ্যান্ডলিং পর্যন্ত কার্নেল সাব-সিস্টেম বেশী ভালো প্রতি গতি বাড়ানোর। এর নির্দিষ্ট শক্তি আইএসও 2022 নন-ইউটিএফ এনকোডিংগুলি পরিচালনা করার ক্ষেত্রে; এর নির্দিষ্ট দুর্বলতাটি ইউটিএফ এনকোডিং।
  • fbterm ( ডেবিয়ান ) - একটি ইউজার-স্পেস ভার্চুয়াল টার্মিনাল সহ বিভিন্ন কাটাচামচ উত্পন্ন হওয়া গেছে jfbterm । এটিতে সিজেকে ইনপুট পদ্ধতি প্লাগইনগুলির একটি গুচ্ছ রয়েছে।
  • bogl-bterm ( ডেবিয়ান ) - একটি ইউজার-স্পেস ভার্চুয়াল টার্মিনাল যে যেমন কাটাচামচ উত্পন্ন হওয়া গেছে niterm
  • আলি গোলামি রুডির fbpad - একটি মিনিমালিস্ট ইউজারস্পেস ভার্চুয়াল টার্মিনাল যার এক্স লাইব্রেরিতে কোনও নির্ভরতা নেই।
  • console-terminal-emulatorএবং console-fb-realizerসরঞ্জাম জখলাবার - একটি ইউজার-স্পেস ভার্চুয়াল টার্মিনাল Linux এবং FreeBSD 'র / পিসি BSD কার্নেল ভার্চুয়াল টার্মিনাল প্রতিলিপি নির্মাণ লক্ষ্যে। এটিরও এক্স লাইব্রেরিতে কোনও নির্ভরতা নেই।
  • কেএমএসকন - একটি ইউজারস্পেস ভার্চুয়াল টার্মিনাল যা সিস্টেমডেlogind সার্ভারের সাথে জড়িত এবং এর "আসন" এর ধারণাগুলি।

বিশেষত আলী গোলামি রুডি ফ্রেমবফার কাজের জন্য কেবলমাত্র একটি টার্মিনাল এমুলেটর তৈরি করেছেন। তিনি সরাসরি-টু-ফ্রেমব্ফার পিডিএফ ভিউয়ার, ভিএনসি ভিউয়ার, মিডিয়া প্লেয়ার এবং কুরআন রিডারও লিখেছিলেন

পাশাপাশি একটি সম্পূর্ণ তুলনা এই উত্তরের সুযোগের বাইরে; তবে এখানে কিছু পয়েন্ট যা প্রশ্নের সাথে প্রাসঙ্গিক:

  • যেমন উল্লেখ করা হয়েছে, বেশ কয়েকটি ইউজার-স্পেস ভার্চুয়াল টার্মিনাল প্রোগ্রাম ফন্ট হ্যান্ডলিং, কীবোর্ড ম্যাপিং, সিজেকে ইনপুট পদ্ধতি এবং এর জন্য এক্স লাইব্রেরি ব্যবহার করে। তারা এক্স ক্লায়েন্ট নয়, তবে তাদের এক্স লাইব্রেরি থেকে নির্ভরতা রয়েছে। fbpadএবং নকশার মাধ্যমে নশ সরঞ্জামগুলি কোনও এক্স লাইব্রেরি ব্যবহার করে না।
  • ফন্ট হ্যান্ডলিংয়ের জন্য এক্স লাইব্রেরি ব্যবহার করে এমন প্রোগ্রাম অবশ্যই এক্স ফন্ট ব্যবহার করে। অন্যরা অন্যান্য ব্যবস্থা করে।
    • বগল-বিটার্ম এবং এফবিপ্যাড উভয়েরই নিজস্ব আইডিসিঙ্ক্র্যাটিক ফন্ট ফর্ম্যাট রয়েছে। একটি সরঞ্জামের মাধ্যমে বিডিএফ ফন্টকে বিওজিএল ফন্টে রূপান্তর করে bdftobogl; এবং একটি টিটিএফকে "টিনিফন্ট" ফন্টে রূপান্তর করে যা fbpad দ্বারা ft2tf ( আর্চ ) সরঞ্জাম দিয়ে ব্যবহৃত হয় ।
    • নোশ console-fb-realizerসরঞ্জাম একই নতুন "ভিটি" ফন্টগুলি যেমন নতুন ফ্রিবিএসডি 10.1 কার্নেল ভার্চুয়াল টার্মিনাল সাবসিস্টেমটি ব্যবহার করে এবং vtfontcvtবিডিএফ ফন্ট রূপান্তর করার জন্য ফ্রিবিএসডি ফন্ট ম্যানিপুলেশন সরঞ্জামটি ভাগ করে দেয় ।
  • এক্স লাইব্রেরি ব্যবহার করে এমন প্রোগ্রামগুলি এক্স কীবোর্ড ম্যাপিং ব্যবহার করে। অন্যদের জন্য:
    • নোশ সরঞ্জামগুলির নিজস্ব আইডিয়োসিঙ্ক্র্যাটিক কীবোর্ড মানচিত্র ফর্ম্যাট রয়েছে, যা আইএসও "সাধারণ" গোষ্ঠী 2 সহ একটি সম্পূর্ণ আইএসও 9995-3 সক্ষম কীবোর্ড সরবরাহ করার উদ্দেশ্যে রয়েছে BS একটি সরঞ্জামের সাথে বিএসডি কেবিডিম্যাপ ফাইলগুলিকে এই ফর্ম্যাটে রূপান্তর করে console-convert-kbdmap। আবার এই কেবিডিএম্যাপ ফাইলগুলি হ'ল ফ্রিবিএসডি / পিসি-বিএসডি ভিটি সাবসিস্টেম ব্যবহার করা
    • এফবিপ্যাড তার নিজস্ব কীবোর্ড ম্যাপিং একেবারেই করে না, এবং কার্নেল ভার্চুয়াল টার্মিনাল সাবসিস্টেম এবং এর জন্য তার কীবোর্ড ম্যাপিং প্রক্রিয়াটির উপর নির্ভর করে।
  • অনুরোধ এবং প্রয়োজনীয় সুযোগ-সুবিধার কিছুটা ভিন্নতা রয়েছে:
    • zhcon, fbterm, bogl-bterm, fbpad, এবং kmscon এই ভিত্তিতে কাজ করে যে টার্মিনাল এমুলেটর সরাসরি শিশু প্রক্রিয়া হিসাবে টার্মিনালে শেল / লগইন প্রোগ্রাম তৈরি করে। স্পোন করার জন্য তাদের সুপারভাইজার সুবিধাগুলি প্রয়োজন login
    • নোশ সরঞ্জামগুলি একটি বিদ্যমান /etc/ttys(বিএসডি), /etc/inittab(লিনাক্স সিস্টেম 5 init), বা অন্য সিস্টেমের সাথে সংহত করার জন্য ডিজাইন করা হয়েছিল , যেখানে তারা গেট্টি / লগইন / শেল তৈরির কাজ ছেড়ে দেয়। console-fb-realizerকেবল ফ্রেমব্ফার এবং ইনপুট ইভেন্ট ডিভাইসগুলি খোলার জন্য পর্যাপ্ত সুযোগ-সুবিধা দরকার, যা অতিরিক্ত ব্যবহারকারীর সুবিধাগুলি না হওয়া এবং FIFOs এবং রক্ষণাবেক্ষণ করা সাধারণ ফাইলগুলি অ্যাক্সেস করার জন্য console-terminal-emulator, যার ফলে কোনও বিশেষ সুযোগের প্রয়োজন হয় না need

এই সব অবশ্যই টার্মিনাল এমুলেটর হয়। আপনি যদি টার্মিনাল এমুলেশনটি বের করে ফ্রেমবফারটিতে আরও সরাসরি পাঠ্য রাখতে চান তবে আপনার কিছু পছন্দ আছে:

  • বগল-বিটার্ম অবশ্যই বেনফাফের বেনের নিজস্ব গ্রাফিক্স লাইব্রেরির উপর ভিত্তি করে একটি ফ্রেমবুফার I / O লাইব্রেরি সিস্টেম সেটআপ / রেসকিউ পরিবেশে ব্যবহারের জন্য ডিজাইন করা হয়েছে (এবং "পিডিএগুলিতে জিইউআই জন্য" )। আপনি অবশ্যই এমন প্রোগ্রাম লিখতে পারেন যা সরাসরি ব্যবহার করে।
  • একটি ফ্রেমব্ফার লাইব্রেরির নিজস্ব রেন্ডারিংয়ের জন্য একটি প্রোগ্রাম লেখার মধ্যবর্তী অর্ধেক বাড়ির জন্য এবং একটি প্রোগ্রাম যা এটিকে টার্মিনাল বলে মনে করে তার থেকে পালানোর ক্রমগুলি আলাদা করে দেয়: নোশ ব্যবহারকারী-স্পেস ভার্চুয়াল টার্মিনালটি মডুলার এবং পৃথক পৃথকভাবে বিভক্ত হয় into উপাদান টুকরা। একটি সহজভাবে ব্যবহার করতে পারবেন না console-terminal-emulator

    console-fb-realizerএকটি ক্যারেক্টার সেল অ্যারের সাথে একটি ডিসপ্লে ফাইল ব্যবহার করে, যেমন /dev/vcsa*একটি সাধারণ ফাইল (কোনও অক্ষর বিশেষ ডিভাইস ফাইল নয়) এবং ইউনিকোড কোড পয়েন্ট, ইসিএমএ-48 বৈশিষ্ট্য এবং 24-বিট আরজিবি রঙ সহ। সুতরাং কেউ এটি চালিয়ে যেতে পারে এবং কেবল অক্ষর + বৈশিষ্ট্য + রঙ সরাসরি অক্ষর ঘর অ্যারে ফাইলের মধ্যে লিখতে console-fb-realizerপারে, ফ্রেমবফারটিতে ফন্টটি রেন্ডারিং করে।

    একদিকে যেমন: লক্ষ্য করুন যে এটি BRLTTY এর সাথে সংহতকরণের বিপরীত , যা ব্যবহার করে console-terminal-emulatorতবে চালায় না console-fb-realizer


1
এটি একটি আশ্চর্যজনক উত্তর। সংকলন-সময় বিকল্পগুলিরfbcon উপর নির্ভর করে আলোকিত গ্রন্থাগারগুলি একটি লিনাক্সে ফ্রেমবফার সমর্থন দাবি করে । এটি তাদের নির্ভরশীল টার্মিনাল এমুলেটর টার্মিনোলজির ক্ষেত্রেও সত্য : লিনাক্স ফ্রেমবফার (fbcon) এ সরাসরি কাজ করে । আমি ছাড়াও (এবং ডেভিড হারম্যানের অন্যান্য কাজ) সুপারিশটি আমি নিজের চেয়ে দ্বিতীয় স্থানে রেখেছি । terminologykmscon
মাইক্রজারভ 18

1
রূডি ফ্রেমবাফারের মাস্টার! একদিন আমি এক্স 11ও খাইব।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四

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 বাইনারি ছিল যা ইনপুট হিসাবে একটি পিপিএম ফাইল পায়।

আমি ভুল হলে সংশোধন করুন, তবে মনে হয় এটি fb0এই ফর্ম্যাটটি গ্রহণ করে। একটি চেহারা গ্রহণ উইকিপিডিয়ায় পোর্টেবল Anymap , সেখানে বিভিন্ন "subformats" হয় ... fbsplash রঙ দিয়ে একটি অভিনব একটি ব্যবহার, ইত্যাদি ... কিন্তু আমরা শুধু কিছু পাঠযোগ্য মুদ্রণ করতে পারবেন চাই। আসুন সরলতার জন্য ASCII তে কোডড পি 1 ব্যবহার করুন। যদি আমরা একটি উল্লম্ব লাইন মুদ্রণ করতে পারি, আমরা জানতে পারি যে আমাদের মাত্রা সঠিক। চল এটা চেষ্টা করি:

পিপিএম টাইপ পি 1 এর মধ্যে একটি উল্লম্ব লাইনটি দেখতে দেখতে এটি দেখতে পাওয়া উচিত:

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 এর পরে আপনার কোনও স্থান নেই এটি গুরুত্বপূর্ণ ... এই কাজটি কিছুটা ক্লান্তিকর হতে পারে ... আপনি আরও ভাল একটি পাঠ্য সম্পাদক ব্যবহার করুন যা আপনাকে সহায়তা করে। ভিমে, আপনি প্রথম দুটি লাইন অনুলিপি করতে পারেন, নিম্নলিখিত অক্ষরগুলি লেখার চেয়ে কমান্ড মোডে (এসসি) যেতে পারেন:

of(esc)479a 0(esc)yy271p

অবশ্যই, আমি আমার মাত্রা ব্যবহার করছি, আপনার নিজের ব্যবহার করা উচিত। এই ফাইলটিকে ক্যাট করুন /dev/fb0, এটির মতো দেখতে হবে: উল্লম্ব লাইন পর্দা

ঠিক আছে, আমি প্রতারণা করছি ... এটি কেবলমাত্র একটি লাইন নয় ... এটি প্রায় 8 ... তবে যখন এটি কাজ করে না (আমাদের ভুল মাত্রা থাকে বা শেষে আমাদের স্থান থাকে, কেবল একটি লাইন থাকা অনেক বেশি সহজ).

আপনি যদি এতদূর পেলেন, অক্ষর হিসাবে দেখতে আমাদের কেবল সঠিক পিক্সেল মুদ্রণ করতে হবে। মার্সেল সন্ডার এবং গিটিহাবের তাঁর রেপোকে ধন্যবাদ আমাদের প্রতিটি চর আঁকার দরকার নেই।

একটি ছোট খামচি এক সঙ্গে প্রসারিত তার সহজ প্রোগ্রাম প্রিন্ট করতে fপরিবর্তে Xএবং 0, স্পেস পরিবর্তে, প্রতিটি গৃহস্থালির কাজ মধ্যে শূণ্যস্থান সন্নিবেশ শিরোনাম যোগ করুন এবং আমরা চিঠি তার charcode সংশ্লিষ্ট সঙ্গে একটি .ppm ফাইল আছে।

আরও একটি ছোট পদক্ষেপ এবং আপনি ইনপুট হিসাবে একটি চর পাবেন না, তবে একটি লাইন। আপনার প্রোগ্রামটিতে একটি ফাইল, পাইপ বিড়াল করুন /dev/fb0এবং এতে আপনি একটি পাঠ্য আউটপুট পান:

পাঠ্য আউটপুট উদাহরণ

আমি এই সমাধানটি একটি রাস্পবেরি পাইতেও পরীক্ষা করে দেখি এবং এটি কার্যকর। সিস্টেমটি আমাকে বলেছে যে আমি 2 টির বেশি লিঙ্ক পোস্ট করার খ্যাতি নেই। আমি এটি না পাওয়া পর্যন্ত আপনাকে অবশ্যই আমার কথার উপর নির্ভর করতে হবে: ডি


2

কনসোলের পক্ষে, আপনি স্টাফ প্রতিধ্বনি /dev/consoleকরতে পারেন বা আপনি সিসলগ ব্যবহার করতে পারেন এবং অন্যান্য বিভিন্ন সেটিংসের উপর নির্ভর করে এটি কনসোলে প্রদর্শিত হতে পারে।

চিত্রগুলির জন্য, আমি কেবল bbmp ফাইলটি fb0 এ ধরা চেষ্টা করেছি এবং এটি আসলে কাজ করেছে! (বাছাই - একাধিক অনুলিপি, আরও ছোট আকার)

আমি একটি BMP টু ফ্রেম-বাফারের প্রোগ্রাম খুঁজে পাওয়া যায়নি এখানে । এটি fb0 প্রত্যাশা করা ফর্ম্যাটটির একটি নিখুঁত উদাহরণ হওয়া উচিত। এছাড়াও রয়েছে fbi, সরাসরি ফ্রেমের বাফারে লেখার জন্য একটি প্রোগ্রাম।


fbiআমাকে স্ক্রিনে একটি ছবি রাখার অনুমতি দেয় যা দরকারী, তবে এটি ফ্রেমবফারটি প্রস্থান করার পরে এটি সাফ করে দেয়।
LawrenceC

0

এটি একটি পুরানো পোস্ট তবে আমি সাধারণত বুঝতে পারি ফ্রেমবফারটিতে কনসোল চালানোর জন্য আপনার ফ্রেমবফার কনসোল (fbcon) প্রয়োজন। এটি কনফিগারেশনে রয়েছে। (ডিভাইস ড্রাইভার / গ্রাফিক্স / কনসোল প্রদর্শন ..)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.