web-dev-qa-db-ja.com

UEFIで起動されたLinuxマシンのビデオモードがグラフィックス出力プロトコル(GOP)であるかユニバーサルグラフィックスアダプター(UGA)であるかを検出する方法は?

UEFIファームウェアは、GOPまたはUGAグラフィックプロトコルをサポートしているようです。 GOPはより新しく、UGAに取って代わりました。統合グラフィックスアダプターがない(ディスクリートグラフィックスアダプターNVIDIA GTX 965mのみ)私のマシンでは、LinuxインストールCDをライブブートすると、グラフィックスカードを駆動するカーネルモジュールがないことがわかりました(lspciとXログを確認しました) 。

UEFIについて調べてみたところ、この2種類のグラフィックプロトコルを見つけましたが、UEFIのように見えるので、どちらが使用されているかを確認する方法(コマンドラインクエリ)があるのではないかと思いました。マシンのディスプレイを駆動する機能を提供しているファームウェア(おそらく「VGA互換」のディスクリートグラフィックスカードを介して)。

さらに、BIOS設定(UEFIファームウェアを使用している場合はBIOS設定と呼ばれますか?)で、ビデオOp Rom設定を「BIOS互換モード」に変更することもできました。 「UEFIのみ」のままにしておくと、BIOS構成設定とPOSTディスプレイ、およびブートローダーディスプレイ)でフル解像度が得られました。「BIOS互換モード」を選択すると、はるかに小さくなりました。これは基本的に、ファームウェアが代わりにVGAプロトコルを使用できたことを意味しますか?

5
CMCDragonkai

グラウィティの答えを詳しく説明するために、あなたの質問には、関連性の程度が異なるいくつかの問題があります。

  • GA vs. GOP-おっしゃるように、UGAとGOPの2つのEFIビデオシステムがあります。後者は、EFI 2.x(別名UEFI)、IIRC、およびAFAIKで導入されました。すべてのUEFIベースのシステムはGOPを使用します。原則として、すべてのEFI1.xシステムはUGAを使用する必要があります。ただし、Apple(最新の製品でもEFI 1.xを使用)はUGAをEFIに移植しているため、一部の(すべてではない)MacにはGOPを備えたEFI1.xがあります。 。他の奇妙な例外があるかもしれません。Grawityが言うように、この区別はファームウェアレベルでは重要ですが、実際にはOSレベルではなく、少なくともAFAIKでは重要ではありません。
  • Linuxフレームバッファデバイス-UGAまたはGOPのどちらであっても、ファームウェアはOSにビデオハードウェアへのアクセスを許可します。これはLinuxがフレームバッファデバイスを介して公開します-具体的には、efifbです。 EFIベースのシステムでは、これがテキストモード操作の基礎となることがよくあります(Xを起動しない場合、またはCtrl + Alt + F1からCtrl + Alt + F6を押した場合)。 OTOH、特定のビデオチップセット用に一部のカーネルドライバーによって提供されるフレームバッファーデバイスもあるため、efifbデバイスを使用しない可能性があります。 UGAとGOPがOSに提示する方法に違いがあるかどうかはわかりません。確かに、Linuxで使用するコマンドのように、より高いレベルでの違いはありません。
  • X Window Systemドライバー-Xドライバーは、カーネルビデオドライバーに依存することも、基本的にそれらから独立することもできます。ほとんどの場合、特定のビデオチップセット(ATI、Nvidia、Intelなど)用に作成されたXドライバーを使用しますが、これらはファームウェアでは機能しません。したがって、これらのドライバーは、UGAとGOP(またはBIOSとEFI)の影響を受けないようにする必要がありますが、いくつかの注意点があります。とは言うものの、efifbデバイスを含む、アクティブなフレームバッファーデバイスを介して動作するXフレームバッファードライバーがあります。したがって、EFIのUGAまたはGOPモードを介してディスプレイを駆動することができます。ただし、フレームバッファドライバは低速になる傾向があるため、これは間違いなく最適ではない方法です。 UbuntuのUnityを含む最新のウィンドウ環境は、フレームバッファーを介してアクセスできないビデオアクセラレーション機能にますます依存しています。

次のように、dmesgを介してカーネルリングバッファを調べることで、これが機能していることを確認できます。

$ dmesg | grep fb
[    0.625015] efifb: probing for efifb
[    0.625207] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90010880000, using 3072k, total 3072k
[    0.625208] efifb: mode is 1024x768x32, linelength=4096, pages=1
[    0.625209] efifb: scrolling: redraw
[    0.625210] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.627994] fb0: EFI VGA frame buffer device
[    6.086695] fb: conflicting fb hw usage radeondrmfb vs EFI VGA - removing generic driver
[    6.689526] [drm] fb mappable at 0xC1488000
[    6.689531] [drm] fb depth is 24
[    6.689610] fbcon: radeondrmfb (fb0) is primary device
[    6.804904] radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device

この例は、AMD/ATIGPUを搭載したシステムでのフレームバッファー関連のメッセージの数を示しています。 UGAとGOPについては言及されていませんが、efifb(フレームバッファーコンソール)およびfbcon(フレームバッファーデバイス)と同様に、radeondrmfbデバイスが参照されていることに注意してください。 ATI/AMD Radeonデバイス)。 removing generic driverメッセージは、efifbドライバーからradeondrmfbドライバーへのハンドオフを示します。 Xサーバーに関連するメッセージについては/var/log/Xorg.0.logを調べることもできます。私のシステムの場合、これらはあまり面白くありませんが、Xの起動に問題がある場合は、Xorg.0.logの方が興味深いかもしれません。

もう1つのポイント:ハードウェアの問題についてヘルプを求めるときは、ハードウェアが何であるかを指定することが一般的に重要です。ビデオの問題についてヘルプを求めるときは、「ディスクリートグラフィックスアダプター」の具体性が不十分です。さらに言えば、あなたの問題が何であるかは明確ではありません-それとも、理解を深めるために、すべてがどのように組み合わされているかについての情報を探しているだけですか?

9
Rod Smith