web-dev-qa-db-ja.com

Linuxでフレームバッファデバイスを追加するにはどうすればよいですか?

私はホームとしてUbuntu 12.04 LTSを実行していますNAS Xなしのサーバーです。最近、ビデオ再生メディアデバイスとしても機能するようにチューニングしました。これはもっと簡単かもしれません。 Xをインストールするように指示しましたが、mplayerをフレームバッファー再生で試すことにしました。

しかし、好奇心と実際的な結果のためにも、フレームバッファについて考えるのをやめられません。フレームバッファデバイスは/dev/fb0のみのようです。 (ところで、vesafsドライバーを使用しています)フレームバッファーを使用する複数のプログラムを実行すると、混乱が生じます。たとえば、fbtermからmplayerを実行すると、クラッシュします。奇妙なことに、fbi画像ビューアはなんとかして画像を表示することができます。もちろん、プログラムはデバイスを共有できません。結局、ウィンドウシステムはありません。

それで、(vesa)fbデバイスの数はハードウェアディスプレイデバイスに制限されますか?または、複数のttyがあるように、原則としてもっと多くある可能性がありますか?それらを使用するソフトウェアを同時に実行するのにさらにいくつかのヘルプを追加しますか?どうすれば追加できますか?

また、フレームバッファーがttyに接続されるロジックは、私には完全に明確ではありません...たとえば、mplayerはすべてのttyのビデオフレームを表示しますが、fbiはそうではありません。さらに、Ubuntuのデフォルトコンソール(fbcon?)がビデオオーバーレイの背後に表示されるので、奇妙なことに私を驚かせます。これは何についてですか?

16
GolDDranks

まだ誰も答えていないので、グーグル検索とテストの退屈な時間の後に、私は主題をある程度理解しましたので、答えます...

フレームバッファデバイスのインターフェースは非常に一般的なものであるため、原則としてfbデバイスの数が増える可能性があります。ただし、私が使用したVESAドライバーは特定のハードウェアデバイスとフレームバッファーデバイスファイル間の直接接続を提供するので、実際のデバイスよりも多くのデバイスを使用しても意味がありません。

仮想フレームバッファーデバイス用のドライバー、vfbがあります。 (注:Xの仮想フレームバッファーであるxvfbとは異なります)私はこれを自分でテストしていませんが、仮想デバイスを使用して必要な数のfbデバイスを使用できます。また、原則として、仮想デバイスをハードウェアフレームバッファデバイスにパイプ接続して、フレームバッファマルチプレクサを構築することを妨げるものは何もないと思います

フレームバッファとttyの接続について:何もありません。フレームバッファは、何も無視して、単に画面に描画されます。

最初に混乱したのは、fbi画像ビューアの動作です。それは、それが実行されているttyが開いているかどうかを巧妙にチェックし、それに従ってフレームバッファーに描画するかどうかを確認します。 (それが、mplayerとは異なり、SSH経由での実行を拒否する理由です–疑似端末を受け入れません。)しかし、マルチプレクサのような機能は、フレームバッファ自体とは何の関係もありません。

フレームバッファに書き込むプロセスが複数ある場合、それらは互いにブロックしません。同時に複数のfbプログラムを使用する私の以前の問題(クラッシュなど)は、フレームバッファについてさえまったく同じではなかったことがわかりました。 fbtermターミナルを取得し、そこからmplayerを実行します。問題ありません。 fbtermおよびfbconターミナルとfbi画像ビューアーは、何かが更新されたときにのみバッファーに描画されるため、mplayerが画面をほぼ100%支配します。しかし、2つのmplayerを実行しようとすると、競合状態にあるバッファーに描画しようとするため、一方と他方のフレームをフリッカー表示するビューが表示されます。

いくつかの便利なリンク:

http://moi.vonos.net/linux/framebuffer-drivers/

https://www.kernel.org/doc/Documentation/fb/framebuffer.txt

18
GolDDranks