web-dev-qa-db-ja.com

フレームバッファデバイスがありません:有効にする方法は?

私は、Debian Squeezeを実行しているヘッドレスホームサーバーでPCMCIAチューナーカードを機能させようとしています。今、キャプチャする正しいコマンドラインを見つけるのに非常に大きな問題があり、VLCを使用してビデオをネットワークにエンドストリームトランスコードするので、段階的に進み、最初にローカル出力で作業することにしました。

ここで問題が発生します:接続された画面にグラフィックスを表示するためにアクセスするフレームバッファーデバイス(/ dev/fb0)がないようです!そして、確かに、Linuxペンギンのイメージがないことに気づきました起動時(画面が接続されているため、以前は注意を払っていませんでしたが、常にオフで、とにかくコンピュータは常にオンです)。

Linuxグラフィックスにはあまり詳しくないので、理解したいと思います。

  • これは私の特定のハードウェアに関連していますか(以下を参照)?それともDebian Squeeze /カーネルバージョン/ ...に固有ですか?
  • 手動でインストール/ロードする必要があるドライバーはありますか?

今いくつかの一般的な情報:

  • コンピューターには専用のグラフィックカードはありませんが、マザーボードに埋め込まれたグラフィックチップセット(Intel G31 Express)が組み込まれています(ギガバイトG31M-ES2L)。
  • フル機能のXサーバーをインストールするのではなく、この特定のテスト用のフレームバッファーデバイスを用意します

この問題に関するアイデア/コメントはありますか?

23
Federico

以前にLinux FBを使用したことがあるので、私はあなたの質問に答えることができます。

LinuxがFBを実行する方法。

  1. まず、ハードウェアに対応するカーネルでFrameBufferをサポートする必要があります。最近のほとんどのディストリビューションは、カーネルモジュールを介してサポートしています。ディストリビューションにブートロゴがあらかじめ設定されているかどうかは関係ありません。私はこれを使用せず、FBをサポートしています。

  2. 専用のグラフィックカードを使用している場合でも、ハードウェアフレームバッファーがサポートされている限り、統合は機能します。

  3. Xは必要ありません。これは、FrameBufferを持つ最も魅力的な側面です。一部の人々はよりよく知らないので、彼らは誤解を回避するために何らかの形のXを提唱しました。

  4. 多くの人が誤って想定しているFBを直接操作する必要はありません。 FrameBufferで開発するための非常に優れたライブラリはDirectFBで、基本的なアクセラレーションサポートさえも備えています。フル機能のFBベースのプロジェクト(Webブラウザー、ゲーム、GUIなど)を開始する場合は、常にチェックすることを常にお勧めします。

ハードウェアに固有

  1. Vesa Generic FrameBufferを使用します。そのモジュールはvesafbと呼ばれます。使用可能な場合は、modprobe vesafbコマンドを使用してロードできます。多くのディストリビューションでは、事前構成が無効になっています。/etc/modprobe.d/でチェックインできます。 blacklist vesafbは、#または他のブラックリストファイルで、blacklist-framebuffer.confを使用してコメント化する必要がある場合があります。

  2. 最適なオプションは、ハードウェア固有のKMSドライバーです。 Intelの主なものはIntel GMAですが、そのモジュールの名前はわかりません。ディストリビューションのドキュメントからそれについて読む必要があります。これは、最もパフォーマンスの良いFBオプションです。可能であれば、個人的には常にKMSを最初に使用します。

  3. レガシーハードウェア固有のFBドライバーを使用します。バグがある場合があるためお勧めしません。最後の手段が必要でない限り、私はこのオプションを避けます。

これですべての質問がカバーされると思います。その/dev/fb0デバイスを利用できるようにするための情報を提供する必要があります。より具体的なものには配布の詳細が必要であり、ある程度の経験がある場合は、RTFMで十分です(これを読んだ後)。

私が助けてくれたら幸いです。あなたのラッキーなあなたが私のトピックの1つについて尋ねてくれました。誰もが(故意に)Linux FrameBufferを使用しているわけではないため、これはUNIX-SEで無視されているテーマです。

注:UvesaFBまたはVesaFB?

パフォーマンスが向上したため、人々がuvesafbよりもvesafbを使用することを読んだ可能性があります。これは一般的には真実でしたが、最新のハードウェアを備えた最新のディストリビューションではありませんでした。グラフィックハードウェアがプロテクトモードVESA(VESA> = 2.0)をサポートしていて、やや最近のカーネルがある場合、vesafbがより良い選択です。

37
J. M. Becker

ようやく私の問題の解決策を見つけました!!

まず第一に、貢献してくれたすべての人、特にTechZillaと彼が提供した詳細な説明に感謝します。

つまり、基本的に実行する必要があるのは、モード設定を有効にすることですmodeset=1i915カーネルモジュールが読み込まれるときです。これは通常の方法で行うことができます:

  • 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は自動的に有効になりません。これにより、FrameBufferデバイスが作成されなかった理由が説明されます...

11
Federico