インテルグラフィックス
Intel はオープンソースドライバの提供とサポートを行なっているので、インテルグラフィックスは基本的にプラグアンドプレイです。
Intel GPU のモデルや関連するチップセットと CPU の包括的なリストは、Wikipedia:Intel Graphics Technology と Gentoo:Intel#Feature support を見てください。
- PowerVR ベースのグラフィックカード (GMA 3600 シリーズ) はオープンソースドライバではサポートされていません。
- Intel 第 N 世代 (Gen N) ハードウェアという記述は、CPU の世代を指すものではなく、GPU の世代を指しています。これは CPU の世代とは異なります。
- あなたのカードを特定する方法については 画像処理装置#インストール を参照してください。
インストール
- 以下のパッケージのうち1つをインストールしてください。これらは、3D アクセラレーションのための DRI ドライバを提供します。
- mesa は、第3世代ハードウェアおよびそれ以降用のモダンな Gallium3D ドライバを含む最新の Mesa パッケージです。これを使うことが推奨されます。
- mesa-amber は、第2世代から第11世代までのハードウェア用のクラシックドライバ (Gallium3d でない) です。このドライバは、第7世代及びそれ以前のハードウェアにおいて高いパフォーマンスや安定性をもたらすかもしれませんが、メンテナンスされていません。
- 32ビットアプリケーションのサポートは、multilib リポジトリから lib32-mesa か lib32-mesa-amber パッケージもインストールしてください。
- Xorg で 2D アクセラレーションを提供する DDX ドライバに関しては、以下のうち1つを使ってください:
- xorg-server パッケージに含まれる modesetting ドライバは、第3世代及びそれ以降のハードウェアにおいて推奨されます。これは、glamor モジュール経由で DRI ドライバを使用してアクセラレーションを提供します。
- xf86-video-intel パッケージは、第2世代から第9世代までのハードウェアにおいてレガシーな Intel DDX ドライバを提供します。一般に、このパッケージを使用することは推奨されません。下記のノートを参照してください。
- Vulkan サポート (Broadwell 及びそれ以降; それより古いチップにおけるサポートは不完全であるか存在しません) については、vulkan-intel パッケージをインストールしてください。32 ビット Vulkan サポートについては、lib32-vulkan-intel パッケージをインストールしてください。
ハードウェアビデオアクセラレーションも見てください。
- 一部のディストリビューション (Debian & Ubuntu、Fedora、KDE) では、xf86-video-intel ドライバのインストールが推奨されておらず、代わりに modesetting ドライバにフォールバックさせることが推奨されています。[1]、[2]、Xorg#インストール、modesetting(4) を参照してください。しかし、modesetting ドライバは次のような問題を引き起こす可能性があります: XFCE での画面のチラツキやマウスのジッタリング、仮想デスクトップの切り替えを行ったときに Chromium でアーティファクトが発生する、vsync のジッタリング、mpv での動画のスタッタリング。
- xf86-video-intel ドライバには、第11世代及びそれ以降のハードウェアに対する適切なサポートがありません。それによって、アクセラレーションが提供されなかったり、レンダリングの問題が発生したりし、その結果として Plasma Desktop がほぼ利用不能な状態になります。[3] を参照してください。
- xf86-video-intel がインストールされている場合、グラフィックススタック全体がハードフリーズし、(
Ctrl+Alt+Fnを押して) 他の仮想コンソールに切り替えることすらできなくなり、SysRq でユーザプロセスを kill することしかできなくなるという問題が2件報告されています [4] [5]。
ローディング
Intel カーネルモジュールは、システムの起動時に自動的に正常にロードされるはずです。
正常にロードされない場合は:
- Intel は カーネルモード設定を必要とするので、カーネルパラメータ に
nomodesetを指定して いない ことを確認してください。 - また、
/etc/modprobe.d/や/usr/lib/modprobe.d/で modprobe ブラックリストを使って Intel を無効にしていないか確認してください。
早期 KMS
カーネルモード設定 (KMS) は i915 ドライバと xe ドライバによってサポートされており、mkinitcpio v32 から kms フックがデフォルトで使用されているため (ブートの) 早い段階で有効化されます。他の環境で KMS をブートプロセスのできるだけ早い段階で有効化する方法については カーネルモード設定#KMS の早期開始 を見てください。
GuC/HuC ファームウェアのロードを有効にする
第9世代から (Skylake およびそれ以降)、Intel GPU には以下の機能を提供する Graphics micro (μ) Controller (GuC) が搭載されています:
- 一部のメディアデコード機能を CPU から HEVC/H.265 micro (µ) Controller (HuC) にオフロードする。ハードウェアビデオアクセラレーションに intel-media-driver を使用する場合にのみ、適用可能です。第9世代から導入されました。
- GuC をスケジューリング、コンテキスト送信、電源管理に使用する。第12世代、Alder Lake-P (Mobile) で導入されました。
この機能を使うには、まず、linux-firmware-intel がインストールされていることを確認してください。このパッケージは、GuC と HuC のファームウェアファイルを提供するからです。
次に、GuC ファームウェアをロードする必要があります。HuC のサポートに関しては、一部のビデオ機能 (SKL 低電力エンコードモードでの CBR レート制御) が、HuC ファームウェアのロードも必要とします[6]。
新しい試験的な xe ドライバは、GuC と HuC の機能がデフォルトで有効化されています。
i915 ドライバに関しては、GuC の機能は enable_guc カーネルモジュールパラメータによって制御されています。これの使用方法は以下のとおりです:
| enable_guc の値 | GuC 送信 | HuC ファームウェアのロード | デフォルトとなっているプラットフォーム | サポートされているプラットフォーム |
|---|---|---|---|---|
| 0 | No | No | Tiger Lake、Rocket Lake、Gen12 以前 [7] | すべて |
| 1 | Yes | No | – | Alder Lake-P (Mobile) およびそれ以降 |
| 2 | No | Yes | Alder Lake-S (Desktop) [8] [9] | Gen9 およびそれ以降 |
| 3 | Yes | Yes | Alder Lake-P (Mobile) 及びそれ以降 | Gen 9.5 及びそれ以降 (一部個体ではこちらがより良い) |
GuC 送信や HuC ファームウェアのロードがあなたの GPU ではデフォルトで有効になっていない場合、手動で有効化できます。
enable_guc= カーネルモジュールパラメータ を設定してください。例えば:
/etc/modprobe.d/i915.conf
options i915 enable_guc=3
Initramfs を再生成 してください。次回の起動時に dmesg を使うことで GuC と HuC が両方有効化されていることを確認できます:
# dmesg | grep -i -e 'huc' -e 'guc'
[30130.586970] i915 0000:00:02.0: [drm] GuC firmware i915/icl_guc_33.0.0.bin version 33.0 submission:disabled [30130.586973] i915 0000:00:02.0: [drm] HuC firmware i915/icl_huc_9.0.0.bin version 9.0 authenticated:yes
あなたのグラフィックアダプタで GuC と HuC がサポートされていない場合、以下が出力されます
# dmesg | grep -i -e 'huc' -e 'guc'
[ 0.571339] i915 0000:00:02.0: [drm] Incompatible option enable_guc=2 - GuC is not supported! [ 0.571340] i915 0000:00:02.0: [drm] Incompatible option enable_guc=2 - HuC is not supported!
あるいは、以下で確認できます:
# less /sys/kernel/debug/dri/*/gt0/uc/guc_info # less /sys/kernel/debug/dri/*/gt0/uc/huc_info
enable_gvt=1 を設定して GVT-g graphics virtualization を使用することは、Linux 4.20.11 現在ではサポートされていません。システムのジャーナルに出力される通り、i915 モジュールの初期化に失敗します。
# journalctl
... kernel: [drm:intel_gvt_init [i915]] *ERROR* i915 GVT-g loading failed due to Graphics virtualization is not yet supported with GuC submission ... kernel: i915 0000:00:02.0: [drm:i915_driver_load [i915]] Device initialization failed (-5) ... kernel: i915: probe of 0000:00:02.0 failed with error -5 ... kernel: snd_hda_intel 0000:00:1f.3: failed to add i915 component master (-19)
[10] で説明されているように、関連する警告は深刻なものではないことに注意してください:
# journalctl -b
... kernel: i915 0000:00:02.0: Direct firmware load for i915/gvt/vid_0x8086_did_0x5916_rid_0x02.golden_hw_state failed with error -2
Xorg の設定
たいてい、Xorg を実行するために設定は特に必要ありません。
しかし、ドライバのオプションを活用したい場合や、Xorg が起動しない場合などは、Xorg の設定ファイルを作成することができます。
modesetting ドライバを使う
xf86-video-intel をインストールしたが、DDX ドライバを優先させずに modesetting ドライバを明示的にロードさせたい場合 (DDX ドライバと modesetting ドライバを比較したい場合など) は、以下のような設定ファイルを使用できます:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "modesetting" EndSection
Intel ドライバを使う
以下のような Xorg 設定ファイルを作成してください:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" EndSection
その他のオプションは Driver の下の新しい行にユーザが追加します。
オプションの完全なリストは intel(4) の man ページを参照してください。
AccelMethod
設定ファイルを作成する際に、Option "AccelMethod" を指定する必要がある場合があります。古典的なオプションは、UXA、SNA (デフォルト)、BLT です。
デフォルトの SNA で問題が発生した場合。(例: ピクセル化したグラフィック、壊れたテキストなど)、代わりに UXA を使ってみてください、これは Xorg 設定ファイル に次の行を追加することで可能です:
Option "AccelMethod" "uxa"
intel(4) § CONFIGURATION DETAILS の "AccelMethod" オプションをご覧ください。
最近の GPU で Intel DDX ドライバを使用する
第8世代 (Broadwell) からの Intel GPU では、Iris Mesa ドライバが必要です:
Option "DRI" "iris"
TearFree、TripleBuffer、SwapbuffersWait を無効化する
コンポジタを使用している場合 (GNOME、KDE Plasma、Xfce などの最近のデスクトップ環境ではデフォルトです)、通常、TearFree、TripleBuffer、SwapbuffersWait を無効化することでパフォーマンスを向上させ、電力消費量を削減することができます。
Option "TearFree" "false" Option "TripleBuffer" "false" Option "SwapbuffersWait" "false"
モジュールベースのオプション
i915 カーネルモジュールにより、モジュールオプション を介して設定できます。一部のモジュールオプションは、省電力に影響を与えます。
次のコマンドを使用して、すべてのオプションのリストと簡単な説明およびデフォルト値を生成できます:
$ modinfo -p i915
現在有効になっているオプションを確認するには、
# systool -m i915 -av
多くのオプションのデフォルトは-1であるため、チップごとの省電力のデフォルトになります。ただし、モジュールオプション を使用して、より積極的な省電力を構成することも可能です。
フレームバッファー圧縮 (enable_fbc)
フレームバッファ圧縮 (FBC) は、スクリーンのリフレッシュ中の電力消費量とメモリの帯域幅の使用量を削減できる機能です。
この機能は、ハードウェアによってサポートされている場合、自動的に有効化されます。以下のコマンドを実行することで、この機能が有効化されているかどうか確認できます:
$ modinfo i915 | grep enable_fbc
parm: enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)
parm が -1 に設定されている場合、何もする必要はありません。-1 でない場合、i915.enable_fbc=1 をカーネルパラメータに追加するか、以下の内容で /etc/modprobe.d/i915.conf を作成することで、FBC を強制的に有効化できます:
/etc/modprobe.d/i915.conf
options i915 enable_fbc=1
フレームバッファー圧縮は、Sandy Bridge(第6世代)より前の Intel GPU 世代では信頼できないか、使用できない場合があります。これにより、次のようなメッセージがシステムジャーナルに記録されます:
[drm] not enough stolen space for compressed buffer (need 4325376 bytes), disabling [drm] hint: you may be able to increase stolen memory size in the BIOS to avoid this
解決策は、フレームバッファー圧縮を無効にすることです。これにより、消費電力僅かに増加します (+約 0.06 W)。無効にするには、カーネルパラメータ i915.enable_fbc=0 を追加します。[11]
Fastboot
Intel Fastboot の目標は、BIOS または ブートローダー によってセットアップされたフレームバッファーを保持して、 Xorg が開始されるまでちらつきを回避することです。[17][18]
fastboot がデフォルトでないプラットフォーム上で fastboot を有効にするには、i915.fastboot=1 を カーネルパラメータ として設定するか、/etc/modprobe.d/i915.conf に以下を設定します:
/etc/modprobe.d/i915.conf
options i915 fastboot=1
Intel GVT-g グラフィック仮想化のサポート
詳細については Intel GVT-g を参照してください。
パフォーマンスサポートを有効化する
第6世代から (Sandy Bridge およびそれ以降) Intel GPU は、内部のパフォーマンスデータをドライバに公開するために使用されるパフォーマンスカウンタを提供しています。ドライバとハードウェアレジスタではこのインフラを Observation Architecture (内部的には "OA") と呼んでいますが [19]、Intel のドキュメントではこの機能をより一般的に Observability Performance Counters を提供するものとしています [20] [21]。
デフォルトでは、CAP_SYS_ADMIN (root と等価です) や CAP_PERFMON ケイパビリティで実行されているプログラムのみが observation architecture を利用できます [22] [23]。ほとんどのアプリケーションはこれらのケイパビリティを持たずに実行されるため、以下の警告が出力されます:
MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0
これらのケイパビリティ (または root) を使わずにパフォーマンスサポートを有効化するには、sysctl で説明されているように、(上記の警告で示されている) カーネルパラメータを設定してください。
perf_event_paranoid ファミリのオプションには制限的なデフォルトが存在します [24]。とはいえ、dev.i915.perf_stream_paranoid は GPU パフォーマンスカウンタへのアクセスにしか影響せず、CPU アーキテクチャ実行コンテキストレジスタなどと比べれば低リスクです。ヒントとテクニック
スケーリングモードを設定する
フルスクリーンを使うアプリケーションで有用かもしれません:
$ xrandr --output LVDS1 --set PANEL_FITTING param
選べる param は:
center: 解像度は定義した通りに固定され、スケーリングは無効になりますfull: 画面いっぱいまで解像度がスケールしますfull_aspect: アスペクト比を維持したまま解像度を可能な限り最大までスケールします
うまく行かない場合は、以下を試してみてください:
$ xrandr --output LVDS1 --set "scaling mode" param
param は "Full"、"Center"、"Full aspect" のいずれかです。
報告される OpenGL のバージョンを上書き
MESA_GL_VERSION_OVERRIDE 環境変数を使うことで、アプリケーションに報告される OpenGL のバージョンを上書きできます。例えば、MESA_GL_VERSION_OVERRIDE=4.5 と設定することで OpenGL 4.5 と報告されるようになります。
モニタリング
ハードウェアビデオアクセラレーション#確認 を見てください。
明るさとガンマ値の設定
バックライト を見てください。
試験的な新しい Xe ドライバをテストする
(試験的な) 新しい Xe ドライバを試すには、以下が必要です:
- linux 6.8 以上
- Tiger Lake 及びそれ以降の統合グラフィックス、またはディスクリートグラフィックカード。
- mesa。
以下のコマンドで PCI ID を確認してください:
$ lspci -nnd ::03xx
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01)
そして、適切な PCI ID を使って以下をカーネルパラメータに追加してください:
... i915.force_probe=!9a49 xe.force_probe=9a49
必要なときに元に戻すためのブート手段を確保しておいてください。
トラブルシューティング
ティアリング
Intel ドライバを使う
SNA アクセラレーションメソッドを取っている場合、一部のマシン上でティアリングが発生します。これを修正するには、以下の行を設定ファイルに追加して xf86-video-intel ドライバの TearFree オプションを有効化してください:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "TearFree" "true" EndSection
詳細は元のバグレポートを見てください。
- このオプションは、
SwapbuffersWaitがfalseのときに動作しない場合があります。 - このオプションはメモリアロケーションを増加させ、パフォーマンスが低下する場合があります。[26]
- このオプションは、vsync のタイミングに厳しいアプリケーション (例えば、Super Meat Boy) において問題が発生する場合があります。
- このオプションはUXA アクセラレーションメソッドでは動作しません。SNA でしか使えません。
- Intel UHD 620 または 430 では、
TearFreeを動作させるためにOption "TripleBuffer" "true"を追加する必要があります。
modesetting ドライバを使う
TearFree サポートが modesetting ドライバに追加されました [27][28]。XWayland でないサーバーに対する最後のリリースは2021年のバージョン 21.1 ですが、このパッチはまだ安定リリースに至っていません。なので、安定化されるまで xorg-server-gitAUR を使う必要があります。
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "modesetting" Option "TearFree" "true" EndSection
垂直同期 (VSYNC) を無効化する
以下のような場合に便利です:
- Chromium/Chrome が、GPU のせいでラグくパフォーマンスが悪く、--disable-gpu スイッチを使うとスムーズに動作する場合。
- glxgears テストが期待するほどのパフォーマンスを発揮してくれない場合。
intel ドライバは垂直同期に Triple Buffering を使用します。これは、完全なパフォーマンスとティアリングの回避を可能にします。垂直同期をオフにするには (例えば、ベンチマークのために)、以下の .drirc をホームディレクトリ内に追加してください:
~/.drirc
<device screen="0" driver="dri2"> <application name="Default"> <option name="vblank_mode" value="0"/> </application> </device>
DRI3 の問題
xf86-video-intel では DIR バージョンのデフォルトは DRI3 です。一部の環境では DRI3 によって問題が発生することがあります [29]。DRI2 を使うには設定ファイルに以下の行を追加してください:
Option "DRI" "2"
modesetting ドライバーでは上記の方法で DRI3 を無効化することはできません。代わりに LIBGL_DRI3_DISABLE=1 環境変数を設定してください。
GTK アプリケーションでグリフが表示されない
GTK アプリケーションでフォントの文字が表示されなくなってしまう場合、以下の方法で直る可能性があります。/etc/environment を編集して以下の行を追加してください:
/etc/environment
COGL_ATLAS_DEFAULT_BLIT_MODE=framebuffer
グラフィックがおかしい、固まる
一部のアプリケーションでグラフィックがおかしい/固まる問題が発生する場合は (アプリケーションのウィンドウがランダムな色で埋まる、ひどくぼやける、ラグが無いにも関わらず他のタスクを実行中にアプリケーションのグラフィックの更新が行われなくなるなど)、問題の起こるアプリケーションを Vulkan ではなく OpenGL で実行してみてください。このような問題は Intel Arc GPU の一部構成で起こります。
Intel ドライバで X がフリーズ/クラッシュする
X のクラッシュを伴う問題、GPU のハングアップ、X のフリーズに関する問題は、NoAccel オプションを使って GPU の使用を無効化することで修復できる場合があります。以下の行を設定ファイルに追加してください:
Option "NoAccel" "True"
あるいは、DRI オプションを使って 3D アクセラレーションだけを無効化してみてください:
Option "DRI" "False"
認識されない解像度を追加する
この問題は、Xrandr のページ で扱っています。
バックライトを調整できない
サスペンドから復帰したあとにホットキーを使用してスクリーンの輝度を変更できない場合、バックライトの記事を見てあなたの設定ファイルをチェックしてみてください。
問題が解消されない場合は、以下のカーネルパラメータのうち1つを試してください:
acpi_osi=Linux acpi_osi="!Windows 2012" acpi_osi=
また、fastboot モード (i915.fastboot カーネルパラメータ) を使用していないことを確認してください。これは、バックライト制御を破壊することが知られています。
Chromium や Firefox の表示がおかしい/応答しない
Chromium や Firefox で表示の乱れ、応答なし、ラグ、低パフォーマンスが発生する場合、以下のような解決策があります。
- AccelMethod を "uxa" に設定する
- VSYNC を無効化する
- TearFree オプションを有効化する
- "DRI" とアクセラレーションのメソッドを無効にする (第10世代でテスト済み):
Option "NoAccel" "True" Option "DRI" "False"
Broadwell/Core-M チップでカーネル 4.0 以上を使っている場合にクラッシュする
X/Wayland がロードされた数秒後、マシンがフリーズして、journalctl に以下のようなインテルグラフィックスに関連するカーネルのクラッシュログが残ることがあります:
Jun 16 17:54:03 hostname kernel: BUG: unable to handle kernel NULL pointer dereference at (null) Jun 16 17:54:03 hostname kernel: IP: [< (null)>] (null) ... Jun 16 17:54:03 hostname kernel: CPU: 0 PID: 733 Comm: gnome-shell Tainted: G U O 4.0.5-1-ARCH #1 ... Jun 16 17:54:03 hostname kernel: Call Trace: Jun 16 17:54:03 hostname kernel: [<ffffffffa055cc27>] ? i915_gem_object_sync+0xe7/0x190 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa0579634>] intel_execlists_submission+0x294/0x4c0 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa05539fc>] i915_gem_do_execbuffer.isra.12+0xabc/0x1230 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa055d349>] ? i915_gem_object_set_to_cpu_domain+0xa9/0x1f0 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffff811ba2ae>] ? __kmalloc+0x2e/0x2a0 Jun 16 17:54:03 hostname kernel: [<ffffffffa0555471>] i915_gem_execbuffer2+0x141/0x2b0 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa042fcab>] drm_ioctl+0x1db/0x640 [drm] Jun 16 17:54:03 hostname kernel: [<ffffffffa0555330>] ? i915_gem_execbuffer+0x450/0x450 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffff8122339b>] ? eventfd_ctx_read+0x16b/0x200 Jun 16 17:54:03 hostname kernel: [<ffffffff811ebc36>] do_vfs_ioctl+0x2c6/0x4d0 Jun 16 17:54:03 hostname kernel: [<ffffffff811f6452>] ? __fget+0x72/0xb0 Jun 16 17:54:03 hostname kernel: [<ffffffff811ebec1>] SyS_ioctl+0x81/0xa0 Jun 16 17:54:03 hostname kernel: [<ffffffff8157a589>] system_call_fastpath+0x12/0x17 Jun 16 17:54:03 hostname kernel: Code: Bad RIP value. Jun 16 17:54:03 hostname kernel: RIP [< (null)>] (null)
この問題は execlist のサポート (カーネル 4.0 からデフォルトに変更されました) を無効化することで解決します。以下のカーネルパラメータを追加してください:
i915.enable_execlists=0
これは、カーネル 4.0.5 以上で壊れていることが知られています。
Windows をゲストとした場合にラグが発生する
VirtualBox でホスト側から(マウスカーソルを動かすなどして)画面を更新しないと Windows ゲストのビデオ出力が止まってしまうことがあります。enable_fbc=1 オプションを削除すれば問題は解決します。
画面がちらつく
Intel iGPU で使用される省電力機能 Panel Self Refresh (PSR) は、一部の例でちらつきを発生させることが知られています FS#49628 FS#49371 FS#50605。一時的な解決策は、カーネルパラメータ i915.enable_psr=0 または xe.enable_psr=0 を使ってこの機能を無効化することです。
この方法は、[i915] *ERROR* CPU pipe A FIFO underrun のようなエラーメッセージを解決します。
i915 ドライバで OpenGL 2.1
mesa-amber パッケージに含まれる第3世代 GPU 用の 古い mesa ドライバは、デフォルトでは OpenGL 2.0 が利用可能であると報告します。これは、対象のハードウェアが OpenGL 2.1 とは完全に互換性がないことが原因です。[30] OpenGL 2.1 のサポートは、/etc/drirc または ~/.drirc で以下のようなオプションを設定することにより、手動で有効化することができます:
/etc/drirc
<driconf>
...
<device driver="i915">
<application name="Default">
<option name="stub_occlusion_query" value="true" />
<option name="fragment_shader" value="true" />
</application>
</device>
...
</driconf>
KMS の問題: コンソールが小さい領域に制限される
低解像度のビデオポートの1つが起動時に有効になっていて、そのせいでターミナルがスクリーンの小さい領域を使っているのかもしれません。修正するには、ブートローダーでカーネルコマンドラインパラメータの video=SVIDEO-1:d を使って i915 モジュールの設定でそのポートを明示的に無効化してください。詳細は カーネルパラメータ を見てください。
これでうまく行かない場合、SVIDEO-1 ではなく TV1 か VGA1 を無効化してみてください。ビデオポートの名前は xrandr でリストアップできます。
Haswell CPU で HDMI 経由で音声が出ない
Linux カーネルの issue によると、intel_iommu=on を設定している場合には HDMI から音声が出力されないそうです。この問題を修正するには、以下のカーネルパラメータを設定してください:
intel_iommu=on,igfx_off
あるいは、IOMMU を無効化してください:
intel_iommu=off
低消費電力 Intel CPU でクラッシュ/フリーズ
低消費電力 Intel プロセッサやノート PC プロセッサは、低消費電力 Intel チップで使用されている電源管理機能に関する問題によりランダムにハングアップ/クラッシュする傾向にあります。そのようなクラッシュが発生する場合、この問題を報告するログは見られないでしょう。以下のカーネルパラメータを追加することで、この問題を解決できるかもしれません。
intel_idle.max_cstate=1 i915.enable_dc=0 ahci.mobile_lpm_policy=1
ahci.mobile_lpm_policy=1 は、いくつかの Lenovo ノート PC や一部の Acer ノートブックにおける、SATA コントローラーの問題のある電源管理に起因するハングアップを修正します。この回避策はインテルグラフィックスと厳密には関連していませんが、関連する問題を解決します。このカーネルパラメータを追加すると、link power management をファームウェアのデフォルトから最大パフォーマンスに変更し、特定の Lenovo マシンでディスプレイ輝度を変更した際にハングする問題を解決しますが、modern ultrabook でアイドル時の電力消費量が 1~1.5W 増加します。詳細 (特に他の状態に関するもの) については、Linux カーネルメーリングリストや Red Hat ドキュメントを見てください。
i915.enable_dc=0 は、GPU の電源管理を無効化します。これは、特定の Intel システム (特に、Goldmount と Kaby Lake Refresh チップ) におけるランダムなハングを解決します。このパラメータを使用すると、電力消費量が増え、ノート PC/notebook のバッテリー寿命が短くなります。これで問題が解決した場合は、DC 制限をより細かく設定してみてください (modinfo i915 | grep enable_dc で設定可能な値を調べられます)。
intel_idle.max_cstate=1 は、プロセッサのスリープ状態を制限し、プロセッサがディープスリープ状態に移行するのを防ぎます。これは絶対に理想的ではなく、電力消費量の増加とバッテリーの短命化を招きます。しかし、多くの Intel システムでランダムなハングを解決します。Intel Baytrail や Kaby Lake Refresh チップを使用している場合は、このパラメータを使用してください。Intel "Baytrail" チップは、このカーネルパラメータを使用しないと、ファームウェアの欠陥によりランダムにハングしてしまうことが知られていましたが、理論的には 2019-04-26 に修正されました。
max_cstate パラメータに関する詳細はカーネルドキュメントで、cstate に関する一般的な情報は GitHub 上の記事で見られます。
頻繁にハングする問題を解決するために intel_idle.max_cstate=1 i915.enable_dc=0 ahci.mobile_lpm_policy=1 を追加して問題が解決した場合は、その後パラメータを一つずつ取り除いて、どのパラメータが実際に問題の解決になっているかを確かめるべきです。実際の問題が SATA の電源管理に関係していて、問題を実際に解決するパラメータが ahci.mobile_lpm_policy=1 である場合、cstate やディスプレイの電源管理が無効化されている状態でマシンを走らせることは推奨されていません。
詳細は Linux Reviews を見てください。
高い C ステートで S3 スリープから復帰しなくなってしまう
システムが低頻度で復帰後に黒画面になるが、たいていは正常に復帰できてジャーナルに CPU pipe A FIFO underrun というメッセージ記録され、かつ intel_idle.max_cstate=1 で C ステートを制限すると正常に復帰できるようになる場合、スリープフックと cpupower-idle-set(1) を使えば、-D0 と -E オプションでサスペンドサイクル中に C ステートを効果的に制御することができます。[31] そうすることで、CPU を常に低い C ステートで動作させる必要がなくなります。
165Hz モニタのサポートを追加する
一部の 165Hz モニタで、xrandr が 165Hz のオプションを表示しない場合があり、さらに #認識されない解像度を追加する の方法ではこれを解決できません。この場合、i915-driver-stuck-at-40hz-on-165hz-screen を見てください。
/etc/initramfs-tools/hooks/edid を作成する以外にも、mkinitcpio フックを作成する必要があります:
/etc/initcpio/install/edid
#!/bin/bash
build() {
add_file /lib/firmware/edid/edid.bin
}
help() {
cat <<HELPEOF
This hook add support for 165Hz
HELPEOF
}
そして、/etc/mkinitcpio.conf の HOOKS 配列に edid を末尾に追加してください。以下のように:
/etc/mkinitcpio.conf
HOOKS=(... fsck edid)
そして、initramfs を再生成してください。
Raptor Lake と Alder Lake-P 上でスリープ/サスペンドから復帰するとフリーズする
Raptor Lake 及び Alder Lake-P の 12 世代モバイルプロセッサを搭載する、様々な製造者のノート PC は、サスペンドからの復帰後にフリーズや黒画面が発生すると報告されています。これは、多くのノート PC 製造者が、iGPU に接続されているポートが間違って記述されている、不適切な VBT (Video BIOS Table) を使用しているからです (freedesktop のイシュー 5531 6401 で説明されています)。この場合、ドキュメント化されているケースは全て、重複した eDP エントリに関連しています。
ほとんどの製造者が、Windows が正しく動作するノート PC に向けて BIOS アップデートをリリースしないことを考えれば、この問題はカーネル側から対処するしかありません。この問題を防ぐ推奨される方法は、変更した VBT を読み込むことです。アイデアとしては、重複した eDP エントリを VBT から削除し、initramfs に変更した VBT を入れ、その VBT をカーネルパラメータ経由で i915 ドライバに渡します。
以下のコマンドの出力を解析して、重複した eDP エントリを特定する必要があります:
# intel_vbt_decode /sys/kernel/debug/dri/1/i915_vbt
Child device info:
Device handle: 0x0008 (LFP 1 (eDP))
Device type: 0x1806 (unknown)
...
Child device info:
Device handle: 0x0080 (LFP 2 (eDP))
Device type: 0x1806 (unknown)
VBT をコピーし、16進数エディタで編集して、重複しているデバイスハンドルに対応するデバイスタイプを 00 00 に変更します:
$ cat /sys/kernel/debug/dri/0/i915_vbt > vbt
--- vbt +++ modified_vbt @@ -22,10 +22,10 @@ 00000150 00 08 00 20 00 08 00 10 00 08 00 02 00 08 00 01 |... ............| 00000160 00 08 00 00 01 08 00 00 00 04 00 00 00 40 00 00 |.............@..| 00000170 00 20 00 00 00 10 00 00 00 02 00 00 00 01 00 00 |. ..............| -00000180 00 00 01 00 00 02 8b 01 02 04 00 00 27 08 00 06 |............'...| -00000190 18 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 |................| +00000180 00 00 01 00 00 02 8b 01 02 04 00 00 27 08 00 00 |............'...| +00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 |................| 000001a0 03 00 00 00 c0 00 40 00 20 00 00 00 00 00 00 00 |......@. .......| -000001b0 00 00 20 00 80 00 06 18 00 00 00 00 00 00 00 00 |.. .............| +000001b0 00 00 20 00 80 00 00 00 00 00 00 00 00 00 00 00 |.. .............| 000001c0 00 00 00 00 07 00 00 00 00 00 00 c0 00 10 00 20 |............... | 000001d0 00 00 00 00 00 00 00 00 00 20 00 04 00 d2 60 00 |......... ....`.| 000001e0 10 10 00 23 21 10 00 00 00 00 00 07 00 00 02 00 |...#!...........|
変更した VBT を読み込むには、/lib/firmware/i915/modified_vbt に VBT をコピーし、そのファイルを initramfs に入れてください。mkinitcpio の場合は、/etc/mkinitcpio.conf 内の FILES 配列を使うことができます:
FILES=(/lib/firmware/i195/modified_vbt)
Initramfs を再生成し、カーネルパラメータ i915.vbt_firmware=i915/modified_vbt を使って新しいテーブルを i915 に渡してください。
色が抜けた
デフォルトでは、一部のモニターは Intel GPU から適切に認識されず、フルレンジ RGB モードにならないため、色が抜けてしまうことがあります。
Wayland での色の問題を修正する
/etc/udev/rules.d/80-i915.rules
ACTION=="add", SUBSYSTEM=="module", KERNEL=="i915", RUN+="/usr/local/bin/intel-wayland-fix-full-color"
/usr/local/bin/intel-wayland-fix-full-color
#!/bin/bash
readarray -t proptest_result <<<"$(/usr/bin/proptest -M i915 -D /dev/dri/card0 | grep -E 'Broadcast|Connector')"
for ((i = 0; i < ${#proptest_result[*]}; i += 2)); do
connector=$(echo ${proptest_result[i]} | awk '{print $2}')
connector_id=$(echo ${proptest_result[i + 1]} | awk '{print $1}')
/usr/bin/proptest -M i915 $connector connector $connector_id 1
done
GNOME を使用している場合、<rgbrange>full</rgbrange> を ~/.config/monitors.xml 設定ファイルに追加する代替案もあります。例:
~/.config/monitors.xml
<monitors version="2">
<configuration>
<layoutmode>logical</layoutmode>
<logicalmonitor>
<x>0</x>
<y>0</y>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>HDMI-1</connector>
<vendor>MetaProduct's Inc.</vendor>
<product>MetaMonitor</product>
<serial>0x123456</serial>
</monitorspec>
<mode>
<width>1920</width>
<height>1080</height>
<rate>60.000</rate>
</mode>
<rgbrange>full</rgbrange>
</monitor>
</logicalmonitor>
</configuration>
</monitors>
- ディスプレイのレンジが変わったり、その他の方法でディスプレイの設定が変更されたりした場合、新しいレイアウトが
<rgbrange>full</rgbrange>タグ無しでmonitors.xmlに追加されるかもしれません。異なるレイアウトでも RGB レンジを一貫して設定するために、論理モニタの全てのエントリにこのタグを追加することを検討してください。 - GDM ログイン画面がフル RGB レンジを使用していない場合、ユーザーの
monitors.xmlを gdm のホームディレクトリにコピーしてください。GDM#デフォルトのモニター設定をセットアップする を参照してください。
X11/Xorg での色の問題を修正する
# xrandr --output NAME_OF_YOUR_OUTPUT --set "Broadcast RGB" "Full"
B580 で "bus error" により一部のプログラムを実行できない
(vainfo、falkon、mpv など) 一部のプログラムを実行すると以下のようなエラーが発生する場合:
1234 bus error : vaapi
考えられる原因は、BIOS/UEFI で ReBar (Resizable BAR) が無効化されていることです。一部のマザーボードでは、レガシーサポートが無い場合、UEFI モードがアクティブであるときにしか ReBar を有効化できません。
参照
- https://01.org/linuxgraphics/documentation (サポートされているハードウェア一覧など)