ubntu 22.04にてARC B580を動作させる

Ubuntu

2024/12/27現在、ubuntuの22.04ではARC B580はうまく認識されません。

こんな感じでllvmpipe(LLVM 15.0.7,256bits)と表示され、ソフトウェアレンダラーで動作していることが確認できます。


ですが、実は24.10であれば普通にインストールするだけで認識します。
私の拙い技術では、結論24.10を使ったほうが良いということになりました。

ですが、ここはあえて22.04を使っていきましょう。
Linuxカーネルをソースコードからビルドする作業は必須ではないかもしれませんが
今後、あたらしいハードウェアを導入した際、役に立つかもしれないからです。

それでは、やっていきましょう。

まず、ARC B580を動作させるのに必要になるのは
・mesaドライバの24.3以上のバージョン
・Linuxカーネルの6.12以上のバージョン
・最新のLinuxファームウェア
です。

最初にカーネルのビルドに必要なライブラリ等からインストール。

sudo apt install -y make gcc flex bison git
sudo apt install -y libncurses-dev libssl-dev libelf-dev

次に、mesaドライバのリポジトリの登録と最新版のダウンロード、インストール。

sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt -y update
sudo apt -y upgrade
sudo apt install mesa-vulkan-drivers mesa-utils

そしてLinuxカーネルのソースコードですが、https://www.kernel.org/からダウンロードできます。

「mainline」とあるのが最新のカーネルになるようです。
機能が増えているとのことですが、自分の技術と知識ではさっぱり違いがわかりません。
ですので、今回は「stable」となっている「6.12.6」を使っていきます。

画像のようにクリックしてダウンロードするのも良いんですが、

cd ~
mkdir -p install
cd install
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.6.tar.xz
tar -xvf linux-6.12.6.tar.xz
cd linux-6.12.6

このように、コマンドでやっていきましょう。
上記のコマンドどおりなら、
「linux-6.12.6」がカレントディレクトリになっているはずですので

make menuconfig

でビルドのコンフィグを設定していきます。
とはいっても、素人の私では必要不必要がわかりませんので
ビルドに必要な手順だけやっていきます。
ファイル容量の節約とか気にして、ドライバをいろいろ削っていくと
USBメモリすら認識しなくなることもありますので。

まずはこの画面になると思います。

ここで「Cryptographic API」を選択します。

次に「certificates for signature checking」を選択。

「debian/canonical-certs.pem ~」を選びます。

下のような画面になると思いますので、

下の画面のように消していきます。消したら、「OK」を選択。

次は「debian/canonical-revoked-certs.pem ~」を選択。

下のような画面になると思いますので、

同様に消していきます。消したら「OK」を選択。

ここから、3回くらい「EXIT」を選択。

下の画面になったら、「Yes」を選択。

これで、コンフィグの設定は終わりです

では、いよいよビルド開始!!

time make -j$(nproc)

気合が入っているように見えますが、PCにとっては結構大仕事です。
カレントディレクトリは変わっていないと思いますので、「time make -j$(nproc)」を実行。
「time」をつけているのは、ビルドにかかった時間を測るためです。

CPUのベンチマークにも使えそう。

12分半といったところ。

次は

sudo make modules_install
sudo make install

でインストールしていきます。
思ったより時間がかかると思いますので、「time」はお好みで。

次はGRUBの編集です。

sudo nano /etc/default/grub

「GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”」の部分を

「GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash i915.force_probe=!e20b xe.force_probe=e20b”」に書き換えます。

「Ctrl + O」→「Enter」でGRUBを書き換えたら、「Ctrl + X」→「Enter」で編集終了。

Linuxファームウェアのダウンロードと更新

cd ~
cd install
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo cp -r linux-firmware/* /lib/firmware/

上記スクリプトでダウンロードから更新まで自動でやってくれます。
それが終わったら、

sudo update-grub

GRUBの更新をします。
ここまで済んだら、再起動しましょう。

確認!

OK!
これで、ソフトウェアレンダラーからハードウェアレンダラーに切り替わりました。

ここまでやっておいてこんなこと書きたくないのですが
ubuntu22.04ではハードウェアエンコーダが使えないみたいです。

#!/bin/bash

# IntelグラフィックスGPG公開キーをインストールする
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
  sudo gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg

# パッケージリポジトリを構成する
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | \
  sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list

sudo apt update -y

sudo apt install -y libze1 intel-level-zero-gpu intel-opencl-icd clinfo libze-dev intel-ocloc intel-level-zero-gpu-raytracing

sudo usermod -aG render $USER
sudo usermod -aG video $USER

上記スクリプトで「ubuntu22.04用」の最新のドライバを導入することもできますが、それでもQSVなどは使えません。
もちろんこれからのドライバ次第だと思うのですが、現状ではubuntu24.10を使う方が良いです。

ここからは余談

ハードウェアエンコーダは使えませんが、vulkanは動作します。
ということはSteamでゲームも動くと思いますが、自分はあまりゲームはやらないので試してません。
どなたかやってみてください。

ここからは余談なのですが、以下は自分が作った自動化スクリプトですが
「rife-ncnn-vulkan」
というソフトを使って、とある動画の「余分なフレームの間引き」と「間引いた分のAI補間」を実行しているところです。

秒間34フレームとなっています。
Windowsで動作させたら秒間55フレームだったので、まだまだ最適化が不足しているみたいです。

このスクリプトは近々アップする予定です。
Windowsなら「Flowframes」というソフトがありますが、あれをubuntuでもできないかなぁと思って「bash」と「ffmpeg」と「rife-ncnn-vulkan」を組み合わせて作りました。

「Flowframes」は「cuda」に最適化されていて、「Radeon」や「ARC」ではあんまり速度は期待できませんが、これは「Vulkan」なのでGPUは選びません。
内臓GPUでもそこそこ動作します。
8700Gで平均14フレーム(フルHD画質なら)くらいでしたので、まあまあ我慢できるレベルかと思います。

このブログ読んでる人なんてほとんどいないと思いますが、興味のある方は公開後に使ってみてください。

今回は以上です。

コメント

タイトルとURLをコピーしました