みなさまお元気ですか
暑さも少し落ち着いてきて、ようやく外に出てもいいかなという気になってきました。季節の変わり目体調には気をつけていきたいですね。
実は、一ヶ月くらい前に Linux PC を自作して Mac から移行しました。そのときの考え、その後の感想を残しておきます。
また、学んだことや作業のログを細かく残しておきたいと思います。(どこかの誰かが不安に思ったときに同じ失敗や疑問を経験した人がいて安心してもらえたら嬉しい)
目次
- Mac をやめるきっかけ、経緯
- Ubuntu に移行して一ヶ月の感想
- おまけ1: どのような PC になったか
- おまけ2: 事前に学んだこと
- おまけ3: PC の組み立て
- おまけ4: Ubuntu のセットアップ
Mac をやめるきっかけ、経緯
この 10 年くらい iOS 開発に必須ということもあり macOS を使っていました。
性能的には困ってない
今使ってる Mac は iMac 2020 でもう 4 年以上前のになるんですけど、性能的にはあまり困ってない。個人的には「10 年くらい困らなさそうだな〜」なんて思ってました。
これだけ長く一つの PC で困らないのは性能の向上が需要を上回ったというのもあるんですが。特に 近年は性能がいるタスクをクラウドでやるようになった というのも大きいかもしれません。ゲームとかやらないので、レイテンシ(反応速度)を求められる高度な処理があまりないというのもあるかもしれないです。
でも買い替えることに...
買い替えを意識したきっかけは、 2024/03/08 に出された tensorflow のこのアナウンスだった。
機械学習の開発が不便になるのは相当大きいことだった。
また別件ですが、あるフォーラムで 「誰がこれから無くなる x86 mac に時間をかけたいんだ?(意訳)」ってことを言われた り、まあ x86 mac は何かとコミュニティに見捨てられた環境であったりもした。
ということで、本気で買い替えを考え始めた。
まず、最近の PC にやらせるタスクを整理してみる。特にクラウドを使えるか、ローカルの PC でやる必要性があるか を考えた。
必要なローカル PC の性能って?
以下のように、求められるレイテンシやデータ量が多いもの、その中で計算量が多いものを中心にローカル PC の性能を決めればいいと個人的には思っている。
PC で何をするんだっけ?
で一般的な PC でやることを書き出して、自分が次の PC に必要だと思う部分を赤色でしめした。
タスク | ローカル PC の性能が必要 | GPU 使う | CPU 使う | クラウドにオフロードしやすい | 備考 |
---|---|---|---|---|---|
ML データセット前処理 | ○ | ◎ | ☓ | ☓ | 作業の価値に対して通信料金がボトルネックになりがち。ややローカル向き |
ML 学習 | ☓ | ○ | ☓ | ◎ | クラウドでやる場合通信料金より GPU 料金が支配的。大規模から小規模まであらゆる学習がクラウド向き |
ML 推論 | ○ | ? | ? | ○ | レイテンシが重要な場合はローカル向き。規模によってはクラウド向き。ローカルで使える推論用アクセラレータ NPU DPU など今まさに進化してる領域 |
動画、画像の視聴 | ☓ | ☓ | ☓ | ☓ | ある程度の性能があれば困らなさそう |
動画編集(エンコード) | ○ | ○ | ◎ | ☓ | CPU とメモリが特に必要。ハードウェアも使えると便利。通信量が大きくクラウドに向かない |
大量の動画をエンコード | ◎ | ◎ | ☓ | ☓ | 大規模な場合、ハードウェアエンコーダが必須。通信量が大きくクラウドには向かない |
文書作成、資料作成 | ☓ | ☓ | ☓ | ◎ | 10 年前の PC でも困らなさそう |
ソフトウェアのビルド(コンパイル、リンク) | ☓ | ☓ | ○ | ◎ | ある程度の規模を超えるとクラウドにオフロードしたほうがいい |
プログラミング | ☓ | ☓ | ☓ | ◎ | 10 年前の PC でも困らなさそう |
ゲーム | ◎ | ○ | ◎ | ☓ | (ゲームはやらないけど)キャッシュメモリを増やして時間あたりの命令実行数を増やすのが重要っぽい。ローカル PC の性能が大事 |
これはあくまでも自分にとってだけど、次の PC は ML の推論、動画編集、動画エンコードに構成していけばいいことがわかった。
CPU の性能はいらないかも
上のことから、次のパソコンは GPU やアクセラレータが重要で CPU の性能は必要なさそう。今後はなるべくグラボなどをアップデートしながらその他のパーツを長く使うことを意識したい。
10 年使える PC にしたい
必要なソフトウェアが提供され、グラボの好感ができれば今の Mac は性能的には 10 年は使えた のではないだろうか。
自分が今買い替えを検討している理由は、自分の PC の拡張性の問題と、 x86 mac の「ユーザ数の先細り」の問題なのだ。
次の PC は 10 年買い替えないでいいものにしたい。そう思った。
10 年使える PC の要件とは?
その上で、 10 年使える PC とはどのようなものだろうか。
- 大きめのタスクは基本クラウドで対応し、ローカル向けのタスクのみを考慮した設計にする
- 未来の ML の推論や動画のコーデック必要になる GPU やアクセラレータの拡張性を持つ
- ユーザの規模がそれなりに大きい OS やハードウェア規格
- 買い替え乗り換えサイクルが遅い OS やハードウェア規格(サーバで使われるものは特に遅い)
Linux にする
上のようなことを考えると Mac はよくないだろう。 GPU の増設すら難しく拡張性もない。買い替えサイクルも早い。
結論として Linux。10 年の安定を手に入れたい
ディストリビューションの選定
まず、候補としてはサーバサイドでよく使われる Ubuntu, Debian, Redhat系 、最近よく名前を見る Arch Linux このあたりで悩んだ。
調べたところ Redhat 系は Ubuntu, Debian, Arch Linux と比べてあまりユーザコミュニティの活気がない気がしたので Redhat 系は一旦除外。
Debian と Ubuntu だと「ユーザの規模」や「オープンソース以外のパッケージの存在」から Ubuntu が良さそうだと思った。
Arch Linux はどうか
Arch Linux のローリングリリースはめちゃくちゃいいなと思った。 Ubuntu だと「Ubuntu 24.04 だと〇〇」のような議論になりがちだけど、ローリングリリースだとそうはならないだろう。ちゃんとした要件を議論できそう。
実際、ネット上の有用な情報は Arch Linux のコミュニティや Wiki から得られることが多いように思う。
結論としては Ubuntu
上のように Arch Linux にかなり魅力を感じた。だが色々悩んだ末 Ubuntu を選択した。
理由は Ubuntu が「営利企業が多く使っているディストリビューション」であり市場的に保守される可能性が高いこと。
ただ、 Arch Linux は本当に良さそう。次に OS を入れ替えるときには Arch Linux を選ぼうと思った。
Ubuntu に移行して一ヶ月の感想
Ubuntu に移行して良かったこと、良くなかったことを書いておく。
良かったこと
ビルド難易度が低い
github とかにあるようなオープンソースのツールのビルドの成功率も問題解決も圧倒的に楽になったと感じる。
これは何故なのかわからない。自分の使うツールの特性か、それともオープンソースの開発者は Linux を使っている人が多いのだろうか。
Mac のときは「XCode で入れられた〇〇」と競合するみたいなのがあったりした。 clang とかは Linux でも Mac でもそう変わらないと思う。
あと特に Google のオープンソースライブラリのビルドは Linux になってかなり楽になった。 Google が使ってる bazel はその特性からプロプライエタリなものを混ぜると使いにくい。
自分で修正しやすい
プロプライエタリな製品は不具合があまりオープンに議論されない。アカウントマネージャやソリューションエンジニアとの間でクローズドで解決することが多い。
オープンソースなソフトウェアは議論のログやパッチがオープンにされることが多く、それらの資産が個人にも届く形で残ることが多い。それによって不具合があっても個人で修正できることが多い。
逆にオープンソースであっても大きなコミュニティがなくなれば急速に問題解決が難しくなると思われる。企業も含めて多くのユーザが使っていることが問題の解決をかんたんにしている。特に問題があったときに企業で使う人たちの上げる issue に助けられることが多い。
「OS」の粒度
他の環境では「OS」とひとまとめにされる部分も細かく分かれていて、それらのコンポーネントの依存関係によってソフトウェアの要件や前提条件を詳細に認識しやすい。
たとえば GUI アプリケーションへの入力がおかしければ以下のようにコンポーネントを分けて考えることができる。
ユーザが認識できるコンポーネントの粒度が細かいので、それぞれの境界でどのような入出力があったかを調べることで問題の原因を特定しやすい。
たとえ、画面全体がフリーズしてもテキストモードに移行してディスプレイサーバを再起動することもできる。これもちゃんとユーザがその境界を認識できているからであると思う。
過去 Mac を使っているとき、よくわからないデーモンがあって「それが悪い」と決めつけるみたいなことをよくしてしまっていた。
設計やコンセプトが読める
多くの部外者が関わるので開発者が設計やコンセプトや妥協点を残していることが多い。開発者に直接話しかけることもできる。
プロプライエタリなソフトウェアだと「なんでこうなったの?」っていうのが分からずモヤモヤすることが多かった。また、方針が分からず、今後使い続けるか判断する材料が乏しかったというのがあった。
クラウド環境と近い
個人的な指向ではあるかもしれないけど最近の ML のタスクは「短時間で単価の高い高性能なクラウド環境でやる」っていうのが良いと思っていて、頻繁に Cloud TPU などを使っている。
Cloud TPU の一番安いインスタンスだと Docker コンテナとかは使えず、ある程度固定された環境だったりする。これまでローカルとの違いでデプロイした先で挙動が違ったりすることがたまにあった。
クラウドは Linux を使うことがほとんどなので、ローカルも Linux だとやっぱり便利だと思った。
良くなかったこと
ファイル名の制限
Linux で一番困ったのがファイル名が 255 バイトだとカーネルに書かれてしまっている。これには自分はかなり困ってしまった。
Mac や Windows でも文字数制限はある。だが Linux では文字数制限ではなくバイト数制限なので特にマルチバイト圏の人たちが困る
ただ 255 バイトというのは日本語でもそれなりの情報を書くことができる。なので新規に Linux を使う人は困らないかもしれない。ただ、これまでの環境の大量のファイルを単純に Linux に移行できないのはそれなりに大変だった。
ファイル管理 GUI
Mac の Finder のようなよくできたファイル管理アプリは Linux にはない
Finder は素晴らしいアプリだと知った。カラムのソートとか、カラムで扱える情報量とか、最後に開いた日時とか、ドラッグドロップでできることの多さとか。とにかく洗練されていたと気がつくことができた。
マルチメディア系のソフトが弱い
要は Adobe CC がないって話である。他にも Windows Mac だけにツールを提供している企業は多い。特にクリエイター系のツール。
(ただ俺達には gstreamer があり、 mediapipe があり、オープンな ML ネットワークがある。コードを書く前提なら、クリエイティブな作業を自動化や効率化させるというところでは Linux のほうが頑張れる!!!!(といいな))
ベンダロックされたときに困る
iOS のアプリの開発とか開発環境がロックされるケースは困る。ビジネスツールで Windows 系しか使えないものもあるんだろうと思う。
なので会社で Mac を使うことになりがちである。
システム依存とアプリバンドル
普通にソフトウェアをビルドして導入すると、 ldconfig を通じてシステムの DLL を使うことになる。まあそれでもいいのだけど、そのシステムの DLL 、厳密に想定されたものですか? という問題は残る。
根本的に解決するとしたら、すべてのライブラリがバンドルされたバイナリとしての配布するとか、 bazel のように依存関係の一致を hash 値で確認してビルドされることが一般的になるのがいいことなのかもしれない。
ただ、それが幸せかはわからない。
Linux でも Flatpak や Snap や AppImage などがあるが Windows や Mac のそれと比べると若干使いにくい(ファイル選択ウィンドウとか)
今後 AI と OS が蜜結合になったら困る
Copilot + PC のようなものが業務効率に直結するようになったら、もう Linux はかなり厳しいだろうなとおもう。そうなったら Near PC Computer として Linux をローカルに置いて AI 指向の OS を使うことにしよう。
次に「Linux やめた」となるとしたらこの方向性の可能性が高そう。
なんとも言えないところ
AppleScript と GLib
GLib は C 言語のライブラリで、他の言語からも使いやすい形で DLL (GLib Module と呼ばれる) のエクスポートができたり、 C 言語の枠内でオブジェクト指向プログラミングすることができたり、 GUI と連携するイベントドリブンなプログラムをかけたり、まあプログラミング観点では AppleScript というより Objective-C に似たものだ。
ただ、使う場所という点でいうと AppleScirpt と似ている。
Mac で AppleScirpt や Automator を書いてたくらいにはこれから GLib を日常的に使うことになるんだろうんなと思っている。
GLib は gstreamer とかでも使われてるし、勉強してもいいかなとは思える。
問題がちゃんと起きる
頻繁ではないが Mac と比べると問題が起こる頻度は高い。
画面が固まってディスプレイサーバを再起動したり、 Files が落ちたり、システムのデーモンが起動しなかったり、グラボつけたら udev が X11 に勝手に変えていろいろなアプリを設定しなおしたり、とにかく問題は起こる。
ただ、自分はこれらの問題を愛せている。なぜなら原因がちゃんと分かるから。
原因がわからないと影響範囲が確定できずに疑心暗鬼になる。原因がわかれば「ちゃんと想定した問題が起こっている」とすら思える。そういうものだと思ってる
総評
全体としてはかなり良かったと思っている。
まず、プログラミング環境や実験環境として最高であること。
そして、最新のオープンソースのソフトウェアを導入するのが楽しくなったこと。そして、問題を愛する心が生まれたこと。
Linux デスクトップ楽しいですよ!みなさんも使ってみませんか?
(ここからはおまけです)
おまけ1: どのような PC になったか
拡張性が大切だ。市販品はケースは省スペースに作られていて不器用な自分には拡張が少しむずかしそうに思えた。
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 個搭載されていることが重要(後述)。その中でもっともグレードが低いものを選んだ |
CPU クーラー | AK400 | 3680 | Ryzen 7 7700 を冷やせる中で、メンテ性、静音性、価格の安さで選んだ |
ディスプレイ | Dell S2722QC | 46799 | 4K 60Hz を満たす 27inch の一番安いもの |
ケース | The Tower 500 | 19736 | 容積が大きい。工具なしでケースの側面全面を開放できる。ケーブルの取り回しが良い。ファンがたくさんつけられる |
ケースファン | いろいろ | 5520 | 下から上に風が登るようにケース内の温度を見ながら調整した。中のファンほど静音性は犠牲にできる |
HDD | データセンタ用の HDD の中古 | 42234 | 合計 24 TB。ebay でデータセンタで使われてた中古 HDD 14TB を二個買った。これまでもデータセンター用の HDD を ebay で買ってきたけどとてもコスパ良い |
電源 | MPG A1000G PCIE5 | 21245 | ビデオカードの買い替えは今後もありそうなので、未来の GPU のピーク電圧を考えて ATX Power supply design 3.1 規格に準拠したもの(後述) |
ほぼ完成したときの写真
ほぼ完成した感じはこんなの。
正面 | 側面 | 裏面 |
---|---|---|
とても拡張性が高くてケーブルの配線とかが簡単だった。今後、容積がかなり大きいのでどんな機器でも収まりそう。
その他、買ったもの
家にあって便利だったもの
- 電源ジャンパピンを短絡させる実験用スイッチ
- フロントパネルに接続する前にマザーボードの動作確認するときにあると便利
- ビープスピーカ
- エアダスター
- ホコリを飛ばすのにめちゃくちゃ使った
- キムワイプと無水エタノール
- ちょっと汚れが気になったときに使った
- クロス LAN ケーブル
- キーボード、マウス
- 14年前の HKK と Microsoft のマウスが動いた
買ってないけど買わないといけさそうなもの
- ウェブカメラ、マイク
- たぶん zoom とかする必要も出てくるだろうし何か買わないとなあ
パーツ購入時に大変だったこと
初期不良を期間中に確認するためにある程度価格を度外視してそれぞれのパーツが近い日時に送達されるように PC ショップを選ぶ必要があった。これは、一台目の自作の場合はある程度しょうがないことかもしれない。
数時間で値段がコロコロ変わる。 PC パーツの最安値をみていると本当に頻繁に変わる。これを追っていたらいつまでも買えないので、価格はある程度安ければあまり気にしないほうが良い。コストを考えずに「高くてもいいや」「失敗したらもう一個買うしいいや」などとにかく心理的な安全性を高める考え方をした。
おまけ2: 事前に学んだこと
会社でサーバを組み立てたり拡張したりというこをやったことはあったが、自分一人で PC の構成を考えたり組み立てたりするのは、思えば初めての経験だった。なので、色々と座学をした。
ATX (ケース、マザーボードのサイズ、電源の容量と特性)
- ATX specification 2.2
- ATX 3.1 Power supply design
- 上で述べた ATX は、電源に関する仕様も定義している
- 「ATX 電源」とは、この仕様にのっとた PC 用の電源であることを示している
- 電源に関しては寸法だけではなく、電源コネクタの形状、ピンアサインを仕様化している。
- 電源ユニットが持つべき電気的特性や機械的特性についても仕様化している。
- ATX power supply design は 2.x から 3.x へ最近 20 年ぶりにメジャーバージョンが上がった。
- 3.0 では GPU などが発するスパイク電流への耐性を仕様の中に盛り込んだ。
- 3.1 では、新たに GPU などの PCIe 機器に 600 W という大電力を供給するためのコネクタを定義した(16 ピンコネクタや 12VHPWR と呼ばれる。このコネクタやケーブルに対応していることを PCIe 5.0 対応電源と呼んだりもするようだ)
- 市場の製品は従来の PCIe 補助電源でも使えるようになっているが、将来的に 12VHPWR が必須となる時代が来るかもしれない
- ATX Power supply design の仕様を見ると現代ではほとんど +12V レーンが電力供給のメインであることがわかる(そのため +12V だけを供給してシンプルにするための ATX12VO などの仕様もでていたりもする)。なので、電力や電流の計算は主に +12V レーンに対して行えば良い。他の電圧 5V レーンや 3.3V レーンは 60W くらいあれば十分ではないかと思う。
- なので単純に +12V レーンの容量 = 電源容量と考えてほぼ問題はない
- あとは ATX Power supply design 3.1 準拠が必要かどうかを検討
CPU
- 電子回路的に CPU の仕組みを理解する
- ZEXぶらっく さんの「CPU」を「トランジスタで」作ろうシリーズが非常にわかりやすい
- www.youtube.com
- 周波数とコア数
- 周波数とコア数以外の部分
- 演算ユニットはマイクロコードを実行する
- CPU のチップの中には周辺機器のコントローラやアクセラレータも入っている
UEFI/BIOS
- CPU の回路は最初のクロックは何をフェッチするか
- UEFI とは
- UEFI のオープンソースの実装がある
- EDK 2 といって、割とこれを元に UEFI/BIOS を開発しているメーカーも多いんだと思ってる
- github.com
- UEFI はどこまで初期化されたかを段階(フェーズ)として定義している
- UEFI の理解は普通の PC ユーザにも役に立つ
SSD
- M.2
- M.2 はややこしい。 PCIe、USB 3.0、SATAなどいずれかのバスと機器をつなげる
- 機器によって対応する接続可能なバスの種類が決まっている。同じ M.2 でも「この機器は PCIe に接続される」とか、「この機器は PCIe か SATA に接続可能」とか決まってる
- スロット側(マザーボード側)にも「このスロットは PCIe のみ」とか「このスロットは SATA のみ」とか「SATA と PCIe」とか色々決まっている。
- Key といって、スロットの切り欠きの位置である程度レーン数などの成約を示すことができるが、 SATA か PCIe かは Key では示せない。
- なので M.2 は、マザーボード側で何に接続される M.2 スロットか、何に接続される機器かを確認する必要がある
- 上の図は SATA Express という M.2 のもとになった仕様の図を Wikipedia から引用している。このように M.2 は「PCIe や SATA や USB 3.0 に機器をつなぐためのスロットを共通にした」というものに過ぎないので、その上で「何をどのように繋いだか」が大事。
- NVMe, AHCI プロトコル
- PCIe 上でブロックデバイスと通信を行うプロトコル。
- 今までは AHCI という SATA 専用プロトコルを使っていた。
- NVMe デバイスは Block IO -> NVMe device というように NVMe ドライバが担当する領域が大きい。これは SCSI デバイスのレイヤで IO 要求が一つのキューで待たされるのを回避するため。 NVMe プロトコルではそれが許容されているため。複数の CPU からの IO 要求に依存関係がなければ同時に実行したりできるようになるということだと思ってる。
- NVMe はこれまでの AHCI プロトコルの制約から脱して機器の性能を引き出すことに成功している
- M.2 経由で PCIe を使うことに加えて、 NVMe を使うことで SSD は速くなった。
書き込み増幅 (Write Amplification)
- SSD は数 MB とかの単位で消去、書き込みを繰り返すため小さなデータをランダムに書く処理に弱い。そのため様々な工夫が行われる。
- Wikipedia の Write amplification が詳しい
カタログスペックは当てにならない
- 何故?
- カタログの速度は理想的なもの
- SLC キャッシュがどのように実装されているか
- Over provisioning がどのくらいあるか
- DRAM キャッシュがどのくらいあるかとか
- ガーベジコレクション戦略など、 Controller がどのくらい賢いか、触ってみないとわからない
- フル書き込みをしたときの特性を見ると良い
- SLC キャッシュの枯渇、全体の枯渇でどのような速度になるか
- Tech Power Up さん などの製品レビューで、以下のような SSD にフル書き込みをしたときの速度を実験してくれている。かなり色々な特性が見られて面白い。この特性を見て、自分のタスクに向いた SSD を買うと良い。
- 何故?
メモリ
-
- DDR は JEDEC という団体によって標準化されている
- JEDEC は標準となる DDR5-4800 などの仕様を決めて様々なメモリタイミングの値のセットを標準化している
- 各メーカーこれに合わせてメモリのタイミングを調整して製品化する(はず)
- このタイミング仕様は SPD という DDR メモリ内の EEPROM にかかれている。これを JEDEC プロファイルといったりする
- 「JEDEC の標準から逸脱したメモリタイミングを使えばもっと速度が出せる」ということで、 DDR メモリは JEDEC 非準拠の SPD のようなものを持つことがある。これを OC (オーバークロック)プロファイルといったりする
- OC プロファイルについて
マザーボード
チップセット(PCH)
CPU とチップセットの機能を確認したあとマザーボードを選ぶ
- CPU の機能のどれがどのスロットやコネクタで使えるか/使えないか
- チップセットの機能のどれがどのスロットやコネクタで使えるか/使えないか
デバッグ LED
CPU クーラー
空冷とか水冷をちゃんと整理。
一般的な呼称 | 寿命 | メンテ性 | 熱の移動 | 冷却 | 備考 |
---|---|---|---|---|---|
空冷 | ◎ | ◎ | なし | CPU にファン | 一番シンプルこれで冷やせるなら文句ない |
空冷(ヒートパイプ) | ○ | ◎ | ヒートパイプで移動 | ヒートパイプにファン | ヒートパイプで熱を移動させ比較的大きなファンを使える |
簡易水冷 | △ | ○ | 流水で移動 | ラジエータにファン | ヒートパイプより大容量の熱を移動できる。最近のはメンテ性も良い? |
本格水冷 | △ | ☓ | 流水で移動 | ラジエータにファン | ヒートパイプより大容量の熱を移動できる。 PC を拡張するときに色々バラすのがめんどくさくて「やめとけ」って言われることが多い |
液浸 | ? | ☓ | 沸騰による滞留で移動 | ラジエータにファン | スーパーコンピュータとかで使われているのを見た。沸点で熱を奪って移動もしてくれるので物理的にかなり理にかなってる気がする |
まず、「水冷だから冷える」というのは単純すぎる。結局冷えるのは「熱をいかに周辺温度の低い場所に移動させるか」「ファンでいかに冷やせるか」で、一般的に水冷が強いのは熱源と遠ざけるのが速く、性能の良いファンをつけやすいから。
基本的に TDP で決めればいい。 - CPU の TDP (熱設計電力)が、クーラーの target TDP 以下に収まっているか - 条件を満たす中で以下のニーズを検討してくーらーを決める - メンテナンス性 - 静音性 - 寿命の見積もり
熱は物理的に CPU の寿命を縮めるので、ちょっと余裕を持ちたい。
GPU/グラボ/ビデオカード
- 自分の使い方だと重要なのは以下の 2 つ
- GPGPU としての性能
- 動画のハードウェアエンコーディング
- 個人的には GPGPU よりこっちのほうが重要度は大きい
- 重要なことはハードウェアエンコーディングチップが 2 つ搭載されていること
- チップが 2 つあることで可能になること
- VMAF の計算をしたことがある人なら伝わると思うが、上のようにすると 720p 2000 kbps h264 と 720p 700 kbps av1 の動画の VMAF が 1800 fps で取得できる
- 2 つのハードウェアエンコーダがあると(特に cuda だと libvmaf とかもちょっとコードを書き換えれば動くので)強い
おまけ3: PC の組み立て
色々と写真をたくさんのせておく。
このブログを読んでいる人の多くに役に立つかはわからないけれど、今回いろいろ組み立てるにあたって自分と同じパーツで作業している人の画像を見たりすると少し失敗への不安が減る感覚があった。
なので、誰かのために載せておきたい。
作業場所の確保とか
ディスプレイ組み立て
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 のテストをするために CPU クーラー AK400 も先に開封が必要だ。
箱 | 開封 |
---|---|
ファンとヒートシンクを分離 | こういう金具でファンが引っかかってるだけ | ファンは 4 ピンコネクタでマザボとつながるよ |
---|---|---|
↓CPU とくっつける際の金具(あとで使う)
Intel 用 | AMD 用 |
---|---|
グリスは塗ってあった
グリスはもともと塗ってあった | 自分は別で買ってしまったので無水エタノールで拭いてこっち使った |
---|---|
(説明書とかは省略)
最新の BIOS 用を USB メモリに入れとく
マザーボード 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 をアップデートするためのボタンがある。
CPU を開封する
CPU Ryzen 7 7700 を開封する
箱 | 中身 | 本体 |
---|---|---|
CPU クーラーが付属していたけど、自分で買ったので付属のやつは使わない。
マザーボードがエラーを伝える手段の一つビープスピーカをつける
説明書を見る
BUZZER とか SPEAKER とか書かれている。フロントパネルのイヤホンとつながる部分はもっと密集したピンになっているので SPEAKER と書いてあっても 4 ピンならビープスピーカの可能性が高い
これを | ここに | こう |
---|---|---|
デバッグ LED を確認
現代の BIOS は UEFI のフェーズの順に初期化プロセスが行われる。そしてデバッグ LED でそのフェーズ上どこまで処理が進んでいるか。どこで停止したか。エラーの ID などがわかる。
このスイッチを ON になっているか確認 | これがデバッグ LED |
---|---|
BIOS のアップデート
CPU が最初の命令をフェッチする前に BIOS は新しくあってほしい。マザーボードだけで BIOS アップデート出来る場合はする。
↓電源とマザーボードだけをつなぐ
↓BIOS とかかれた USB ソケットに前述した BIOS が入った USB メモリを挿して
↓電源ユニットを通電して
完了するまで待つ
フロントパネルのスイッチの部分を短絡するためのスイッチを付ける
ケースに組み込む前にマザーボードと CPU のテストをするので、それ用にスイッチをつける。
これを | ここに | こう |
---|---|---|
CPU を付ける
パカっとあけて | のせて | とめる | 上の黒いカバーが勝手に外れる |
---|---|---|---|
CPU クーラーを付ける
固定具を付ける
黒いの外して | オレンジの付けて | 銀色の付けて |
---|---|---|
グリスはマスキングテープと定規できれいにぬった(普通にのっけるだけでいいらしい)
うとぅくしい....
ヒートシンク付けて | ファンを金具で固定 |
---|---|
ファンの向きは大事なので、要確認。羽が膨らんでるほうが吸気方向。
これを | この | ここに | こう |
---|---|---|---|
CPU とマザーボードのテストを行う
自作パートではここがたぶん一番重要。
CPU とマザーボードと電源だけでテストを行う。(メモリはつけない)
できるだけ最小構成で、 UEFI (BIOS) のフェーズがメモリエラーまで進むことを確認する(前述)
これはプログラムでいう Hello world! にあたるテストで、ここが成功すればこの後の作業が二分法での問題の特定が可能になる。
ここが一番大事な瞬間である。
ここからの作業はマザーボードの説明書を印刷しておくと作業が捗る。
まず、今の状態。メモリが刺さってなくて、 CPU、 CPU クーラー、マザーボード、電源、スイッチ、ビープスピーカー、がつながっている状態。
↓説明書を確認して 10 が出れば成功ということを認識する
↓電源ユニットを通電して、スイッチを押す。
↓ちゃんとエラーを起こす。 10 が出れば CPU は UEFI の PEI フェーズまで問題なく動いていることになる。
10 番のエラーが出ている!そして、ビープ音がピー、ピー、ピーとなっている。メモリがないことを示している。
正しく動いている!!!!
メモリを取り付ける
メモリは付属品とかもないので、シンプル
メモリは枚数によって付ける場所が決まっているので確認して
こうして
こう
BIOS の設定画面を表示するためにディスプレイとキーボードマウスをつなぐ
グラフィック内蔵 CPU だとこの時点でグラボも刺さなければならないので、グラフィック内蔵 CPU のほうが細かいステップで確認しながらセットアップできて好き。
上の用に HDMI と USB キーボードと USB マウスを挿した。
BIOS の設定画面が表示されることを確認
CPU マザーボードをテストしたときのスイッチを押して、画面が表示されるのを待つ
メモリも問題なく動いていて BIOS がほぼ最後のフェーズまで起動することが確認できた。
BIOS を設定
USB で OS をインストールするための Boot 設定 | Advaced -> Security -> Secure Boot を切っておく(ちゃんと Boot イメージを署名しないと駄目だと思うので) |
---|---|
この時点で Boot イメージに署名する方法とかがあるのかは知らない。
M.2 を刺す
M.2 も付属品はない。
箱 | 中身 |
---|---|
取り付け
ここを | 外して | サーマルパッドのシールを剥がして | つける | とめる |
---|---|---|---|---|
蓋もサーマルパッドがある | はずして | とめる |
---|---|---|
ケースに入れる
色々と確認は終わってるのでケースに入れる
↓まず電源
ここの金具を外して | 電源につけて | ケースに戻して付け直す | GPU と CPU とマザボのケーブル挿して | 表に出しておく |
---|---|---|---|---|
この際にマザーボードのレイアウトがあると便利
↓次マザーボード
ATX サイズだと基本スタンドオフ(スペーサ)はかえなくていい
止めるネジ確認 | 置く | こういう点々の印の穴 9 箇所に | ネジ止め | 止めた |
---|---|---|---|---|
↓ケーブルつなぐ。もう事前にケーブルは出ているので刺すだけ
USB | USB | フロントパネル | USB C | マザーボード主電源 | CPU 電源 2 個 | フロントパネルのイヤホン |
---|---|---|---|---|---|---|
で、フロントパネルとグラボの電源以外の電源はつながった状態。
ケースファンを付ける
ケースファンを付けるときはマザーボードの SYS_FAN<番号> などと書かれているコネクタの位置を確認して、分岐ケーブルを揃えたり配線の取り回しを先に図として書いておくといいです。
背面 | 天板 | マザーボードとグラボに空気を送る位置 | 下から室温取り込み | ケースとつなぐ |
---|---|---|---|---|
ケースファンを接続した SYS_FAN<番号> の番号を覚えておくと、ファンの設定をするときに使えます。
後日: ファンの設定
デフォルトだと温度による制御が聞いていなかったので PWM 制御の設定をしておいた
「Hardware Monitor」というボタンからファンを個別に設定できる。基本的に最近のファンだと PWM 制御でいいとおもっている。
Wifi のアンテナ
これを | つけた |
---|---|
グラボつける
箱 | 中身 |
---|---|
つける
ここを | 2スロットはずして | こうはめて | 電源つなぐ |
---|---|---|---|
完成!!
つかれた〜〜!パソコンできました!
後日: ハードディスクが届いた
普通に電源につないだのだけど、少しだけハマったので書いておきたい
以下のように普通に電源とつないだ時に動かなかった
これはデータセンター向けの POWER DISABLE という、電源を制御するための機能を持っている HDD だからのようだった。
説明書もついてた
電源とケーブルとつなぐとその制御のピンに定格 3.3 V の電圧提供に使われていてそのせいで電源が入らなくなってしまう。
この HDD についていた 3.3 V ピンを繋がないためのケーブルを噛ませることで、電源が入った
このカラフルなやつを間に噛ます
認識された
組みたての感想!
今回、先にレイアウトを見ておいてマザーボードを置く前にだいたい配線をすませておいたのが楽だった。
これといってハマったポイントはなかったけど、値段が高い部品を触っているときの心理的安全性が低かった。10 年使うものだしパーツの一個や二個は誤差という気持ちで頑張った。
おまけ4: Ubuntu のセットアップ
少しずつセットアップしてるので、やっととこまで
Ubuntu のインストール USB を作る
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 を挿して起動
組み立てのときにブートの設定を買えていると思うので USB メモリからブートして「Ubuntu インストール用の Ubuntu」が起動する。
振り返り
BIOS の設定で以下のように USB から起動するように設定されていることが前提
以下のような画面が出る
Ubuntu のインストール
とりあえず English。(英語のほうがググったときに情報量が多い
キーボードレイアウトの設定。自分は Dvorak なので English (US) - English Dnvorak を選択。早い段階で設定できるのでその先の打ち込みが楽になって良い。
ネットにつなげて
インストーラ自体も update
インストーラが更新されてるので再起動してやりなおし。
その後、ネットにつなげるところまでやり直して
Interactive Installation を選択
Default selection
third-party software も media format も使いそうなので、両方チェック
空の SSD を挿してるので Erase disk and install Ubuntu
ユーザ名とパスワードは個人でいつも使ってるやつを入れて
タイムゾーン設定して
設定の内容を確認して Install ボタン
少し待って
完了したので Restart now で再起動
再起動でもう一回インストーラが起動しないように、刺さってたら抜けって教えてくれた。
起動して、ログイン画面。
Chromium のインストール
左のバッグみたいな App Center メニューから
Install からインストール
完了したら左下の Show Apps から確認できる
ターミナルを開く
左下の Show Apps から
Terminal を起動でき、 bash というシェルを打ってコンピュータを操作できる
起動中に左側で Pin to Dash とすると、今後は左から起動できるようになる。
日本語入力用に IME デーモンを入れる
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 で日本語打てるようにする
Chromium はユーザがディスプレイサーバとして何をつかっているかを教えないと、 fcitx5 のデーモンとやりとりしてくれないので、設定する必要がある。
ディスプレイサーバとは GPU やキーボードやマウスと、ディスプレイマネージャや GUI アプリの仲介をするレイヤで wayland と x11 がある。
ターミナルから
$ echo $XDG_SESSION_TYPE
とすると wayland か x11 かが表示される。 GPU の選択とかで変わったりするので一概にどちらかとは言えない。
それを確認したら
Chromium のアドレスに chrome://flags
と入力し、 Preferred Ozone 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 を導入した。
VLC 入れた
nvim を設定
公式の github から nvim-linux64.tar.gz をダウンロードしてきて
$ tar xvfz ~/Downloads/nvim-linux64.tar.gz
解凍して、
$ sudo mv nvim-linux64 /opt
とりあえず /opt に置いておいた
~/.bashrc
にも書いた
一旦雑に .config/nvim/init.lua
も上のようにしておいた
ポータブルなバイナリとして配布されていて素晴らしいなあと思った。
Nvidia のドライバと CUDA ライブラリ
オープンソース版のドライバが入らないように /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 して使えるようにしておく
ffmpeg のカスタムビルド
以下のように
上のように依存関係をリストアップしていれる。それを使うようにビルド。特に今回 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 しておく
CUDA を使って爆速で VMAF を求められるようにする
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 とかの動画同士だったら 1800 fps とかで VMAF が求められるようになったので、めちゃくちゃ快適である。
NeoVim の設定
特にプラグイン管理の lazy の設定や copilot の導入、 language server の設定
Lazy の設定
Lazy から copilot を入れる
Lazy の設定書いて、 Vim を再起動。
インストールされたら vim 上で :Copilot auth とやってブラウザで認証をする。
language-server の設定もなんやかんや書いた。
Gnome Shell で一部のアプリの最初の起動が遅い
デスクトップポータルというアプリがデスクトップシェルの機能を使うための仕組みがあり、これを通じて各アプリが連携できるようになっている。
このデスクトップポータルが X11 なのに wayland を待ち続けて、そのポータルが必要なアプリも、タイムアウトするまで起動しない。という現象があるらしい。まだ治ってないらしい。
遅いのも最初の一回だけだし、原因がわかったし放置することにした。
NeoVim とクリップボードの連携
ヘルプをみる
クリップボードが x11 と連携できるように unnamedplus を設定
これだけでは動かなかったので、ちょっと調べた
NeoVim は xsel というプロセスを通じて x11 のクリップボードと連携するようでその xsel がシステムに入ってなかったようだ
$ sudo apt install xsel
NeoVim で yank したものを他のアプリで貼り付けたりできるようになった
Delete キーがない問題
よく gnome-shell のデスクトップ環境だと Delete キーがいろんなもののショートカットになっていたけど、自分のキーボードには Backspace しかなかった。
ちなみに 14 年前の HHK を使っている。
Backspace を Delete キーにマッピングする機能がキーボード自体にあったが、それをすると今度は Backspace キーがなくなってしまい直前に打った文字が消せなくなってしまう。
で、 HKK をしらべていると fn + ` が Delete キーとして働くらしい。そうだったのか...。
今思うと
Mac だと Backspace が Delete と呼ばれていて Delete キーの存在自体を自分は忘れてしまっていた。
その後
なんやかんやした(追記するかも)
最後まで読んでくれた人、ありがとう
最後まで読んでくれてありがとう!
この記事が、誰かの新しいことに挑戦する安心感や何かの問題を理解するのに役にたったら嬉しいです!
では!