オンプレミスAIサーバー(ローカルLLM + 社内文書RAG)の構築を始めました。機材はGMKtec EVO-X2、AMD Ryzen AI Max+ 395搭載のミニPCです。128GBのユニファイドメモリをGPUに大きく割り当てられるので、ローカルLLM用途では今いちばん面白いマシンだと思っています。
この記事は初日の作業ログです。結論から言うと「インストールUSBが起動しない」「有線LANが認識されない」という2つの罠を踏んだので、同じ構成を組む方のために記録しておきます。
OSはLinuxかWindowsか
最初に迷うのがここですが、サーバー用途ならUbuntu Server一択でした。
- Ollama / Open WebUIはLinuxがファーストクラス
- systemdで自動起動・自動復旧、SSHでリモート保守ができる
- Windows Updateの強制再起動がない(常時稼働サーバーでは致命傷になります)
- ライセンス費がかからない
日常操作はすべてブラウザ(Open WebUI)経由なので、サーバーOSにGUIは不要です。管理画面が欲しければCockpitを入れれば、Webブラウザからメトリクス確認・サービス再起動・ターミナルまで使えます。「CUIのサーバー + Web管理画面」が現代の標準形だと思います。
BIOS設定 ― EVO-X2で一番大事なのはVRAM割り当て
電源ON直後にDel連打でBIOS(AMI)へ入ります。設定したのは3つです。
- UMA Frame Buffer Size → 96GB(
Advanced→GFX Configuration)。EVO-X2はメインメモリをGPU専用領域として切り出す方式で、デフォルトは数GBしかありません。ここを上げないと大きいモデルがGPUに載りません。gpt-oss-120bクラスを視野に入れるなら96GBです。OS側に残るのは32GBですが、サーバースタックには十分です - Auto Power On → Power On(
Advanced直下)。停電復帰後に自動起動する設定です。ヘッドレス運用では必須です - Secure Boot → Disabled。Ubuntu自体は対応していますが、トラブル要因を減らしておきます
罠その1: インストールUSBが起動しない
Ubuntu Server 24.04のISOをMacから dd でUSBメモリに書き込み、いざブート……しません。Boot Overrideに出てくる「UEFI OS」を選んでもWindowsが立ち上がってしまいます。
切り分けの過程が学びでした。
- Boot Overrideの項目名をよく見ると
UEFI OS (内蔵SSDの型番)― つまり全部内蔵SSDのエントリで、USBはブート候補にすら出ていない - BIOSの
Advanced→USB Configurationを見ると、USBメモリ自体は認識されている - 「ハードとしては見えているのに、ブート可能なEFIが見つからない」= 書き込み内容の問題
原因はおそらく、dd の書き込みが完全に終わる前に抜いてしまったことです。dd は進捗表示が止まってからもバッファの書き出しが続くので、完了統計が表示されるまで待たなければいけません。パーティションテーブルはディスク先頭に書かれるため、途中で切れていても一見正常に見えるのが厄介なところです。
教訓: インストールUSB作成はbalenaEtcherを使いましょう。 書き込み後に自動でベリファイ(照合)まで走るので、「書けたつもり」が原理的に起きません。Etcherで書き直したら一発で起動しました。
インストール時の選択
- 言語はEnglish(ログやエラーが検索しやすいため)、キーボードだけJapaneseにします
- OpenSSH serverは必ずチェック(以降の作業がすべてSSHでできます)
- GitHubアカウントから公開鍵をインポートできる機能が便利です。
https://github.com/<ユーザー名>.keysで公開されている鍵を取り込んでくれる……はずでしたが、ここでも伏線が。ネットワークに繋がらずインポート失敗。 この時点では「まあ後でssh-copy-idすればいいか」と流しました - パスワードはランダム単語をつないだパスフレーズ形式にしました。強度はランダム文字列と同等で、手打ちしやすいのが利点です。ちなみに有名な
correct-horse-battery-stapleをそのまま使うのは最悪手です(あらゆる攻撃辞書に載っています)
罠その2: 有線LANが認識されない
インストール完了、ログイン成功。しかし ip a を見ると有線LANにIPがありません。それどころか、よく見ると有線のインターフェース自体が存在しません。
カーネルログを見て原因が確定しました。
$ sudo dmesg | grep r8169
r8169 0000:xx:00.0: unknown chip XID 689, contact r8169 maintainers
EVO-X2の2.5GbEチップ(Realtek RTL8125D)が新しすぎて、Ubuntu 24.04の標準カーネル6.8のドライバが知らないチップだったのです。インストール中にネットに繋がらなかったのもこれが原因でした。ケーブルを何度挿し直しても無駄だったわけです。
教訓: 「繋がらない」時はケーブルを疑う前に dmesg を読みましょう。 カーネルログには大抵、答えがそのまま書いてあります。
解決: HWEカーネル
新しいチップに対応するには、新しいカーネルを入れれば解決します。Ubuntuには**HWE(Hardware Enablement)**という仕組みがあり、LTSの安定性を保ったまま新しめのカーネルを公式に導入できます。
sudo apt update
sudo apt install -y linux-generic-hwe-24.04
sudo reboot
ただし鶏と卵で、これを入れるにはネットワークが必要です。一時しのぎとしてWi-Fiをnetplanで設定しました。
# /etc/netplan/50-wifi.yaml
network:
version: 2
wifis:
wlp99s0:
dhcp4: true
access-points:
"SSID":
password: "********"
YAMLはインデントが命で、ここで true を trye と打ったり、インターフェース名を間違えたり(実機は wlp99s0 でした。ls /sys/class/net で確認できます)、nanoの保存でCtrl+Oのつもりが O を挿入してしまったりと、タイポ地獄を一通り経験しました。エラーメッセージは行番号と列番号まで教えてくれるので、落ち着いて読めば必ず直せます。
HWEカーネル(7.0系)で再起動すると:
$ ip -br a
eno1 UP 192.168.0.47/24 ← 出現!
wlp99s0 UP 192.168.0.83/24
有線LANが eno1 として認識され、無事開通しました。metric は有線100・Wi-Fi600で、小さい方が優先されるため、両方繋がっていても通信は自動的に有線を通ります。
株式会社coiaiでは、オンプレミスAI導入・社内文書RAG構築・AI活用研修を提供しています。


