
ESP32-S3でLinuxが起動すること自体は、2023年から知られている。ただしメモリー管理ユニット(MMU)がないため、プロセスを複製するfork()が使えなかった。これが動かないと、bashもPythonも動かない。paulneja氏が公開した0.7版は、そこに手をつけた。
MMUを載せたわけではない。代わりに、ソフトウェアでメモリーを区画に分けて使う。親子のプロセスが別々の私有領域を持ち、Linuxが切り替えるたびに中身を退避して書き戻す。同氏は実験的な仕組みだと断り、動く範囲も数字で示す。私有メモリーは1回のforkにつき512KiBまでとする。シングルプロセッサー構成のみで、複数スレッドからのforkは拒否する。コピーオンライトがないので、forkした瞬間にメモリーを食う。
それでも動くようになったものは多い。ログインシェルがBash 5.2.37になり、GNU Make 4.4.1とMicroPython 1.26.0、socatやnetcatも入る。ユーザーごとのホームディレクトリとパーミッションが使え、cronで決まった時刻に処理を走らせ、セッションを切り離して裏で走らせられる。
Linuxはエミュレーションではなく、Xtensaのコアで直接動く。2つあるコアのうち片方をLinuxが使い、もう片方ではEspressifのファームウェアが引き続きWi-Fiとフラッシュの面倒を見る。両者は共有メモリーでやりとりする。必要なのはフラッシュ16MB、PSRAM 8MBのN16R8ボード1枚だけで、SDカードも外付けメモリーも別のパソコンも要らない。電源を入れてからログインプロンプトが出るまで約14秒だという。
同氏は不具合も隠していない。書き込みできる領域にJFFS2を使っているが、大きな書き込みやブロックの回収が走ると極端に遅くなる。forkを切っても、前の版のカーネルでも同じだったといい、原因は未解明のままで、後で直すつもりだと書いている。パーミッションはメモリー保護の代わりにならないこと、Xtensa向けにビルドしたバイナリーしか動かないこと、telnetが初期状態で有効でパスワードが平文で流れることも並べている。
検証の記録も分けて置いてある。クリーンビルドとクローンからのビルドが、それぞれハードウェア試験26項目を通った。同じコミットを2回ビルドすると8つの成果物のうち5つがバイト単位で一致したが、完全な再現性が確認できたわけではないと自ら注記している。ライセンスはGPL-3.0だ。

