Raspberry Pi 5 をデスクトップコンピュータとして使う
Raspberry Pi 5 (以後 rpi5) をデスクトップマシンとしてしばらく運用してみた。
rpi5にディスプレイ、マウス、キーボードを接続してデスクトップ機として使うことは難しくなく、公式の RaspberryPi OS は、デフォルトで、デスクトップ版のOSとなっている。LXQTデスクトップ環境が組み込まれていて、普通にデスクトップパソコンとして使うことができる。 ここに技術的な目新しさは無いので、実際使いモノになるのか、どのようなセットアップなのか、というのが論点だと思う。
コーディング、執筆、Webブラウジングで使い始めて、悪くないかも、と思った。 さらにカスタマイズして色々なアプリケーションを動かそうと思うと厳しかった。
筐体
チープです。
鉄フレームに結束バンドで固定しています。
ヒートシンクとアクティブクーラーを使っています。
rpi5は温度が高くなりがち。冷却には気を使ったほうが良いです。
この黒いヒートシンクは、少し心もとないです。
rpi5からは PCI Express x1 が搭載されたので M.2 SSD にシステムをインストールさせる記事も多く見かけます。私は、予算が無いので、余っていたUSB SSDを使っています。後述の Manjaro Linxu XFCE エディションは20秒程度で起動するので、十分早い。
M.2 SSD には、PCI を M.2 に変換する基盤が必要だし、この基盤があると、使えるケースや冷却システムが制限される。また、SSD本体もけっこう高価。 そう考えると、rpi5に M.2 SSD って、ちぐはぐなシステム構成に思える。そこまでストレージを高速化しても、結局CPUやネットワークがボトルネックになるので、ほとんど活かせないと思うし、デスクトップ用途では USB SSD で十分かな。
rpi5は、5V5Aの電源を必要とします。私は初め 5V3A の USB PD 電源を使っていましたが、ピーク時に不安定になる気がするので、5V5A に変更。
Manjaro Linux
まずはじめに、 Manjaro Linux XFCEエディション をインストールした。
別のマシンでManjaroに入門したばかりで、Manjaroを引き続き利用したいと思ったからです。RaspberryPi OS は安定性が高いと思いますが、ベースがBookwormなので古いです。新しめのパッケージを使いたいし、ローリングリリースモデルが嬉しいので、これにしました。
Manjaro Linux からは、rpi5に対応した公式イメージはまだ提供されていない。そこで、 manjaro-arm-installer を使いました。
manjaro-arm-installer : https://gitlab.manjaro.org/manjaro-arm/applications/manjaro-arm-installer
これは、イメージを使わずに直接ディスクにブートパーティションやManjaroをインストールするスクリプトで、rpi5に対応しています。利用するには動くLinuxが必要で、私はx64のManjaro上で作りました。それでarm64用の環境が作れるのか?というと、大丈夫で、x64からでもうまくやってくれます。
XFCEエディションを選択してUSB SSDに環境を書き込んで、rpi5にUSB接続し、起動することができました。rpi5 では USB Boot のために特別な設定は不要です。PCIe経由だと特別な設定や、チップの相性など、色々な注意が必要です。
最近、デスクトップ環境としてSwayやLabwcを試してきましたが、安定性とミニマムさのバランスから、やっぱりXFCEが好き。 タスクバーを取り払って、Dockアプリ Plank を入れて、なんだかんだ色々カスタマイズ。
画面のチラつき
XFCE と rpi5 の組み合わせ特有の問題だと思われますが、マウスカーソルや画面全体が不規則にちらつきます。 XFCEのウィンドウマネージャー(詳細)から、コンポジット処理を無効化することで、回避できます。 ドロップシャドウなどの、おしゃれなビジュアル・エフェクトが使えなくなります。
日本語入力
mozc ut dictionary を導入しようとしたが、mozcのビルドに挫折。(arm版環境でビルドに必要なものを揃えられなかった) そこで、普通の fcitx5-mozc を利用しつつ、 phoepsilonix/dict-to-mozc を使って、150MB程度のユーザー辞書を構築して使うことにしました。
dict-to-mozc: https://github.com/phoepsilonix/dict-to-mozc
システム辞書と比べ変換性能やパフォーマンスに劣るはずだが、問題なく実用的です。 このサイズのユーザー辞書を使うと、起動時に mozc-server が 1.5GBほどのRAMを占有します。システム辞書の場合はるかに小さいフットプリントとなります。
Firefox
ホビー用メインブラウザとして利用しています。仕事ではChrome系だけど。 arm64版は、x64版と比べて、リポジトリの内容が古くなりがちです。私がインストールしたタイミングでは、Firefoxが希望のバージョンよりも古かったので、公式の最新版をマニュアルインストールすることにしました。しばらくこれで運用してみる。
VSCodeやObsidianがクラッシュするトラブル
私が環境構築しているタイミングでは、最新のVSCodeやObsidianの動作に問題があり、起動後しばらくするとクラッシュする現象にぶち当たりました。元をたどればElectronが利用しているChromiumのバグのようで、VSCodeは Insider版にオプションをつけて起動することで回避できました。Obsidianはダウングレードしました。
この件に関する VSCodeのissueはこちら。 https://github.com/microsoft/vscode/issues/242742
また、Electronとは無縁の code-server を使ってしまうという手もあります。
マウス・キーボードに Solaar
私はロジクール(logitech)のマウス・キーボードを使っていますが、Linuxには公式の設定アプリがありません。 pwr-Solaar/Solaar を使うと、ある程度の設定ができます。これを使うためには Bluetooth接続をする必要があり、Unify/Boltレシーバーは対応していません。
Solaar: https://github.com/pwr-Solaar/Solaar
やっぱりaptが欲しくなりUbuntuも試す
Manjaro Linux は、すっきりしているし、新しいパッケージが落ちてくるので、楽しいけど、相応に不安定なところを受け入れなければいけません。それに、x86_64 向けに比べて、arm64のパッケージバージョンはだいぶ古いです。
省略しますが、Ubuntu server + XFCE デスクトップ環境も構築して、しばらく使ってみました。 Ubuntu のほうが利用者が多いせいか、より安定していて、色々なアプリケーションが動くが、Manjaro に比べてもっさりしており、色々なものを削除したり無効化するチューニング作業に労力を要する印象。
Manjaro で遭遇した マウスカーソルのちらつきや、Electronの問題は、発生しませんでしたが、また別のところでセットアップには苦労しました。
Ubuntu をわざわざ使いたかった理由のひとつが、Pi-Apps で、いくつかのアプリケーションをスムーズにインストールすることができます。
Pi-Apps : https://pi-apps.io/
Manjaro Linux ARM で私が困った2つの問題は、ずばり、DRMとゲーム。
まずDRMについて。 私は Amazon Prime Video や Spotify のようなサブスクサービスを契約していて、これらのサービスを使うにはブラウザがDRMに対応している必要がある。それには、widevine と呼ばれるライブラリのインストールが必要だけど、ARM版のwidevineというのは通常出回っていないし、インストールがなかなか困難なようです。 Pi-Apps でインストール可能な Better Chromium は、widevineや、rpi向けのチューニングがセットになったChromiumで、これをインストールすれば一発でPrime Video も Spotify も再生可能でした。
Better Chroimum: https://pi-apps.io/install-app/install-better-chromium-on-linux-arm-device/
次にゲーム。 私はSteamのゲームをたまに遊ぶ。別にwineで稼働させようとは思わないが、せめてリモートプレイができると嬉しかった。 Manjaro ARM だと、Steam のインストールそのものが、かなり困難というか、いったん無理だと判断しました。Ubuntuの場合、Pi-Apps に Steam があるので、一応、インストール可能でした。 ただし、結局、起動させることができませんでした。 Steamのようなプロプライエタリなアプリは、デバッグもトレースも困難。棚上げしました。
ARM Linux のマーケットは必然的に Raspberry Pi がターゲットになることが多いため、Ubuntu/Debianには提供されているが Manjaro には無い、というものをいくつか目にしてきたのでした。
システムリソース
当たり前だけど、やはり RAM 8GBは厳しい環境。パフォーマンスモニタを睨みながら作業することになる。 グラフィックも弱いので、GUIが重たい感じがする。 ネットワークも不安に感じることが多かった。ブラウザでたくさんタブを開いて作業していると、通信が止まったりクラッシュすることが度々あった。 これらハードウェア的な制約は、避けられない。
glibc の足かせが重い
Manjaro にせよ、Ubuntu にせよ、ARM Linux では、glibc のバージョンによって色々な制約がうまれます。glibc はユーザー空間における中心的なライブラリ。いま、ARMだと、2.36や2.37 というバージョンになるけど、x86_64だと2.4以上になります。例えばNeoVimもglibcのバージョンにかなり左右されるし、widevineもglibcのバージョンに左右されるし、コンパイラもそうです。Electronなどサンドボックス化されたランタイム環境で動作するものは影響を受けにくいけど、アプリケーションの選択肢がだいぶ絞られます。
まとめ
ということで、rpi5で Manjaro と Ubuntu それぞれ遊んでみました。 マッチするかどうかは、結局ユースケース次第ということになるけど、
- 本格的なデスクトップ利用はハードルが高いです。
- サブスクやゲームなどの娯楽コンテンツへのハードルが高いです。
逆に、最低限のものしか動かないので、集中できるデジタル断捨離環境と言えます。 ちょうどこの頃、書きたい小説や技術記事があったが、娯楽コンテンツに振り回されずに集中できた気がする。
以上、誰かの参考になれば。