暑さも少し落ち着いてきて、ようやく外に出てもいいかなという気になってきました。季節の変わり目体調には気をつけていきたいですね。
実は、一ヶ月くらい前にLinux PC を自作してMac から移行しました。そのときの考え、その後の感想を残しておきます。
また、学んだことや作業のログを細かく残しておきたいと思います。(どこかの誰かが不安に思ったときに同じ失敗や疑問を経験した人がいて安心してもらえたら嬉しい)

この 10 年くらいiOS 開発に必須ということもありmacOS を使っていました。
今使ってるMac はiMac 2020 でもう 4 年以上前のになるんですけど、性能的にはあまり困ってない。個人的には「10 年くらい困らなさそうだな〜」なんて思ってました。
これだけ長く一つの PC で困らないのは性能の向上が需要を上回ったというのもあるんですが。特に近年は性能がいるタスクをクラウドでやるようになった というのも大きいかもしれません。ゲームとかやらないので、低レイテンシ(低遅延)であることを求められる高度な処理があまりないというのもあるかもしれないです。
買い替えを意識したきっかけは、 2024/03/08 に出された tensorflow のこのアナウンスだった。

機械学習の開発が不便になるのは相当大きいことだった。
また別件ですが、あるフォーラムで「誰がこれから無くなるx86mac に時間をかけたいんだ?(意訳)」ってことを言われた り、まあx86mac は何かとコミュニティに見捨てられた環境であったりもした。
ということで、本気で買い替えを考え始めた。
まず、最近の PC にやらせるタスクを整理してみる。特にクラウドを使えるか、ローカルの PC でやる必要性があるか を考えた。
以下のように、低レイテンシ(低遅延)を求められるものやデータ量が多いもの、その中で計算量が多いものを中心にローカル PC の性能を決めればいいと個人的には思っている。

で一般的な PC でやることを書き出して、自分が次の PC に必要だと思う部分を赤色でしめした。
| タスク | ローカル PC の性能が必要 | GPU 使う | CPU 使う | クラウドにオフロードしやすい | 備考 |
|---|---|---|---|---|---|
| ML データセット前処理 | ○ | ◎ | ☓ | ☓ | 作業の価値に対して通信料金がボトルネックになりがち。ややローカル向き |
| ML 学習 | ☓ | ○ | ☓ | ◎ | クラウドでやる場合通信料金よりGPU 料金が支配的。大規模から小規模まであらゆる学習がクラウド向き |
| ML 推論 | ○ | ? | ? | ○ | 低レイテンシが求められる場合はローカル向き。規模によってはクラウド向き。ローカルで使える推論用アクセラレータ NPU DPU など今まさに進化してる領域 |
| 動画、画像の視聴 | ☓ | ☓ | ☓ | ☓ | ある程度の性能があれば困らなさそう |
| 動画編集(エンコード) | ○ | ○ | ◎ | ☓ | CPU とメモリが特に必要。ハードウェアも使えると便利。通信量が大きくクラウドに向かない |
| 大量の動画をエンコード | ◎ | ◎ | ☓ | ☓ | 大規模な場合、ハードウェアエンコーダが必須。通信量が大きくクラウドには向かない |
| 文書作成、資料作成 | ☓ | ☓ | ☓ | ◎ | 10 年前の PC でも困らなさそう |
| ソフトウェアのビルド(コンパイル、リンク) | ☓ | ☓ | ○ | ◎ | ある程度の規模を超えるとクラウドにオフロードしたほうがいい |
| プログラミング | ☓ | ☓ | ☓ | ◎ | 10 年前の PC でも困らなさそう |
| ゲーム | ◎ | ○ | ◎ | ☓ | (ゲームはやらないけど)キャッシュメモリを増やして時間あたりの命令実行数を増やすのが重要っぽい。ローカル PC の性能が大事 |
これはあくまでも自分にとってだけど、次の PC は ML の推論、動画編集、動画エンコードに構成していけばいいことがわかった。
上のことから、次のパソコンはGPU やアクセラレータが重要で CPU の性能は必要なさそう。今後はなるべくグラボなどをアップデートしながらその他のパーツを長く使うことを意識したい。

必要なソフトウェアが提供され、グラボの交換ができれば今のMac は性能的には 10 年は使えた のではないだろうか。
自分が今買い替えを検討している理由は、自分の PC の拡張性の問題と、x86mac の「ユーザ数の先細り」の問題なのだ。
次の PC は 10 年買い替えないでいいものにしたい。そう思った。
その上で、 10 年使える PC とはどのようなものだろうか。
上のようなことを考えるとMac はよくないだろう。GPU の増設すら難しく拡張性もない。買い替えサイクルも早い。
結論としてLinux。10 年の安定を手に入れたい
まず、候補としてはサーバサイドでよく使われるUbuntu,Debian,Redhat系 、最近よく名前を見る ArchLinux このあたりで悩んだ。
調べたところRedhat 系はUbuntu,Debian, ArchLinux と比べてあまりユーザコミュニティの活気がない気がしたのでRedhat 系は一旦除外。
Debian とUbuntu だと「ユーザの規模」や「オープンソース以外のパッケージの存在」からUbuntu が良さそうだと思った。
ArchLinux のローリングリリースはめちゃくちゃいいなと思った。Ubuntu だと「Ubuntu 24.04 だと〇〇」のような議論になりがちだけど、ローリングリリースだとそうはならないだろう。ちゃんとした要件を議論できそう。
実際、ネット上の有用な情報は ArchLinux のコミュニティやWiki から得られることが多いように思う。

上のように ArchLinux にかなり魅力を感じた。だが色々悩んだ末Ubuntu を選択した。
理由はUbuntu が「営利企業が多く使っているディストリビューション」であり市場的に保守される可能性が高いこと。
ただ、 ArchLinux は本当に良さそう。次に OS を入れ替えるときには ArchLinux を選ぼうと思った。
Ubuntu に移行して良かったこと、良くなかったことを書いておく。
github とかにあるようなオープンソースのツールのビルドの成功率も問題解決も圧倒的に楽になったと感じる。
これは何故なのかわからない。自分の使うツールの特性か、それともオープンソースの開発者はLinux を使っている人が多いのだろうか。
Mac のときは「XCode で入れられた〇〇」と競合するみたいなのがあったりした。 clang とかはLinux でもMac でもそう変わらないと思う。
あと特にGoogle のオープンソースライブラリのビルドはLinux になってかなり楽になった。Google が使ってる bazel はその特性からプロプライエタリなものを混ぜると使いにくい。
プロプライエタリな製品は不具合があまりオープンに議論されない。アカウントマネージャやソリューションエンジニアとの間でクローズドで解決することが多い。
オープンソースなソフトウェアは議論のログやパッチがオープンにされることが多く、それらの資産が個人にも届く形で残ることが多い。それによって不具合があっても個人で修正できることが多い。
逆にオープンソースであっても大きなコミュニティがなくなれば急速に問題解決が難しくなると思われる。企業も含めて多くのユーザが使っていることが問題の解決をかんたんにしている。特に問題があったときに企業で使う人たちの上げる issue に助けられることが多い。
他の環境では「OS」とひとまとめにされる部分も細かく分かれていて、それらのコンポーネントの依存関係によってソフトウェアの要件や前提条件を詳細に認識しやすい。
たとえばGUI アプリケーションへの入力がおかしければ以下のようにコンポーネントを分けて考えることができる。
ユーザが認識できるコンポーネントの粒度が細かいので、それぞれの境界でどのような入出力があったかを調べることで問題の原因を特定しやすい。
たとえ、画面全体がフリーズしてもテキストモードに移行してディスプレイサーバを再起動することもできる。これもちゃんとユーザがその境界を認識できているからであると思う。
過去Mac を使っているとき、よくわからないデーモンがあって「それが悪い」と決めつけるみたいなことをよくしてしまっていた。
多くの部外者が関わるので開発者が設計やコンセプトや妥協点を残していることが多い。開発者に直接話しかけることもできる。
プロプライエタリなソフトウェアだと「なんでこうなったの?」っていうのが分からずモヤモヤすることが多かった。また、方針が分からず、今後使い続けるか判断する材料が乏しかったというのがあった。
個人的な指向ではあるかもしれないけど最近のML のタスクは「短時間で単価の高い高性能なクラウド環境でやる」っていうのが良いと思っていて、頻繁に Cloud TPU などを使っている。
Cloud TPU の一番安いインスタンスだと Docker コンテナとかは使えず、ある程度固定された環境だったりする。これまでローカルとの違いでデプロイした先で挙動が違ったりすることがたまにあった。
クラウドはLinux を使うことがほとんどなので、ローカルもLinux だとやっぱり便利だと思った。
Linux で一番困ったのがファイル名が 255 バイトだとカーネルに書かれてしまっている。これには自分はかなり困ってしまった。
Mac やWindows でも文字数制限はある。だがLinux では文字数制限ではなくバイト数制限なので特にマルチバイト圏の人たちが困る
ただ 255 バイトというのは日本語でもそれなりの情報を書くことができる。なので新規にLinux を使う人は困らないかもしれない。ただ、これまでの環境の大量のファイルを単純にLinux に移行できないのはそれなりに大変だった。
Mac の Finder のようなよくできたファイル管理アプリはLinux にはない
Finder は素晴らしいアプリだと知った。カラムのソートとか、カラムで扱える情報量とか、最後に開いた日時とか、ドラッグドロップでできることの多さとか。とにかく洗練されていたと気がつくことができた。
要はAdobe CC がないって話である。他にもWindowsMac だけにツールを提供している企業は多い。特にクリエイター系のツール。
(ただ俺達には gstreamer があり、 mediapipe があり、オープンな ML ネットワークがある。コードを書く前提なら、クリエイティブな作業を自動化や効率化させるというところではLinux のほうが頑張れる!!!!(といいな))
iOS のアプリの開発とか開発環境がロックされるケースは困る。ビジネスツールでWindows 系しか使えないものもあるんだろうと思う。
なので会社でMac を使うことになりがちである。
普通にソフトウェアをビルドして導入すると、 ldconfig を通じてシステムの DLL を使うことになる。まあそれでもいいのだけど、そのシステムの DLL 、厳密に想定されたものですか? という問題は残る。
根本的に解決するとしたら、すべてのライブラリがバンドルされたバイナリとしての配布するとか、 bazel のように依存関係の一致を hash 値で確認してビルドされることが一般的になるのがいいことなのかもしれない。
ただ、それが幸せかはわからない。
Linux でも Flatpak や Snap や AppImage などがあるがWindows やMac のそれと比べると若干使いにくい(ファイル選択ウィンドウとか)

Copilot + PC のようなものが業務効率に直結するようになったら、もうLinux はかなり厳しいだろうなとおもう。そうなったら Near PC Computer としてLinux をローカルに置いて AI 指向の OS を使うことにしよう。
次に「Linux やめた」となるとしたらこの方向性の可能性が高そう。

GLib は C 言語のライブラリで、他の言語からも使いやすい形で DLL (GLib Module と呼ばれる) のエクスポートができたり、 C 言語の枠内でオブジェクト指向プログラミングすることができたり、GUI と連携するイベントドリブンなプログラムをかけたり、まあプログラミング観点ではAppleScript というよりObjective-C に似たものだ。
ただ、使う場所という点でいうと AppleScirpt と似ている。
Mac で AppleScirpt やAutomator を書いてたくらいにはこれから GLib を日常的に使うことになるんだろうんなと思っている。
GLib は gstreamer とかでも使われてるし、勉強してもいいかなとは思える。
頻繁ではないがMac と比べると問題が起こる頻度は高い。
画面が固まってディスプレイサーバを再起動したり、 Files が落ちたり、システムのデーモンが起動しなかったり、グラボつけたら udev がX11 に勝手に変えていろいろなアプリを設定しなおしたり、とにかく問題は起こる。
ただ、自分はこれらの問題を愛せている。なぜなら原因がちゃんと分かるから。
原因がわからないと影響範囲が確定できずに疑心暗鬼になる。原因がわかれば「ちゃんと想定した問題が起こっている」とすら思える。そういうものだと思ってる
全体としてはかなり良かったと思っている。
まず、プログラミング環境や実験環境として最高であること。
そして、最新のオープンソースのソフトウェアを導入するのが楽しくなったこと。そして、問題を愛する心が生まれたこと。
Linux デスクトップ楽しいですよ!みなさんも使ってみませんか?
(ここからはおまけです)
拡張性が大切だ。市販品はケースは省スペースに作られていて不器用な自分には拡張が少しむずかしそうに思えた。
CPU は弱くてよく PCIe スロットへのアクセスは重要だ。
いろいろこだわりがあるので、パーツを選んで自作することにした
備考欄に選定したポイントを書いた。
| 種類 | 製品 | 当時の時価(円) | 備考 |
|---|---|---|---|
| CPU | Ryzen 7 7700 | 45043 | 必要十分。TDP が低い |
| マザーボード | MPG X670E CARBON WIFI | 49664 | デバッグ LED 最高。公式で動作確認されたメモリの数が多い。 CPU がなくてもBIOS のアップデートができる。BIOS の更新早い。ソフトウェア的な努力を感じられる |
| メモリ | CP2K16G56C46U5 | 13794 | 2枚組。オーバークロックを売りにしているメーカーが多い中JEDEC 準拠へのアピールが好感 |
| SSD | 990 PRO MZ-V9P2T0B-IT | 23350 | フル書き込み特性(後述)を見るかぎり、どのような状況でも安定して速度が出る。容量が小さくなるとキャッシュを減らしたりGC が頻発して速度が出なくなる製品が多いが、この製品は非常に優れている。SSD に PCIe 5.0 は不要であると判断(後述) |
| グラフィックボード | GeForce RTX 4070 SUPER 12G VENTUS 2X OC | 104240 | Nvenc のAV1 ハードウェアビデオエンコーダが 2 個搭載されていると思って購入したけどはてなブックマークなどの指摘により 2 個搭載されていないことに気が付きました。指摘ありがとうございます!RTX 4070 Ti SUPER がいいらしいです。ぴえん。一旦、このグラボを使い尽くしてから買い換えるかも! |
| CPU クーラー | AK400 | 3680 | Ryzen 7 7700 を冷やせる中で、メンテ性、静音性、価格の安さで選んだ |
| ディスプレイ | Dell S2722QC | 46799 | 4K 60Hz を満たす 27inch の一番安いもの |
| ケース | The Tower 500 | 19736 | 容積が大きい。工具なしでケースの側面全面を開放できる。ケーブルの取り回しが良い。ファンがたくさんつけられる |
| ケースファン | いろいろ | 5520 | 下から上に風が登るようにケース内の温度を見ながら調整した。中のファンほど静音性は犠牲にできる |
| HDD | データセンタ用の HDD の中古 | 42234 | 合計 28 TB。ebay でデータセンタで使われてた中古 HDD 14TB を二個買った。これまでもデータセンター用の HDD を ebay で買ってきたけどとてもコスパ良い |
| 電源 | MPG A1000G PCIE5 | 21245 | ビデオカードの買い替えは今後もありそうなので、未来のGPU のピーク電圧を考えてATX Power supply design 3.1 規格に準拠したもの(後述) |
ほぼ完成した感じはこんなの。
| 正面 | 側面 | 裏面 |
|---|---|---|
![]() | ![]() | ![]() |
とても拡張性が高くてケーブルの配線とかが簡単だった。今後、容積がかなり大きいのでどんな機器でも収まりそう。

初期不良を期間中に確認するためにある程度価格を度外視してそれぞれのパーツが近い日時に送達されるように PC ショップを選ぶ必要があった。これは、一台目の自作の場合はある程度しょうがないことかもしれない。
数時間で値段がコロコロ変わる。 PC パーツの最安値をみていると本当に頻繁に変わる。これを追っていたらいつまでも買えないので、価格はある程度安ければあまり気にしないほうが良い。コストを考えずに「高くてもいいや」「失敗したらもう一個買うしいいや」などとにかく心理的な安全性を高める考え方をした。

会社でサーバを組み立てたり拡張したりというこをやったことはあったが、自分一人で PC の構成を考えたり組み立てたりするのは、思えば初めての経験だった。なので、色々と座学をした。

書き込み増幅 (Write Amplification)
カタログスペックは当てにならない


チップセット(PCH)
CPU とチップセットの機能を確認したあとマザーボードを選ぶ
デバッグ LED
空冷とか水冷をちゃんと整理。
| 一般的な呼称 | 寿命 | メンテ性 | 熱の移動 | 冷却 | 備考 |
|---|---|---|---|---|---|
| 空冷 | ◎ | ◎ | なし | CPU にファン | 一番シンプルこれで冷やせるなら文句ない |
| 空冷(ヒートパイプ) | ○ | ◎ | ヒートパイプで移動 | ヒートパイプにファン | ヒートパイプで熱を移動させ比較的大きなファンを使える |
| 簡易水冷 | △ | ○ | 流水で移動 | ラジエータにファン | ヒートパイプより大容量の熱を移動できる。最近のはメンテ性も良い? |
| 本格水冷 | △ | ☓ | 流水で移動 | ラジエータにファン | ヒートパイプより大容量の熱を移動できる。 PC を拡張するときに色々バラすのがめんどくさくて「やめとけ」って言われることが多い |
| 液浸 | ? | ☓ | 沸騰による滞留で移動 | ラジエータにファン | スーパーコンピュータとかで使われているのを見た。沸点で熱を奪って移動もしてくれるので物理的にかなり理にかなってる気がする |
まず、「水冷だから冷える」というのは単純すぎる。結局冷えるのは「熱をいかに周辺温度の低い場所に移動させるか」「ファンでいかに冷やせるか」で、一般的に水冷が強いのは熱源と遠ざけるのが速く、性能の良いファンをつけやすいから。
基本的にTDP で決めればいい。- CPU のTDP (熱設計電力)が、クーラーの targetTDP 以下に収まっているか- 条件を満たす中で以下のニーズを検討してくーらーを決める - メンテナンス性 - 静音性 - 寿命の見積もり
熱は物理的に CPU の寿命を縮めるので、ちょっと余裕を持ちたい。
色々と写真をたくさんのせておく。
このブログを読んでいる人の多くに役に立つかはわからないけれど、今回いろいろ組み立てるにあたって自分と同じパーツで作業している人の画像を見たりすると少し失敗への不安が減る感覚があった。
なので、誰かのために載せておきたい。

Dell S2722QC のセットアップ
| 開封 | 組み立て | ドット欠けチェック |
|---|---|---|
![]() | ![]() | ![]() |
他にはHDMI ケーブルはテレビとかに繋いで単体テストをした。
ケースThe Tower 500 も開封して、マザーボードとの配線レイアウトが物理的に問題ないか確認しておく
開ける
| 箱。大きい... | 本体 |
|---|---|
![]() | ![]() |
フロントパネルとそのフロントパネルから伸びているピンを確認(マザーボードに刺さるものが多く出てるはずなので)。
| フロントパネル(ここから右のピン達が出てる) | LED とスイッチのピン | ヘッドホンやマイクのピン | USB 3.0 のコネクタ 2 つ | USB-C のコネクタ 1 つ |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
工具なしでパカパカあける(ちょっと固い部分もあるので、念のためドライバー(2番)もあってもいいかも、特に下の裾っぽいところが固かった)

その他の付属品(説明書とかは省略)
| 120mmファンx2 | 電源固定金具 | ラジエータやファンをカスタマイズして付ける金具 | 束ねるやーつ | マザーボードのエラーを教えてくれるビープスピーカー |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
| マザーボードのネジ穴(スタンドオフ、スペーサ) | ドライバで六角を回すやつ | ATX電源用のネジ | ハードディスクのネジ穴に付けるもの(振動対策?) | その他 2 種類に統一された多目的ネジ(形が違うので説明書に用途ごとにネジの絵で記載してある。かしこい) |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() ![]() |
マザーボードの説明書をダウンロードしてきて、物理的なコネクタの位置や配線関係が記載されたページを印刷して確認しておくと良い。
| こういうのを印刷 | 物理的な配置を確認して配線場所からピンを出しておく |
|---|---|
![]() | ![]() |
マザーボードや CPU の動作確認を行うためにも電源は必要なので、電源ユニットMPG A1000G PCIE5 を開ける
| 箱 | 本体 |
|---|---|
![]() | ![]() |
ケーブル類
↓まず CPU 用(CPU には直接させないのでマザーボードに刺す。 CPU に安定した電圧をかけるためのVRM という回路がマザーボードに実装されている)
| CPU 電源用 2本(大電力の CPU だと 2 本使う) | 電源側 | マザボ側 |
|---|---|---|
![]() | ![]() | ![]() |
↓PCIe 機器用(グラボは 12VHPWR のやつ使うからそれ以外)
| PCIe 補助電源 2 本(150Wまでいるやつ) | 電源側 | 機器側 (二股に別れてる) |
|---|---|---|
![]() | ![]() | ![]() |
↓グラボ用の大電力用(下のどっちか)
| 12VHPWR 1 本 (600Wまでいけるやつ) | コネクタ部分(たしか右のコネクタが電源側) |
|---|---|
![]() | ![]() |
| 電源側だけ 12VHPWR で機器側は PCIe 補助電源 1 本(たぶん 2 本合わせて 300W までなのかな) | 下のほうが電源側、機器側は二股に別れてる |
|---|---|
![]() | ![]() |
↓SATA 用(2.5 inch とか 3.5 inch とかの HDD やSSD をつなぐやつ)
| SATA 電源 3 本 | 電源側 | 機器側は電車の駅みたいにレールの途中にコネクタがついてる |
|---|---|---|
![]() | ![]() | ![]() |
↓なぞのケーブル
| ペリフェラル、フロッピーディスク電源 1 本 | 電源側 | ペリフェラル機器 2 つ | フロッピーディスク側 1 つ |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
↓マザーボードにガッチリさすやつ。
| マザーボードの電源 | 電源側 (28ピン) | マザーボード側 (24ピン) |
|---|---|---|
![]() | ![]() | ![]() |
その他の付属品は以下(説明書とかは省略)
| 家庭用 100V 交流用ケーブル | ケーブル入れ | ケースにもついてたATX電源用の固定ネジ |
|---|---|---|
![]() | ![]() | ![]() |
コネクタはピンの本数が同じもの同士は刺す位置が入れ替わっても問題ないようになっている。なのでそこまで心配する必要はない

CPU のテストをするために CPU クーラーAK400 も先に開封が必要だ。
| 箱 | 開封 |
|---|---|
![]() | ![]() |
| ファンとヒートシンクを分離 | こういう金具でファンが引っかかってるだけ | ファンは 4 ピンコネクタでマザボとつながるよ |
|---|---|---|
![]() | ![]() | ![]() |
↓CPU とくっつける際の金具(あとで使う)
| Intel 用 | AMD 用 |
|---|---|
![]() | ![]() |
グリスは塗ってあった
| グリスはもともと塗ってあった | 自分は別で買ってしまったので無水エタノールで拭いてこっち使った |
|---|---|
![]() | ![]() |
(説明書とかは省略)
マザーボードMPG X670E CARBON WIFI は CPU がなくてもマザーボードだけでBIOS のアップデートができるので USB メモリに入れておく。
BIOS は CPU に向けたアップデートされる。それなのに CPU を接続しないとBIOS のアップデートができないマザーボードが多い。これだと未テストの環境でBIOS が動くことになる。
BIOS アップデート機能がマザーボードについていると安心できる。
MSI の場合、マザーボードのサポートページ(簡単にググればでてくる)からBIOS ファイルをダウンロードする。

ダウンロードしたファイルを解凍すると以下のようなMSI.ROM というファイルが入っている

これをFAT32 でフォーマットした USB メモリのルートディレクトリにポンと置いておく

マザーボードMPG X670E CARBON WIFI を開封する
| 箱 | マザボ |
|---|---|
![]() | ![]() |
その他の付属品(説明書とかは省略)
| SATA ケーブル(電源じゃなくて通信の方) | 光らせる系のケーブル(詳しくない) | アンテナ(バックパネルに付ける) | M.2 を引っ掛けて固定するネジ | ツール群(Windows 用?使ってない) | シール |
|---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
↓デバッグ LED これが自分にとっては最重要。

バックパネルの写真がなかったので公式ページから引用

左の方にBIOS をアップデートするためのボタンがある。
CPURyzen 7 7700 を開封する
| 箱 | 中身 | 本体 |
|---|---|---|
![]() | ![]() | ![]() |
CPU クーラーが付属していたけど、自分で買ったので付属のやつは使わない。
説明書を見る

BUZZER とか SPEAKER とか書かれている。フロントパネルのイヤホンとつながる部分はもっと密集したピンになっているので SPEAKER と書いてあっても 4 ピンならビープスピーカの可能性が高い
| これを | ここに | こう |
|---|---|---|
![]() | ![]() | ![]() |
現代のBIOS はUEFI のフェーズの順に初期化プロセスが行われる。そしてデバッグ LED でそのフェーズ上どこまで処理が進んでいるか。どこで停止したか。エラーの ID などがわかる。
| このスイッチを ON になっているか確認 | これがデバッグ LED |
|---|---|
![]() | ![]() |
CPU が最初の命令をフェッチする前にBIOS は新しくあってほしい。マザーボードだけでBIOS アップデート出来る場合はする。
↓電源とマザーボードだけをつなぐ

↓BIOS とかかれた USB ソケットに前述したBIOS が入った USB メモリを挿して

↓電源ユニットを通電して


完了するまで待つ
ケースに組み込む前にマザーボードと CPU のテストをするので、それ用にスイッチをつける。
| これを | ここに | こう |
|---|---|---|
![]() | ![]() | ![]() |
| パカっとあけて | のせて | とめる | 上の黒いカバーが勝手に外れる |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
固定具を付ける
| 黒いの外して | オレンジの付けて | 銀色の付けて |
|---|---|---|
![]() | ![]() | ![]() |
グリスはマスキングテープと定規できれいにぬった(普通にのっけるだけでいいらしい)

うとぅくしい....
| ヒートシンク付けて | ファンを金具で固定 |
|---|---|
![]() | ![]() |
ファンの向きは大事なので、要確認。羽が膨らんでるほうが吸気方向。
| これを | この | ここに | こう |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
自作パートではここがたぶん一番重要。
CPU とマザーボードと電源だけでテストを行う。(メモリはつけない)
できるだけ最小構成で、UEFI (BIOS) のフェーズがメモリエラーまで進むことを確認する(前述)
これはプログラムでいうHello world! にあたるテストで、ここが成功すればこの後の作業が二分法での問題の特定が可能になる。
ここが一番大事な瞬間である。
ここからの作業はマザーボードの説明書を印刷しておくと作業が捗る。
まず、今の状態。メモリが刺さってなくて、 CPU、 CPU クーラー、マザーボード、電源、スイッチ、ビープスピーカー、がつながっている状態。

↓説明書を確認して 10 が出れば成功ということを認識する

↓電源ユニットを通電して、スイッチを押す。

↓ちゃんとエラーを起こす。 10 が出れば CPU はUEFI の PEI フェーズまで問題なく動いていることになる。

10 番のエラーが出ている!そして、ビープ音がピー、ピー、ピーとなっている。メモリがないことを示している。
正しく動いている!!!!
メモリは付属品とかもないので、シンプル

メモリは枚数によって付ける場所が決まっているので確認して
こうして

こう

グラフィック内蔵 CPU だとこの時点でグラボも刺さなければならないので、グラフィック内蔵 CPU のほうが細かいステップで確認しながらセットアップできて好き。

上の用にHDMI と USB キーボードと USB マウスを挿した。
CPUマザーボードをテストしたときのスイッチを押して、画面が表示されるのを待つ

メモリも問題なく動いていてBIOS がほぼ最後のフェーズまで起動することが確認できた。
| USB で OS をインストールするための Boot 設定 | Advaced -> Security -> Secure Boot を切っておく(ちゃんと Boot イメージを署名しないと駄目だと思うので) |
|---|---|
![]() | ![]() |
この時点で Boot イメージに署名する方法とかがあるのかは知らない。
M.2 も付属品はない。
| 箱 | 中身 |
|---|---|
![]() | ![]() |
取り付け
| ここを | 外して | サーマルパッドのシールを剥がして | つける | とめる |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
| 蓋もサーマルパッドがある | はずして | とめる |
|---|---|---|
![]() | ![]() | ![]() |
色々と確認は終わってるのでケースに入れる
↓まず電源
| ここの金具を外して | 電源につけて | ケースに戻して付け直す | GPU と CPU とマザボのケーブル挿して | 表に出しておく |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
この際にマザーボードのレイアウトがあると便利
↓次マザーボード
ATX サイズだと基本スタンドオフ(スペーサ)はかえなくていい
| 止めるネジ確認 | 置く | こういう点々の印の穴 9 箇所に | ネジ止め | 止めた |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
↓ケーブルつなぐ。もう事前にケーブルは出ているので刺すだけ
| USB | USB | フロントパネル | USB C | マザーボード主電源 | CPU 電源 2 個 | フロントパネルのイヤホン |
|---|---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
で、フロントパネルとグラボの電源以外の電源はつながった状態。

ケースファンを付けるときはマザーボードの SYS_FAN<番号> などと書かれているコネクタの位置を確認して、分岐ケーブルを揃えたり配線の取り回しを先に図として書いておくといいです。
| 背面 | 天板 | マザーボードとグラボに空気を送る位置 | 下から室温取り込み | ケースとつなぐ |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
ケースファンを接続した SYS_FAN<番号> の番号を覚えておくと、ファンの設定をするときに使えます。
後日: ファンの設定
デフォルトだと温度による制御が聞いていなかったのでPWM 制御の設定をしておいた
「Hardware Monitor」というボタンからファンを個別に設定できる。基本的に最近のファンだとPWM 制御でいいとおもっている。
| これを | つけた |
|---|---|
![]() | ![]() |
| 箱 | 中身 |
|---|---|
![]() | ![]() |
つける
| ここを | 2スロットはずして | こうはめて | 電源つなぐ |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |

つかれた〜〜!パソコンできました!
後日: ハードディスクが届いた
普通に電源につないだのだけど、少しだけハマったので書いておきたい
以下のように普通に電源とつないだ時に動かなかった
これはデータセンター向けの POWER DISABLE という、電源を制御するための機能を持っている HDD だからのようだった。
説明書もついてた
電源とケーブルとつなぐとその制御のピンに定格 3.3 V の電圧提供に使われていてそのせいで電源が入らなくなってしまう。
この HDD についていた 3.3 V ピンを繋がないためのケーブルを噛ませることで、電源が入った
このカラフルなやつを間に噛ます
認識された
今回、先にレイアウトを見ておいてマザーボードを置く前にだいたい配線をすませておいたのが楽だった。
これといってハマったポイントはなかったけど、値段が高い部品を触っているときの心理的安全性が低かった。10 年使うものだしパーツの一個や二個は誤差という気持ちで頑張った。
少しずつセットアップしてるので、やっととこまで
Ubuntuを入手する | Ubuntu | Ubuntu にいく

ubuntu-24.04-desktop-amd64.iso というファイルがダウンロードできる。あたりまえだけどamd64 それは命令の種類の話でintel でもamd64 で大丈夫だ。(念の為)
以下はMac で作業。 iso の内容をまるまるコピーした USB メモリを作る。
USB メモリを挿して diskutil list をして、その内容から USB メモリを表す/dev/disk<番号> 探す。
$ diskutil list.../dev/disk<番号> .......
アンマウントする
$ diskutil unmountDisk /dev/disk<番号>
dd で上から下まで iso の内容をコピー
$ sudo dd if=<ダウンロードしたファイル名> of=/dev/rdisk<番号> bs=4M status=progress && sync
ここで/dev/disk<番号> ではなく/dev/rdisk<番号> になっていることを確認する
Mac の場合だと /dev/disk<番号> だと中間にレイヤがあり、めちゃくちゃ遅くなる。
$ sudo gpt -r show /dev/disk<番号>
こうしたときに C12A7328-F81F-11D2-BA4B-00A0C93EC93B という行が途中に見つかればブートできる可能性が高い。
BIOS (UEFI) は、パーティションの種類として C12A7328-F81F-11D2-BA4B-00A0C93EC93B という固定値を持つパーティションを探してそこからブートするので
組み立てのときにブートの設定を買えていると思うので USB メモリからブートして「Ubuntu インストール用のUbuntu」が起動する。
振り返り
BIOS の設定で以下のように USB から起動するように設定されていることが前提
以下のような画面が出る


とりあえず English。(英語のほうがググったときに情報量が多い

キーボードレイアウトの設定。自分はDvorak なので English (US) - English Dnvorak を選択。早い段階で設定できるのでその先の打ち込みが楽になって良い。

ネットにつなげて

インストーラ自体も update

インストーラが更新されてるので再起動してやりなおし。
その後、ネットにつなげるところまでやり直して

Interactive Installation を選択

Default selection

third-party software も media format も使いそうなので、両方チェック

空のSSD を挿してるので Erase disk and installUbuntu

ユーザ名とパスワードは個人でいつも使ってるやつを入れて

タイムゾーン設定して

設定の内容を確認して Install ボタン
少し待って

完了したので Restart now で再起動

再起動でもう一回インストーラが起動しないように、刺さってたら抜けって教えてくれた。

起動して、ログイン画面。


左のバッグみたいな App Center メニューから

Install からインストール

完了したら左下の Show Apps から確認できる


左下の Show Apps から

Terminal を起動でき、bash というシェルを打ってコンピュータを操作できる

起動中に左側で Pin to Dash とすると、今後は左から起動できるようになる。
fcitx5 と mozc をインストール(fcitx5-mozc で両方入る)
im-config -n fcitx5 としてデーモンとして起動するようになる。
で、 reboot
$ sudo apt install fcitx5-mozc$ im-config -n fcitx5$ reboot
reboot すると

右上にこんなメニューがでるので

そこから config を選び、左半分のペインを mozc と英語を入力するためのレイアウトを選択してあげる。自分はDvorak なので、 English のところは English (Dvorak) と書いてあるやつになってる。

日本語打てた
Chromium はユーザがディスプレイサーバとして何をつかっているかを教えないと、 fcitx5 のデーモンとやりとりしてくれないので、設定する必要がある。
ディスプレイサーバとはGPU やキーボードやマウスと、ディスプレイマネージャやGUI アプリの仲介をするレイヤで wayland とx11 がある。
ターミナルから
$ echo $XDG_SESSION_TYPE
とすると wayland かx11 かが表示される。GPU の選択とかで変わったりするので一概にどちらかとは言えない。
それを確認したら

Chromium のアドレスにchrome://flags と入力し、 PreferredOzone Platform という設定をx11 か wayland か自分のディスプレイサーバに設定する。
一応、自分はこれで入力できたが。
Chromium の開発の issue を見ていると wayland では苦労しそうで、 wayland の text-input v3 のイベントをChromium がサポートしていないようだった。今後のリリースで少し使いやすいオプションが提供されるようだ。

Chromium + wayland で日本語入力ができない場合、修正を待つ間Firefox を使うのも手だし、Chromium の nightly ビルドなどを使ってみるのも良いかもしれない。
自分もちょっときになったので試してみた。 nightly で以下のオプションをつければ日本語入力できることは確認できた。
$ chromium --enable-wayland-ime --wayland-text-input-version=3

Chromium にはChrome のようなクラウドにパスワードを保存する機能がないようだったので 1Password を導入した。



公式のgithub から nvim-linux64.tar.gz をダウンロードしてきて
$ tar xvfz ~/Downloads/nvim-linux64.tar.gz
解凍して、
$ sudo mv nvim-linux64 /opt
とりあえず /opt に置いておいた

~/.bashrc にも書いた

一旦雑に.config/nvim/init.lua も上のようにしておいた
ポータブルなバイナリとして配布されていて素晴らしいなあと思った。
オープンソース版のドライバが入らないように/et/modprobe.d/blacklist-nouveau.conf に

Nvidia のドライバやライブラリのダウンロードに関しては、調べるといろいろと情報が分散して古かったりもするし、あまり URL を直で語らない方がいいように思った。常にトップページからたどるのがおすすめ

このドライバをダウンロード

CUDA の互換性を調べて

CUDA のバージョンをナビゲータにしたがって選んで

インストールするためのコマンドが出てくるのでそれにしたがってインストール

Pytorch とかから使われる cudnn も同様にナビゲータに従ってインストール(コマンド省略)
また、An Even Easier Introduction to CUDA | NVIDIA Technical Blog に書いてあるコードで、ちゃんと cuda が動くか

確かめたりした。

Max error: 0.000000 なら問題ない。今までの経験で CUDA のインストールが間違っていて 2.000000 となったこともあり、このコードには助けられた経験がある。おすすめ
$ sudo ldconfig
DLL がシステムに配置されるので、 ldconfig して使えるようにしておく
以下のように


上のように依存関係をリストアップしていれる。それを使うようにビルド。特に今回 cuda や nvenc の機能をちゃんとffmpeg から使えるように以下のようになった
$ ./configure \ --disable-static --enable-shared \ --ld="g++" \ \ --enable-gpl \ --enable-version3 \ --enable-nonfree \ --enable-cuda-nvcc \ --enable-libnpp \ --extra-cflags="-I/usr/local/cuda/include "\ --extra-ldflags="-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64/stubs" \ --enable-cuvid \ --enable-libnpp \ \ --enable-libsvtav1 \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx \ --enable-libfdk-aac \ --enable-libopus \ --enable-libdav1d \ --enable-libfontconfig \ --enable-libfreetype \ --enable-libaribb24 \ --enable-openssl \ --enable-libbluray \ --enable-libmp3lame \ --enable-libssh \ --enable-libtheora \ --enable-libvorbis \ --enable-libwebp \ --enable-libxcb \ --enable-libxcb-shm \ --enable-libxcb-xfixes \ --enable-libxcb-shape \ --enable-libxvid \ --enable-libxml2 \ --enable-openal \ --enable-opencl \ --enable-opengl \ --enable-ffnvcodec \ --disable-stripping \ --enable-nvenc \ --enable-nvdec \ --enable-cuda \ --enable-libvmaf
--enable-nvenc とか--enable-cuda--enable-cuda-nvcc などを追加している
実は上の libvmaf に関してはこのあとビルドする。順番が前後になってしまっているが、ゆるして欲しい。
configure したら make && sudo make install
$ make -j 16$ sudo make install
16 はスレッド数
$ sudo ldconfig
DLL も置かれるので ldconfig しておく
VMAF はnetflix が作った。エンコードした結果画質がどのくらい下がったかをスコア化するためのライブラリ。

コードをリポジトリからもってきて

上のように enable_cuda してビルド
ただ、少しコードを書き換えないとビルドはできるが実行時にクラッシュするようだった

こんな感じで実行するが

こんな感じでセグフォする。
セグフォしたらgdb で場所を特定

原因をとくていしてパッチを書いたのでComparing Netflix:master...amachang:master · Netflix/vmaf · GitHub からパッチを作って当てると動く(本家の issue にも連絡済み)
で、
$ meson setup libvmaf/build libvmaf -Denable_cuda=true -Denable_avx512=true$ ninja -vC libvfam/build
みたいにして libvmaf をビルドすることができた。
2000 Kpbs とかの動画同士だったら1800fps とかで VMAF が求められるようになったので、めちゃくちゃ快適である。
特にプラグイン管理の lazy の設定や copilot の導入、 language server の設定
Lazy の設定

Lazy から copilot を入れる

Lazy の設定書いて、Vim を再起動。

インストールされたらvim 上で :Copilot auth とやってブラウザで認証をする。
language-server の設定もなんやかんや書いた。

デスクトップポータルというアプリがデスクトップシェルの機能を使うための仕組みがあり、これを通じて各アプリが連携できるようになっている。
このデスクトップポータルがX11 なのに wayland を待ち続けて、そのポータルが必要なアプリも、タイムアウトするまで起動しない。という現象があるらしい。まだ治ってないらしい。
遅いのも最初の一回だけだし、原因がわかったし放置することにした。
ヘルプをみる

クリップボードがx11 と連携できるように unnamedplus を設定

これだけでは動かなかったので、ちょっと調べた
NeoVim は xsel というプロセスを通じてx11 のクリップボードと連携するようでその xsel がシステムに入ってなかったようだ
$ sudo apt install xsel
NeoVim で yank したものを他のアプリで貼り付けたりできるようになった
よくgnome-shell のデスクトップ環境だと Delete キーがいろんなもののショートカットになっていたけど、自分のキーボードには Backspace しかなかった。
ちなみに 14 年前のHHK を使っている。
Backspace を Delete キーにマッピングする機能がキーボード自体にあったが、それをすると今度は Backspace キーがなくなってしまい直前に打った文字が消せなくなってしまう。
で、 HKK をしらべていると fn + ` が Delete キーとして働くらしい。そうだったのか...。
今思うと
Mac だと Backspace が Delete と呼ばれていて Delete キーの存在自体を自分は忘れてしまっていた。
なんやかんやした(追記するかも)
最後まで読んでくれてありがとう!
この記事が、誰かの新しいことに挑戦する安心感や何かの問題を理解するのに役にたったら嬉しいです!
では!
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。