こんにちは、山田ハヤオです。Arch Linux大好き人間です。
毎日yay -Syu
を実行してパッケージを更新しているのですが、当然トラブルも発生します。
今回はNVIDIAのドライバに関する話題です。
前置きはいいからさっさと解決方法だけ見せろという人はこちら
何が起きたのか
先日、NVIDIAのグラフィックドライバを455.23.04-1
から455.45.01-1
に更新したところGUIが起動しなくなりました。
流石にまずいのですぐにパッケージキャッシュからダウングレードして事なきをえました。
パッケージをダウングレードする方法
パッケージのバックアップは普通なら/var/cache/pacman/pkg/
に保存されています。
yay -Scc
とかキャッシュディレクトリを変更してたりすると無いかもしれません。
このディレクトリから古いバージョンのパッケージを探し出せばおkです。
が、大量にあるのでfind
を使って見つけ出しましょう。
find /var/cache/pacman/pkg/ -name '<パッケージ名>*<バージョン>' | xargs -Ip yay -U p
<パッケージ名>と<バージョン>をそれぞれに置き換えれば該当のパッケージを見つけられるはずです。
見つからなかったらキャッシュが残ってないということになります。
自力でPKGBUILDの履歴を漁ってダウングレードしましょう。
SOREKARA DO SITANO
流石にドライバが古いままというのはまずいので、対処方法を考えました。
plymouthを無効化したり、v86dを有効化したり…まぁ結果は変わらなかったです。
それでArchのフォーラムで質問しました。もしかしたら上流の問題かと思って。
そしたらあっさり解決方法がわかりました。
解決方法
やっと本題です。すっごい簡単でした。
カーネルパラメータにnvidia-drm.modeset=1
を追加するだけです。
そうするとKMSの速い段階でNVIDIAのドライバがロードされるようです。
おそらくLightDMがドライバがロードされる前に起動してしまったのがエラーの原因かなと考えています。
Arch WikiのNVIDIAのページは日本語版はかなり情報が少ないので英語版を見ようと思いました()
おまけ
Archの公式サイトからパッケージを検索してソースコードのリンクをクリックするとGitHubに飛ぶのでそこから過去バージョンのPKGBUIDを取得できます。
ビルド段階でエラーが出ることがあるのでsigファイルはsourceから除外しておくといいです。
この作業が自分でできるかできないかで大きく変わってきます。
(正直Arch Linuxはこの作業ができないと常用は無理なんじゃないかとさえ思っています。
Arch Linuxを使うにはシェルスクリプトが必須ってはっきりわかんだね)
コメント
あとmkinitcpio.confも編集したほういいぞ
MODULESにnvidia nvidia_modeset nvidia_uvm nvidia_drmを追加すれば幸せになれるので…