debian の nvidia-graphics-drivers パッケージを自分で編集&更新する方法

debiannvidia-graphics-drivers が古いまま(470.57.02 )でなかなか更新されないので,自力で 470.63.01 に更新しました.

470.57.02 はLinux-5.14をサポートしていませんが(モジュールがビルドできない), 470.63.01 ならLinux-5.14もサポートしています.

更新の手順(その1:ソースのダウンロードと展開)

まずapt-getでパッケージのソースを入手します

$ apt-get source nvidia-graphics-drivers

2021年9月16日の時点で nvidia-graphics-drivers のバージョンは 470.57.02 でした.

ソースのディレクトリに移動します

$ cd nvidia-graphics-drivers-470.63.01

uscanを使ってnvidiaが公開している最新版ドライバのバージョンを確認します

$ uscan --report

最新版は 470.63.01 でした

nvidiaのサイトから470.63.01のソースをダウンロードします

$ ./debian/rules get-orig-source

これで
nvidia-graphics-drivers_470.63.01.orig-amd64.tar.gz
nvidia-graphics-drivers_470.63.01.orig-arm64.tar.gz
が生成されます

生成されたファイルから *.run をとりだして,nvidia-graphics-drivers-470.63.01直下にあるamd64ディレクトリと arm64ディレクトリに runファイルをコピーします

このように配置されればOKです

$ ls  a*64/
amd64/NVIDIA-Linux-x86-470.63.01.run
arm64/NVIDIA-Linux-aarch64-470.63.01.run

更新の手順(その2:changelogの修正)

debian/changelogを修正します

$ debchange --distribution local --newversion 470.63.01-1
  • "distribution" は利用している環境に合わせます.
  • "newversion"は "ドライバのバージョン番号"-"リリース番号"の形式になります

更新の手順(その3: ビルド)

$ dpkg-buildpackage -us -uc -rfakeroot

更新の手順(その4:パッケージの修正)

ビルドするとエラーが出ます.理由は, 470.63.01 で新たに導入されたライブラリlibnvidia-vulkan-producer.so.470.63.01 に対する設定が debian/* 以下に存在しないためです.

とりあえず libnvidia-vulkan-producer.so.470.63.01 は無視することにして,debian/not-installed.in に libnvidia-vulkan-producer.so.470.63.01を追記します.

これで libnvidia-vulkan-producer.so.470.63.01はインストールされなくなります*1

更新の手順(その5: 再ビルド)

$ dpkg-buildpackage -us -uc -rfakeroot

今度はビルドが通りました

動作確認

生成された *.deb を通常通りにインストールするだけです

注意事項

上記の手順で問題なくXorgは起動し、opengl のプログラムも正常に動作しています.

ただし libnvidia-vulkan-producer.so.470.63.01 をインストールしていないので,何かのきっかけでエラーが出る可能性があります.不具合がある場合はdebian/not-installed.in を使わずに適切に libnvidia-vulkan-producer.so.470.63.01 をインストールするか,正式なパッケージが公開されるまで待ちましょう.

*1:豪快な方法ですがこれでも動作するので今回はこれで良しとしています