Linuxブート中のビデオモード切り替えの削減


12

Linuxしかインストールされていないデスクトップコンピューターを起動すると、ビデオモードやコンソールフォントが4回切り替えられます。

  • GRUBが起動すると、80x25のテキストからグラフィカルモードに切り替わり、メニューの背景にきれいな背景を描画できます。
  • メニューから何かを選択すると、GRUBは80x25のテキストに戻ります。
  • ビデオカード用のKMSドライバーが読み込まれると、はるかに高解像度のテキストモードに切り替わります(これがハードウェアテキストモードかどうかはわかりません)。
  • 最後にXが起動し、グラフィックスを実行します。この最後のスイッチはビデオモードの解像度を変更せず、グラフィックのみを変更すると思います。

これらのモードスイッチをできるだけ多く取り除きたいのですが。理想的には、GRUBがBIOSから引き継ぐと、KMSドライバーが選択するのと同じ高解像度テキストモードに直接移動し、Xが起動してグラフィックスが表示されるまで、ディスプレイはそのモードのままです。カーネルのコマンドラインやGRUBコンソールモジュールのロードパラメーターをいじくり回すことでこれが可能であるように見えますが、詳細はわかりません。

GRUB 1.98 + 20100706、カーネル2.6.32.15、Nouveauビデオドライバーを使用。DistroはDebianが不安定です。何かを再コンパイルしたり、最先端のカーネルとドライバーの組み合わせを組み合わせたりすることを含む答えはありません。私は、これほど多くの問題に行くのに十分気にしていません。

編集:東部GRUB_GFXMODEは、モニターのフルピクセル解像度に設定しGRUB_GFXPAYLOAD_LINUX=keep、メニューが消えた後のモード切り替えを回避することをお勧めします。これは私が望んでいることの一部ですが、全体的に悪化します。メニューの後にモードスイッチはありませんが、画面の再描画は非常に遅くなります(おそらく、GRUBのgfxmodeをあきらめる必要があります。1920x1200では遅すぎるので注意してください)。もっと真剣に、今ではnouveaufbがロードされるときにダブルモードスイッチがあり、中には楽しい見た目のエラーメッセージがありますdmesg

[    5.923798] [drm] nouveau 0000:02:00.0: allocated 1920x1200 fb: 0x40250000, bo ffff8801ba5f4600
[    5.923802] fb: conflicting fb hw usage nouveaufb vs EFI VGA - removing generic driver
[    5.923821] [drm] nouveau 0000:02:00.0: PFIFO_INTR 0x00000010 - Ch 1
("PFIFO_INTR" message repeats 400+ times)
[    5.925609] Console: switching to colour dummy device 80x25
[    5.925802] Console: switching to colour frame buffer device 240x75

「グラフィックス」とは何なのか気になります。
追って通知があるまで一時停止。

1
任意のピクセル解像度で、ビデオモードはグラフィカル(各ピクセルはアドレス指定可能)またはテキスト(文字セルターミナルを古くからシミュレート)にすることができます。私が「グラフィック性」とは、4番目にリストしたビデオモードスイッチがピクセル解像度を変更せずにテキストからグラフィックに切り替えることでした。
zwol 2010

回答:


2

プリマスは、この点で役立つように設計されています。

アイデアは、ブートプロセスの早い段階でコンピューターのネイティブモードが設定され、plymouthがそのモードを使用し、そのモードがXの起動時以降のブートプロセス全体を通じて維持されるというものです。理想的には、起動時にすべてのちらつきを取り除くことが目標です。

OSが1つしかインストールされていないため、GRUB解像度の変更(背景のグラフィックなし)を無効にし、メニュー自体を80x25のままにしても、プリマスが引き継ぐまで変更はありません。


1

解像度と色深度を調べます。

xrandr -q
xdpyinfo | grep 'depth of root window' | awk '{ print $5 }'

グラブメニューの解像度がKMSの解像度と一致するように設定GRUB_GFXMODE=<width>x<height>x<depth>/etc/default/grubます。

GRUB_GFXPAYLOAD_LINUX=keepデフォルトに追加して、grubメニューの後でKMSをセットアップする前の中間ステップがないようにすることもできます。X11はKMSが使用するものを保持する必要があります。つまり、心配するX11スイッチはありません。

編集を適用する

sudo update-grub

ありがとう!これは私が望んでいたことの一部を果たしましたが、現状よりも悪化させる負の副作用がありました。質問に詳細を追加しました。
zwol 2010

0

GRUBの直後からKMSをアクティブにすることができます。これには、通常、カーネルコマンドラインにパラメーターを含めて有効にします。インテルのi910.modeset=1場合はですが、これについてはディストリビューションのドキュメントを確認する必要があります。


KMSはnouveauドライバーが読み込まれたときからアクティブになっていると思いますが、これはudevの最初のデバイススキャン中にのみ発生します。私はvideo =とvga =のコマンドラインオプションを少しいじりましたが、うまくいきませんでした。
zwol 2010

この方法でそれより前にロードするように指示することができます
Daenyth

nouveauコンパイルされたモジュールでカーネルを再構築する手間がかかります(これは面倒です)、私ができる最善のことは、ヌーボーを挿入すること/etc/initramfs-tools/modulesです... 「読み込み中、しばらくお待ちください...」の直後に/ devが読み込まます。目的は、モードの切り替えをなくすことです。
zwol 2010

その場合、KMSに対応したブートローダーを使用する必要があります。私はgrub2がこれを行うかもしれないと思いますが、それができない場合、あなたは完全に運が悪いです。
Daenyth、2013

grub2はモードを設定し、設定したままにします(これはGRUB_GFXPAYLOAD_LINUX = keepが実行することです)が、それはnouveauやfbサブシステム(あるいはその両方)には十分とは言えないため、「Conflicting fb hw usage」エラーメッセージが表示されます。ちなみに、私のラップトップのi915とまったく同じ動作です。
zwol 2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.