0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

i3-wmをNVIDIA RTX4070 Raptop上で回した話

Last updated at Posted at 2024-09-03

TL;DR

ArchWiki NVIDIA OptimusASUS Linuxの中に全部書いてある。手順通りにやれば(私と同じ環境なら)多分動く。ティアリング対応は追記を参照...

経緯

今年のはじめからArch Linuxを使い始めて、これは便利すぎると普段使いしていた今日この頃、Asusが出しているROG STRIXシリーズなるものを購入し、オレオレ環境のインストールとか色々に手こずったので備忘録。
同じ感じにArch+NVIDIAでハマってしまった人の助けになれば良いなぁ...

目次

今回使用した環境

  • PC: ASUS ROG STRIX G614
  • CPU: Core i9 14世代(内蔵GPU有)
  • GPU: NVIDIA GeForce RTX 4070(ラップトップ用)
  • Display Manager: LightDM
  • Greeter: LightDM GTK Greeter
  • Window Manager: i3

下準備

※この記事ではArch Linuxのインストール方法については書きません。インストール方法について詳しく知りたい方はarchlinux installとかで調べるとたくさん記事が出てきます。いい感じの記事がたくさんあるので今回はそっちに丸投げします。

早速、このサイトArch Setup Guideに載っているガイドに従って必要なものをインストールする。(以下はサイトより参考にし一部を改変)

以下のコマンドでpacmanのリポジトリのキーを追加

sudo pacman-key --recv-keys 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
sudo pacman-key --finger 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
sudo pacman-key --lsign-key 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35
sudo pacman-key --finger 8F654886F17D497FEFE3DB448B15A6B0E9A3FA35

/etc/pacman.confを開き

sudo vim /etc/pacman.conf

次の内容を追記して保存

[g14]
Server = https://arch.asus-linux.org

pacmanを更新しつつ、必要なパッケージをインストール

sudo pacman -Syu asusctl power-profiles-daemon supergfxctl switcheroo-control rog-control-center

必要なデーモンを起動

sudo systemctl enable --now power-profiles-daemon.service
sudo systemctl enable --now supergfxd
sudo systemctl enable --now switcheroo-control

完了!

※サイトではこのあとにカスタムカーネルのインストールについて色々書かれていますが、私が試した限りでは音が出なくなる等の問題が発生したため使用はおすすめできません。今回は安定している通常のカーネルを使用する想定で話を進めるのでここでは割愛します。

NVIDIAドライバへ移行

ArchWiki NVIDIA OptimusNVIDIA グラフィックスのみを使うに従って必要な設定ファイルやら何やらを書く。(以下はサイトを参考にし一部を改変)

NVIDIAのドライバをインストールする。(今回はnvidiaをインストール)
※カスタムカーネルを使用している場合はnvidia-dkmsをインストールする。
(どのドライバをインストールすればいいかわからない場合はここインストールを参照。)

sudo pacman -S nvidia

ついでに便利なやつらをインストールしておく(必須ではない)

sudo pacman -S nvidia-utils nvidia-settings nvtop mesa-utils

次に、/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.confを新規作成して開き

sudo vim /etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf

次の内容を書いて保存

Section "OutputClass"
    Identifier "intel"
    MatchDriver "i915"
    Driver "modesetting"
EndSection

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "PrimaryGPU" "yes"
    ModulePath "/usr/lib/nvidia/xorg"
    ModulePath "/usr/lib/xorg/modules"
EndSection

最後に、使っているディスプレイマネージャ(もしくはxinitrc)に合わせて設定を書く。
(今回はLightDMの場合のみ紹介)

まず、/etc/lightdm/display_setup.shを新規作成して開き

sudo vim /etc/lightdm/display_setup.sh

次の内容を書いて保存

#!/bin/sh
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

実行権限を付与する

sudo chmod +x /etc/lightdm/display_setup.sh

最後にLightDMの設定を変更
/etc/lightdm/lightdm.confを新規作成して開き

sudo vim /etc/lightdm/lightdm.conf

[Seat:*]のセクション内にある#display-setup-script=をアンコメントしてさっきのシェルスクリプトのパスを書く

[Seat:*]
...
display-setup-script=/etc/lightdm/display_setup.sh
...

完了!

動作確認

再起動してから次のコマンドを実行

glxinfo | grep NVIDIA

こんな感じのが出れば成功!

server glx vendor string: NVIDIA Corporation
client glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce RTX 4070 Laptop GPU/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 560.35.03
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 560.35.03
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 560.35.03

まとめ

今回はAsusのROG STRIXシリーズにArch Linuxを入れて、NVIDIAのドライバを使ってみました〜
参考になったら嬉しいです (^^)
それではまたどこかでお会いしましょう〜 ノシ

追記

2024/09/05

GPUをNVIDIAに切り替えてから次のような問題が起こるようになりました...

  • 使っているターミナル上の文字が激しくティアリングを起こす
  • 前のフレームの情報を次フレームで重ねて表示してしまう

原因がよく分からず、ターミナルを変えても発生したので頭を悩ませていたのですが、解決方法がわかったので追記しておきます。
(以下はArchWikiを参考にし一部を改変)

まず、/etc/modprobe.d/nvidia.confを開き

sudo vim /etc/modprobe.d/nvidia.conf

次の内容を書いて保存

options nvidia NVreg_RegistryDwords="PowerMizerEnable=0x1;  PerfLevelSrc=0x2222; PowerMizerLevel=0x3; PowerMizerDefault=0x3 PowerMizerLevelAC=0x3"
options nvidia NVreg_UsePageAttributeTable=1

再起動する

私の環境ではこれで問題が解決しました。
垂直同期(Vsync)がGPU側で有効化できていなかったことが原因だったみたいです...
以上、2024/09/05追記でした〜

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?