Ubuntu 26.04をAI PCにインストール ~EVO-X2を26.04にアップグレード~
こんにちはRcatです。
今回は運用しているLinuxサーバーのOS更新です!
Ubuntu 26.04が出ましたので更新しようと思います。
備忘録でもあるので、新規インストールや似たようなPCの環境構築の参考になれば幸いです。

更新前はこちら!
はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください。
則っていないコメントは削除します。
インストール
前提
この辺の手順は特に変わらないのでスキップ。前回の記事参照。
なお、今回は別途SSDを追加で用意してそちらに入れます。
なので、旧環境のSSDと新環境のSSDで2本持ちの状態となります。
理由は簡単で、トラブったとき新環境抜けば元に戻るから。また、マウントすれば前のデータをそのまま参照できるので特に困らないからといった理由もあります。
ちなみにSSDは高いのでもちろん中古。旧PCで使ってた500GB 7000Hくらいのに入れます。このSSDにはUbuntu環境だけ入れて、基本マウントで前のSSDを使うイメージです。
インストール後 - デスクトップ
やることは前の記事と同じ。
アップデート
画面に通知が来ていたのでそこからアップデートを掛けました。
SSHの有効化
SSHとは、外部からシェルにログインできる機能です。
Linuxはもともとコマンドが基本なので、画面には繋がずにこのSSHを使ってメインのWindowsPCから操作するものとします。
sudo apt install openssh-serverファイアウォール設定
Ubuntuには標準でufwが入っているのでこれを使います。
ただしデフォルトでは無効なので手動でオンにする必要があります。
ミスるとSSHが切断されるので、デスクトップにいる今やっておいた方がいいです。
#状態を確認
sudo ufw status
状態: 非アクティブ
#先にsshを開けておく
sudo ufw allow ssh
#リモートデスクトップも開ける
sudo ufw allow 3389
sudo ufw allow 3390
#有効化する
sudo ufw enable
#SSHから接続していると切れるかもよ?って警告が出るのでy
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
#ポートを開放の例(httpサーバー)
sudo ufw allow 80初期設定 - リモート
SSHを有効にすればあとはメインのWindowsマシンからTeraTermで接続できるので、ここから先はSSH接続です。
詳しくは前回の記事参照。
いろいろ確認
どうやらデフォでドライバが当たってるっぽい。
→そのままでもROCmビルドのllama.cppができました。

amd smiも入れて確認してみます
sudo apt install amd-smi当たってますね。ROCmはないと。

NPUが認識されているかどうか。
こちらもデフォで当たってる。

とりあえず適当に入れる
#CPU使用率制限コマンド
sudo apt install cpulimit
#Git関連
sudo apt install git
sudo apt install git-lfs
#ビルドとかcurlとか
sudo apt install cmake
sudo apt install libcurl4-openssl-dev
# ifconfig
sudo apt install net-toolsDockerを入れる
Dockerはコンテナ型仮想環境を提供するツールです。
コンテナイメージや定義があればどこでも同じ環境を再現できるのが特徴。移植性が高いです。
私は自作プログラムはほぼDockerコンテナ化するようにしているので、これさえあれば即復帰可能。
ここを参考にDockerの公式版を入れます。
間違ってsnap版を入れると痛い目を見るので注意
公式からのコピペですが、上から順に実行していきます。
※コマンドはいつ変わるかわかりませんので、公式からコピーすることを推奨します。
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt updateインストール
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin仕上げ
これをやるとsudo無しでdockerコマンドを打てます。
sudo usermod -aG docker $USER
su - ${USER}Python
最近はコンテナなので、直にはほぼ使いませんが、たまに使うので設定
仮想環境作成とpipです。
sudo apt install python3-pip python3-venvFFMPEGを入れる
何かと使われているFFMPEG。これも入れる
sudo apt install ffmpegscreenを入れる
screenはシェルの中で新たなシェル(スクリーン)を作成して自在にアタッチ/でタッチできるもので、Windowsでいうコマンドプロンプトをたくさん立ち上げる的な感じです。

おや?入ってましたね。
設定だけ作りましょう
$ sudo vi ~/.screenrc
termcapinfo xterm* ti@:te@
defscrollback 100000
defutf8 on
defencoding utf8
encoding utf8 utf8
startup_message off
vbell off
altscreen on
shell $SHELLここからさきは、この次のマウントの章が終わっている前提。
オリジナルサービスの登録
これに関してはもう人それぞれだと思うのでスルー。
前回の記事ではsystemdを使ったやり方を紹介しています。
現在私はDockerに移行したので、各作品のフォルダで下記コマンドを打つだけの作業。本当にそれだけで終わり。
Docker便利すぎる。
docker compose build
docker compose up -dアップデート自動化
これは取りやめにします。
なぜかというと、以前カーネルとamdgpuのバージョン問題でカーネルパニックになったことがあり、勝手にアップデート→再起動要求でとりあえず再起動は良くない。
特に、再起動要求中にフリーズして切れた時とか最悪。
どうせ毎日使ってるんだし手動でアプデかけます。
aliasesを作る
前回の記事参照。
今回は以前のhomeをそのままコピーしてくるので新規作成はしません。
swappinessの変更(SWAPの使われやすさ)
SWAPファイルはデフォルトで存在しています。
消してしまうのもありですが、LLMを読み込んでほぼメモリを使い切ってシステムが落ちるなんてことになっても困るので、残しておきます。
しかし、LLMがSWAPしてしまったら意味がないので、SWAPしにくくします。
設定ファイルに書き込んで永続しつつ、今回分を一時的に10にします。
値が低いほどスワップされづらく、0でほぼされない。デフォルトは60。
rcat@rcat-EVO-X2:~$ sudo vi /etc/sysctl.conf
rcat@rcat-EVO-X2:~$ echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
vm.swappiness=10
rcat@rcat-EVO-X2:~$ sudo sysctl vm.swappiness=10
vm.swappiness = 10参考:
https://linuxconfig.org/how-to-create-and-manage-swap-files-on-ubuntu-26-04
LLMを動かす
メインディッシュですね。今回は手動でドライバは入れていません。ROCmも入れていません。でも動きますw
前提
エンジンはllama.cppとなります。
ドライバは勝手にあたってるっぽいので入れません。
ROCmはDockerコンテナ内で済ませるので入れません。
構築
Dockerfileを用意します。まぁこれは前作ったやつなので特に変更なし。
無くても動くと思われるオプションは黒塗り。

docker-compose.yamlも用意します。
これはモデル設定をファイルに各やり方で起動する場合です。

用意できたら(旧環境から持ってきただけ)コマンド一発
# ROCmビルドは時間がかかるので、明示的にいったんbuildする
docker compose build
# ビルドが通ったら起動してみる
docker compose up -d依存関係もコンテナ内で済んでるので、エラーなく終了。
というわけでUIにアクセスして、いつも通り利用規約の要約を依頼する。上の設定だと8082ポートにアクセスすればOK
パフォーマンス上がった?
ん?投入直後が978だと? 今までせいぜい700~800くらいだったはずなんだが。少なくとも900台の数値は見たことがない。
ドライバやカーネルのアップデートでパフォーマンス上がったか?嬉しいな
Qwen3.6 35B-A3 MTP Q8に約12kトークンを入力したパフォーマンス例
見るべきは最後の 763t/39t。
入力された文章を763t/sで読み解いて39t/sで回答を生成したということ。

スクショはありませんが、ちゃんとnvtopでGPUが計算していることは確認済み。というかこのパフォーマンスはGPUじゃないと出ない。
注記:Rcatの環境ではROCmではLLMが劣化します。Vulkanを使う方法に移行します。
mdadmでRAID5を復活させる
前回の記事でRAID5を組んでいたので復活させます
mdadmを入れる
sudo apt install mdadm
sudo mdadm --assemble --force /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
#確認
cat /proc/mdstat
#認識されたらアセンブル設定
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -uRAIDのUUIDを確認
sudo blkid /dev/md0fstabに記述
sudo vi /etc/fstab
#この行を追加
UUID=48ac100c-4bd3-4d1b-8108-79453d4ef9dd /RAID ext4 defaults,nofail 0 2マウント
#マウント
sudo systemctl daemon-reload
sudo mount -a24.04が入っていたSSDをそのままマウントする
マウント
前のSSDをさしなおして確認。1.4Tのやつが前のファイルシステムです。
いろいろ入ってるのでそのまま使います。
nvme1n1 259:3 0 1.8T 0 disk
tqnvme1n1p1 259:4 0 100M 0 part
tqnvme1n1p2 259:5 0 16M 0 part
tqnvme1n1p3 259:6 0 464.7G 0 part
tqnvme1n1p4 259:7 0 1.2G 0 part
mqnvme1n1p5 259:8 0 1.4T 0 partUUIDを取得
sudo blkid /dev/nvme1n1p5マウント方法はRaidと同じなので省略。
リンクを作成
別のSSDにあるものの、今までと同じパスで使えるように今回はリンクを貼ります。
こうすることでいつも通り/Dataと/Rcat_Serviceが復活
sudo ln -s /mnt/old_ssd/Data /Data
sudo ln -s /mnt/old_ssd/Rcat_Service /Rcat_ServiceMySQLをDockerで立ち上げる
今回からマシンに入れるのはやめてDockerによる運用に変えます。
データを移動
Dockerコンテナ定義と同じところに`mysql_data`というフォルダを作ったので、ここにデータが入るようにします。
もとのは`/var/lib/mysql/`にありますので、これを持ってくる感じ。
権限がないのでsudo suでrootになってから作業するのをお勧めします
# cp -R /mnt/old_ssd/var/lib/mysql/ /mnt/old_ssd/Rcat_Service/docker/mysql/mysql_data/コンテナ定義の作成

コンテナの起動
Docker compose up -dこれで終わり。あとはいつもの環境で接続できればOK。
設定なども丸ごとコピーなので特に気にせず接続できるはず。

その他
次の項目は、前の記事とそっくり同じため省略
VPNサーバー設定
SMART監視
音楽プレイヤー
バックアップサーバー
逆に今回から下記はやめることにする
ゲームサーバー
Dify
SSL証明書(Bunker WEBに移行済み)
画像生成AI(気が向けばそのうち)
まとめ
今回はUbuntu26.04への移行作業を行いました。
移行に向けて旧作品もできる限りDocker化したので移行がだいぶ楽でした。
特に、何もしなくてもRadeon8060Sをちゃんと認識して使えるというのがすごいw
前は調べて自分で入れて~なんてしていたのに、もうやらなくていいですかw
ROCmもDockerを使ってしまえばホストに入れなくてよいのでバージョン問題や導入が面倒といったことも完全に無視できます。
今後は移行時にどれだけ簡単に環境を再現できるようにするかを考えていった方がいいかもしれませんね。
まぁそういった意味も含めたこの記事なんですが。実際、前のやつを見ながら進めましたし。
それではまたお会いしましょう。
ちゃんと使えれば次はNPU使います。
リンク集
感想投稿フォーム
コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け
メンバーシップの説明
【Linux】Systemd追加支援スクリプト
【Linux】Systemd管理画面
Docker-Composeマネージャー
【ローカルLLM】バイブコーディング完全ガイド
【ローカルLLM】自己成長AIエージェントHermesをホスト
ミニPCにLinuxをインストール
メンバーシップ特典
ここから先は
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。
