まずpostmarketOS(スマホ用Linux)を焼こうとして、Wi-Fi・Bluetooth・ハードウェアアクセラレーションが全部「壊れてる」印なのを軽視し、起動スプラッシュと黒画面で止まった。純正ROMの復旧にはWindows専用の書き込みツールが要り、QEMU上のWindowsでUSBパススルーとMediaTekドライバと格闘する羽目に。一時は文鎮化を覚悟した。
そこで得た教訓が方針を決めた。Androidはこのハードのドライバを全部持っている。Wi-Fiも電源管理もバッテリーもGPUもモデムも動く。それを捨てて「普通のLinux」を追いかけるのは損な取引で、必要なのはAndroidにハードウェアをやらせたままLinuxアプリを確実に動かすことだった。
2回目の構成は素のAndroid + Termux(Android上のUnix環境)。OpenSSH・runit・Caddy・Tailscaleを入れ、再起動後はTermux:Bootが監視プロセスとSSHを立ち上げる。手元のマシンから ssh cmf で届く。
アプリは既存のARM64コンテナイメージを使い回す。最初はPRoot(ユーザー空間でシステムコールを翻訳する互換レイヤー)で動かしたが、ブラウザのような重い負荷では翻訳コストが効いてCPUが余っているのに遅い。そこでroot化して本物のchrootでDebianファイルシステムに入る方式に変えたら、改善は「わずか」ではなかった。Dockerもコンパイラもスマホには要らない。イメージのダイジェストを母艦で固定し、Ansibleが検証して配る。
Androidの電源管理は普段は優秀だが、サーバーには敵になる。永続ウェイクロック、アイドル無効化、Termux/Tailscaleのバックグラウンド制限除外、Wi-Fiサスペンド禁止、常時VPN化などをAnsibleで一括適用している。肝は個々の設定より復旧の連鎖:
これで再起動しても人間が気づく前に自分で戻ってくる。