Kernel Mode Setting (日本語)

From ArchWiki
Revision as of 14:32, 12 December 2012 by Kusakata (Talk | contribs) (モードセッティングを無効にする)

Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Kernel Mode Setting (KMS) は、ユーザースペースではなくカーネル空間でディスプレイの解像度・色深度を設定する方法です。

Linux カーネルの KMS 機能ではフレームバッファでのネイティブ解像度や素早いコンソール (tty) 切り替えができるようになります。KMS を使うと、歪みを消去したり 3D パフォーマンスの上昇、カーネル空間の電力節約などをもたらす新しい技術 (DRI2 など)が有効になります。

Note: プロプライエタリの nvidiacatalyst ドライバにもカーネルモードセッティング機能はありますが、カーネル固有の機能は使っていないため、高解像度コンソールのための fbdev ドライバがありません。

背景

昔、ビデオカードをセットアップするのは X サーバーの仕事でした。このため、バーチャルコンソールで派手なグラフィックを使うことは簡単ではありませんでした。また、X から バーチャルコンソール へ切り替えると (Template:Keypress)、X サーバーはカーネルにビデオカードのコントロールを移さなくてはならず、動作が重くなりチラツキが生じていました。同じ"痛々しい"挙動はコントロールを X サーバーに戻すときも起こりました (Template:Keypress)。

Kernel Mode Setting (KMS) によって、現在カーネルはビデオカードのモードを設定することができます。これによって、起動時からの派手なグラフィックや、バーチャルコンソールと X の早い切り替えなどが可能になりました。

インストール

まず、どの方法を使うにせよ、以下を常時無効にする必要があります:

  • ブートローダ内のあらゆる "vga=" オプション。KMS によるネイティブ解像度と衝突します。
  • フレームバッファを有効にするあらゆる "video=" 行。ドライバと衝突します。
  • 他のフレームバッファドライバ (uvesafb など)。

Late KMS start

Intel, Nouveau, ATI ドライバでは既に全てのチップセットで KMS が自動的に有効になっています。そのため手動でインストールする必要はありません。

プロプライエタリの NVIDIA, AMD Catalyst ドライバはオープンドライバスタックを使いません。KMS を使うにはオープンソースドライバに代えてください。

Early KMS start

起動中にできるだけ早く KMS をロードするには、radeon (ATI/AMD カード向け)、i915 (Intel 内蔵グラフィック向け)、nouveau (Nvidia カード向け) の内どれかのモジュールを、/etc/mkinitcpio.confMODULES 行に追加します:

/etc/mkinitcpio.conf
MODULES="i915"
or
MODULES="radeon"
or
MODULES="nouveau"

カーネルイメージを再生成します(詳しくは mkinitcpio を参照して下さい):

# mkinitcpio -p <name of your kernel preset; e.g. linux>

トラブルシューティング

フォントが小さすぎる

デフォルトフォントを変更する方法を見てコンソールフォントを大きなフォントに代えてください。[community] にある端末用フォントには大きいものを含む様々なサイズがあります。

Issue upon bootloading and dmesg

Polling for connected display devices on older systems can be quite expensive. Poll will happen periodically and can in worst cases take several hundred milliseconds, depending on the hardware. This will cause visible stalls, for example in video playback. These stalls might happen even when your video is on HDP output but you have other non HDP outputs in your hw configuration. If you experience stalls in display output occurring every 10 seconds, disabling polling might help.

If you see an error code of 0x00000010 (2) while booting up, (You will get about 10 lines of text, the last part denoting that error code), then add the following line into /etc/modprobe.d/modprobe.conf:

options drm_kms_helper poll=0

モードを強制する

the nouveau wiki より:

カーネルコマンドラインから強制的にモードを選ぶこともできます。残念ながら、DRM に関するコマンドラインオプションはあまりドキュメント化されていません。使い方の簡単な説明はここにあります:

フォーマットは:

video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]
  • <conn>: 接続端子、例: DVI-I-1、カーネルログを見て下さい。
  • <xres> x <yres>: 解像度
  • M: compute a CVT mode?
  • R: reduced blanking?
  • -<bpp>: 色深度
  • @<refresh>: リフレッシュレート
  • i: インターレース化 (non-CVT mode)
  • m: 余白
  • e: 出力強制 ON
  • d: 出力強制 OFF
  • D: デジタル出力強制 ON (e.g. DVI-I connector)

You can override the modes of several outputs using "video" several times, for instance, to force DVI to 1024x768 at 85 Hz and TV-out off:

video=DVI-I-1:1024x768@85 video=TV-1:d

モードセッティングを無効にする

Catalyst ドライバを使っているときなど、ブランクスクリーンになったりディスプレイに "no signal" エラーがでたりするなどの理由で KMS を無効にしたい時があるかもしれません。KMS を無効にするには、カーネルパラメータに nomodeset を追加します。詳しくは Kernel parameters (日本語) を見て下さい。

モードセッティングをするには xf86-video-modesettingインストールする必要があります。