1. 定義:Wayland環境におけるEDID固定
EDID(Extended Display Identification Data)固定とは、ディスプレイが持つ解像度やリフレッシュレートの情報をOS側で用意したバイナリファイルで上書きし、認識を安定させる手法です。 Waylandではディスプレイサーバー(Xorg)を介さないため、LinuxカーネルのKMS(Kernel Mode Setting)という機能を利用して、起動時に直接ハードウェア認識を制御します。
2. 要点:設定の重要ステップ
- OS標準機能での抽出: 外部ツールを使わず、システムファイル(
/sys/class/drm/)から直接EDIDバイナリを取得します。 - カーネルパラメータの適用:
grubbyを使用して、特定のDisplayPort(DP)に対してEDIDファイルを紐付けます。 - 起動イメージへの統合:
dracutを使用し、OSがドライバを読み込む前の段階でEDIDを認識できるようにします。 - NVIDIA特有の動作: RTX 4000 Adaなどの最新カードでは、
nvidia-drm.modeset=1の設定が前提となります。
3. 比較:X11とWaylandでの設定の違い
| 項目 | X11環境(旧方式) | Wayland環境(MIRACLE 9) |
|---|---|---|
| 設定場所 | /etc/X11/xorg.conf | カーネルブートオプション |
| 反映のタイミング | GUIログイン画面起動時 | OSカーネル初期化時 |
| ドライバ依存 | Xドライバの設定に依存 | カーネルKMS機能に依存 |
4. 具体例:RTX 4000 Adaでの設定手順
DisplayPort接続を想定した、MIRACLE LINUX 9での最短設定手順です。
手順1:既存のEDIDをファイルとして保存
現在認識されているモニター情報を、OSのシステムディレクトリから直接コピーします。
# ポート名を確認(例:card1-DP-1)
ls /sys/class/drm/
# EDIDをバイナリとして抽出
sudo mkdir -p /usr/lib/firmware/edid
sudo cat /sys/class/drm/card1-DP-1/edid > /usr/lib/firmware/edid/custom_edid.bin
手順2:ブートパラメータの更新
grubbyツールを使用して、NVIDIAドライバの設定とEDIDのパスをカーネルに伝えます。
# DP-1ポートに適用する場合の例
sudo grubby --update-kernel=ALL --args="nvidia-drm.modeset=1 drm.edid_firmware=DP-1:edid/custom_edid.bin"
手順3:initramfs(dracut)の再構築
起動時の極めて早い段階でEDIDを読み込ませるため、設定をOSの起動イメージに含めます。
# dracut用の設定ファイル作成
echo 'install_items+=" /usr/lib/firmware/edid/custom_edid.bin "' | sudo tee /etc/dracut.conf.d/99-edid.conf
# 起動イメージの更新
sudo dracut -f
5. 注意事項
最新GPUでは、内部のGSPファームウェアがOSの設定と競合する場合があります。 もし再起動後に設定が反映されない場合は、カーネルパラメータに nvidia.NVreg_EnableGpuFirmware=0 を追加して、制御方式を従来型に切り替えることを検討してください。

コメント