メインコンテンツへスキップ
見出し画像

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-tools

    Dockerを入れる

    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-venv

    FFMPEGを入れる

    何かと使われているFFMPEG。これも入れる

    sudo apt  install ffmpeg

    screenを入れる

    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 -u

    RAIDのUUIDを確認

    sudo blkid /dev/md0

    fstabに記述

    sudo vi /etc/fstab
    
    #この行を追加
    UUID=48ac100c-4bd3-4d1b-8108-79453d4ef9dd /RAID ext4 defaults,nofail 0 2

    マウント

    #マウント
    sudo systemctl daemon-reload
    sudo mount -a

    24.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 part

    UUIDを取得

    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_Service

    MySQLを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をインストール



    メンバーシップ特典

     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ