Wayland でも動かせるようになった Cinnamon 6.0 がなかなか LMDE 6 に配信されないのと、ちょっと時間があったことから、また斜めの方向に進んでしまいました。
はじめに考えたのは
Ubuntu 22.04 ベースの Linux Mint 21.3 をインストールしてみようと考えました。これによって Mesa のバージョンは Debian 12 よりも新しくなるのですが、PipeWire のバージョンは逆に古くなってしまいます。でもまあ、PipeWire であれば PPA で最新化するのもありです。
最近は Linux kernel を自分用にカスタマイズするためにコンパイルしています。LLVM/Clang のバージョンはどうなるのか調べてみると、Linux Mint 21.3 の方が古くなってしまうことがわかりました。
というわけで、Linux Mint 21.3 をインストールするのはやめておきました。
どうせなら
逆に、Debian 12 の Mesa のバージョンだけ新しくできれば解決なのでは? と考えてその方法を探ってみたのですが、あんまりパッとした情報が見つけられませんでした。
Debian の場合は公式というか APT の制御で自由に差し替えられるようになっていたので、情報が少なかったようでした。 具体的には APT のリポジトリを安定版だけではなくtesting というベータ版っぽいリポジトリを使うことで Mesa に限らずより新しいソフトウェアのバージョンを使うことができるようになっています。
ちなみに testing よりもさらに先の開発版として sid というリポジトリも用意されています。
stable(サーバー向け)、testing(デスクトップ向け)、sid(PC ゲーマー向け)なんて表現している人もいて、なるほどと思いました。
やってみた
まずは APT の設定ファイルの修正です。/etc/apt/sources.list.d 内の official-package-repositories.list を編集します。
$ cat official-package-repositories.list deb http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages faye main upstream import backport romeo deb http://ftp.riken.jp/Linux/debian/debian bookworm main contrib non-free non-free-firmware deb http://ftp.riken.jp/Linux/debian/debian bookworm-updates main contrib non-free non-free-firmware deb http://security.debian.org/ bookworm-security main contrib non-free non-free-firmware deb http://ftp.riken.jp/Linux/debian/debian bookworm-backports main contrib non-free non-free-firmware deb http://ftp.riken.jp/Linux/debian/debian testing main contrib non-free non-free-firmware
最下行の testing というリポジトリを追記しました。
このディレクトリには official-source-repositories.list という定義もありますが、当然ながらソースコードの新しいバージョンが欲しい場合のみ追記すれば良いと思います。今回は不要なので追記しませんでした。
これで apt update をかけてパッケージ情報を最新化します。
$ sudo apt update 無視:1 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages faye InRelease ヒット:2 http://ftp.riken.jp/Linux/debian/debian bookworm InRelease ヒット:3 http://ftp.riken.jp/Linux/debian/debian bookworm-updates InRelease ヒット:4 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages faye Release ヒット:5 http://security.debian.org bookworm-security InRelease ヒット:6 http://ftp.riken.jp/Linux/debian/debian bookworm-backports InRelease 取得:7 http://ftp.riken.jp/Linux/debian/debian testing InRelease [156 kB] 取得:9 http://ftp.riken.jp/Linux/debian/debian testing/main amd64 Packages [9,013 kB] 取得:10 http://ftp.riken.jp/Linux/debian/debian testing/main i386 Packages [8,851 kB] 取得:11 http://ftp.riken.jp/Linux/debian/debian testing/main Translation-ja [736 kB] 取得:12 http://ftp.riken.jp/Linux/debian/debian testing/main Translation-en [6,127 kB] 取得:13 http://ftp.riken.jp/Linux/debian/debian testing/main amd64 DEP-11 Metadata [4,488 kB] 取得:14 http://ftp.riken.jp/Linux/debian/debian testing/main all Contents (deb) [33.7 MB] 取得:15 http://ftp.riken.jp/Linux/debian/debian testing/main i386 Contents (deb) [11.1 MB] 取得:16 http://ftp.riken.jp/Linux/debian/debian testing/main amd64 Contents (deb) [11.5 MB] 取得:17 http://ftp.riken.jp/Linux/debian/debian testing/contrib i386 Packages [47.7 kB] 取得:18 http://ftp.riken.jp/Linux/debian/debian testing/contrib amd64 Packages [57.2 kB] 取得:19 http://ftp.riken.jp/Linux/debian/debian testing/contrib Translation-en [51.6 kB] 取得:20 http://ftp.riken.jp/Linux/debian/debian testing/contrib amd64 DEP-11 Metadata [19.6 kB] 取得:21 http://ftp.riken.jp/Linux/debian/debian testing/contrib all Contents (deb) [113 kB] 取得:22 http://ftp.riken.jp/Linux/debian/debian testing/contrib amd64 Contents (deb) [178 kB] 取得:23 http://ftp.riken.jp/Linux/debian/debian testing/contrib i386 Contents (deb) [40.5 kB] 取得:24 http://ftp.riken.jp/Linux/debian/debian testing/non-free i386 Packages [73.2 kB] 取得:25 http://ftp.riken.jp/Linux/debian/debian testing/non-free amd64 Packages [97.3 kB] 取得:26 http://ftp.riken.jp/Linux/debian/debian testing/non-free Translation-en [66.9 kB] 取得:27 http://ftp.riken.jp/Linux/debian/debian testing/non-free amd64 DEP-11 Metadata [4,200 B] 取得:28 http://ftp.riken.jp/Linux/debian/debian testing/non-free amd64 Contents (deb) [78.1 kB] 取得:29 http://ftp.riken.jp/Linux/debian/debian testing/non-free i386 Contents (deb) [28.7 kB] 取得:30 http://ftp.riken.jp/Linux/debian/debian testing/non-free all Contents (deb) [822 kB] 取得:31 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware i386 Packages [6,028 B] 取得:32 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware amd64 Packages [6,352 B] 取得:33 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware Translation-en [21.7 kB] 取得:34 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware amd64 DEP-11 Metadata [15.6 kB] 取得:35 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware all Contents (deb) [17.5 kB] 取得:36 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware amd64 Contents (deb) [967 B] 取得:37 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware i386 Contents (deb) [930 B] 87.5 MB を 28秒 で取得しました (3,100 kB/s) パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 アップグレードできるパッケージが 1468 個あります。表示するには 'apt list --upgradable' を実行してください。
amd64 以外のリポジトリも探しに行っていますが、これは初回だけの動作のようです。
それはそうと、アップグレード可能なパッケージが 1,468 個もあると表示されました。こんなにたくさんアップグレードしてしまうともはや LMDE 6 でも Debian 12 でもなくなってしまいそうです。
アップグレードを処理せずに置いておいたとしても、普通に LMDE 6 に配信されたアップデートを見逃してしまいそうです。意図的にインストールしたいパッケージは testing リポジトリからインストールできて、それ以外は通常の stable リポジトリから処理できるとベストです。
ということでさらに調べてみると、preference 定義でなんとかできるようでした。
/etc/apt/preferences.d というディレクトリに official-extra-repositories.pref、 official-package-repositories.pref という 2 つの定義があり、ここに my-package-repositories.pref という 3 つ目の定義ファイルを追加してみました。
$ cat my-package-repositories.pref Package: * Pin: release a=testing Pin-Priority: -1
Pin-Priority に数値を指定するのですが、通常は大きい値が優先されるのですが、ここにマイナス値を設定すると自動では探しに行かなくなるようです。
$ apt update 無視:1 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages faye InRelease ヒット:2 http://ftp.riken.jp/Linux/debian/debian bookworm InRelease ヒット:3 http://ftp.riken.jp/Linux/debian/debian bookworm-updates InRelease ヒット:4 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages faye Release ヒット:5 http://security.debian.org bookworm-security InRelease ヒット:6 http://ftp.riken.jp/Linux/debian/debian bookworm-backports InRelease 取得:7 http://ftp.riken.jp/Linux/debian/debian testing InRelease [156 kB] 取得:9 http://ftp.riken.jp/Linux/debian/debian testing/main amd64 Packages [9,013 kB] 取得:10 http://ftp.riken.jp/Linux/debian/debian testing/main i386 Packages [8,851 kB] 取得:11 http://ftp.riken.jp/Linux/debian/debian testing/main Translation-ja [736 kB] 取得:12 http://ftp.riken.jp/Linux/debian/debian testing/main Translation-en [6,127 kB] 取得:13 http://ftp.riken.jp/Linux/debian/debian testing/main amd64 DEP-11 Metadata [4,488 kB] 取得:14 http://ftp.riken.jp/Linux/debian/debian testing/main i386 Contents (deb) [11.1 MB] 取得:15 http://ftp.riken.jp/Linux/debian/debian testing/main amd64 Contents (deb) [11.5 MB] 取得:16 http://ftp.riken.jp/Linux/debian/debian testing/main all Contents (deb) [33.7 MB] 取得:17 http://ftp.riken.jp/Linux/debian/debian testing/contrib amd64 Packages [57.2 kB] 取得:18 http://ftp.riken.jp/Linux/debian/debian testing/contrib i386 Packages [47.7 kB] 取得:19 http://ftp.riken.jp/Linux/debian/debian testing/contrib Translation-en [51.6 kB] 取得:20 http://ftp.riken.jp/Linux/debian/debian testing/contrib amd64 DEP-11 Metadata [19.6 kB] 取得:21 http://ftp.riken.jp/Linux/debian/debian testing/contrib all Contents (deb) [113 kB] 取得:22 http://ftp.riken.jp/Linux/debian/debian testing/contrib i386 Contents (deb) [40.5 kB] 取得:23 http://ftp.riken.jp/Linux/debian/debian testing/contrib amd64 Contents (deb) [178 kB] 取得:24 http://ftp.riken.jp/Linux/debian/debian testing/non-free amd64 Packages [97.3 kB] 取得:25 http://ftp.riken.jp/Linux/debian/debian testing/non-free i386 Packages [73.2 kB] 取得:26 http://ftp.riken.jp/Linux/debian/debian testing/non-free Translation-en [66.9 kB] 取得:27 http://ftp.riken.jp/Linux/debian/debian testing/non-free amd64 DEP-11 Metadata [4,200 B] 取得:28 http://ftp.riken.jp/Linux/debian/debian testing/non-free amd64 Contents (deb) [78.1 kB] 取得:29 http://ftp.riken.jp/Linux/debian/debian testing/non-free all Contents (deb) [822 kB] 取得:30 http://ftp.riken.jp/Linux/debian/debian testing/non-free i386 Contents (deb) [28.7 kB] 取得:31 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware i386 Packages [6,028 B] 取得:32 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware amd64 Packages [6,352 B] 取得:33 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware Translation-en [21.7 kB] 取得:34 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware amd64 DEP-11 Metadata [15.6 kB] 取得:35 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware all Contents (deb) [17.5 kB] 取得:36 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware amd64 Contents (deb) [967 B] 取得:37 http://ftp.riken.jp/Linux/debian/debian testing/non-free-firmware i386 Contents (deb) [930 B] 87.5 MB を 30秒 で取得しました (2,891 kB/s) パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 パッケージはすべて最新です。
再び apt update してみると、先ほどの「アップグレード可能な〜」という表示が消えました。作戦成功のようです。
では、本題の Mesa の最新化です。
どのパッケージをインストールすれば良いのか自身がなかったのですが、とりあえず VA-API のドライバーである mesa-va-drivers をインストールしてみました。
$ apt install -t testing mesa-va-drivers パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libclang-common-15-dev libclang-cpp15 libllvmspirvlib15 libobjc-12-dev これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: clang-16 gcc-13-base lib32asan8 lib32atomic1 lib32gcc-s1 lib32gomp1 lib32itm1 lib32quadmath0 lib32stdc++6 lib32ubsan1 libasan8 libatomic1 libcc1-0 libclang-common-16-dev libclang-cpp16 libclang-rt-16-dev libclang1-16 libclc-16 libclc-16-dev libegl-mesa0 libgbm1 libgcc-13-dev libgcc-s1 libgfortran5 libgl1-mesa-dri libglapi-mesa libglx-mesa0 libgomp1 libhwasan0 libitm1 libllvm16 libllvmspirvlib16 liblsan0 libobjc-13-dev libobjc4 libquadmath0 libstdc++-13-dev libstdc++6 libtsan2 libubsan1 libx11-6 libx11-data libx11-dev libx11-xcb1 libx32asan8 libx32atomic1 libx32gcc-s1 libx32gomp1 libx32itm1 libx32quadmath0 libx32stdc++6 libx32ubsan1 libxatracker2 libzstd-dev libzstd1 lld-16 llvm-16 llvm-16-dev llvm-16-linker-tools llvm-16-runtime llvm-16-tools mesa-opencl-icd mesa-vdpau-drivers mesa-vulkan-drivers zstd 提案パッケージ: clang-16-doc wasi-libc libstdc++-13-doc libx11-doc llvm-16-doc 以下のパッケージは「削除」されます: libclc-15 libclc-15-dev 以下のパッケージが新たにインストールされます: gcc-13-base libclc-16 libclc-16-dev libgcc-13-dev libhwasan0 libllvmspirvlib16 libobjc-13-dev libstdc++-13-dev 以下のパッケージはアップグレードされます: clang-16 lib32asan8 lib32atomic1 lib32gcc-s1 lib32gomp1 lib32itm1 lib32quadmath0 lib32stdc++6 lib32ubsan1 libasan8 libatomic1 libcc1-0 libclang-common-16-dev libclang-cpp16 libclang-rt-16-dev libclang1-16 libegl-mesa0 libgbm1 libgcc-s1 libgfortran5 libgl1-mesa-dri libglapi-mesa libglx-mesa0 libgomp1 libitm1 libllvm16 liblsan0 libobjc4 libquadmath0 libstdc++6 libtsan2 libubsan1 libx11-6 libx11-data libx11-dev libx11-xcb1 libx32asan8 libx32atomic1 libx32gcc-s1 libx32gomp1 libx32itm1 libx32quadmath0 libx32stdc++6 libx32ubsan1 libxatracker2 libzstd-dev libzstd1 lld-16 llvm-16 llvm-16-dev llvm-16-linker-tools llvm-16-runtime llvm-16-tools mesa-opencl-icd mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers zstd アップグレード: 58 個、新規インストール: 8 個、削除: 2 個、保留: 1420 個。 193 MB のアーカイブを取得する必要があります。 この操作後に追加で 111 MB のディスク容量が消費されます。 続行しますか? [Y/n]
インストール完了後、glxinfo で確認してみると Mesa のバージョンは 23.2.1 に更新されていました。(以前は 22.3 でした)
$ glxinfo -B name of display: :0 display: :0 screen: 0 direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Vendor: AMD (0x1002) Device: AMD Radeon Graphics (renoir, LLVM 16.0.6, DRM 3.54, 6.5.10-zen3) (0x1638) Version: 23.2.1 Accelerated: yes Video memory: 16384MB Unified memory: no Preferred profile: core (0x1) Max core profile version: 4.6 Max compat profile version: 4.6 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.2 Memory info (GL_ATI_meminfo): VBO free memory - total: 15684 MB, largest block: 15684 MB VBO free aux. memory - total: 7873 MB, largest block: 7873 MB Texture free memory - total: 15684 MB, largest block: 15684 MB Texture free aux. memory - total: 7873 MB, largest block: 7873 MB Renderbuffer free memory - total: 15684 MB, largest block: 15684 MB Renderbuffer free aux. memory - total: 7873 MB, largest block: 7873 MB Memory info (GL_NVX_gpu_memory_info): Dedicated video memory: 16384 MB Total available memory: 24313 MB Currently available dedicated video memory: 15684 MB OpenGL vendor string: AMD OpenGL renderer string: AMD Radeon Graphics (renoir, LLVM 16.0.6, DRM 3.54, 6.5.10-zen3) OpenGL core profile version string: 4.6 (Core Profile) Mesa 23.2.1-1 OpenGL core profile shading language version string: 4.60 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL version string: 4.6 (Compatibility Profile) Mesa 23.2.1-1 OpenGL shading language version string: 4.60 OpenGL context flags: (none) OpenGL profile mask: compatibility profile OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.2.1-1 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
なんか Mesa のインストール方法に自信はありませんが、Debian のリポジトリの切り替え方がわかって良かったです。
(追記)
Mesa のバージョンを上げたら Firefox で VP9 とかのハードウェアエンコードが無効になってしまったので vainfo で確認してみました。
$ vainfo libva info: VA-API version 1.17.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva error: /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so has no function __vaDriverInit_1_0 libva info: va_openDriver() returns -1 vaInitialize failed with error code -1 (unknown libva error),exit
おや?
VA-API が機能していないようです。
ん〜、libva あたりでエラーのようですね。もしやここら辺も testing から新しいバージョンに更新しないといけないんですかね。
$ apt install -t testing libva2 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: libva-drm2 libva-wayland2 libva-x11-2 va-driver-all 以下のパッケージはアップグレードされます: libva-drm2 libva-wayland2 libva-x11-2 libva2 va-driver-all アップグレード: 5 個、新規インストール: 0 個、削除: 0 個、保留: 1560 個。 145 kB のアーカイブを取得する必要があります。 この操作後に追加で 18.4 kB のディスク容量が消費されます。 続行しますか? [Y/n]
ということで、libva2 を新しいバージョンに差し替えてみることにしました。
$ vainfo libva info: VA-API version 1.20.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_1_20 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.20 (libva 2.12.0) vainfo: Driver version: Mesa Gallium driver 23.3.5-1 for AMD Radeon Graphics (radeonsi, renoir, LLVM 17.0.6, DRM 3.54, 6.6.15-zen3) vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSlice VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSlice VAProfileJPEGBaseline : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc
大成功です。無事に VA-API が復活しました。