1個5ドル前後で買えるESP32に、UNIX風のシェルとファイルシステム、パッケージマネージャを乗せる——。passionateSandy2004氏がGitHubで公開した自作OS「ShellOS」は、ESP-IDF v5.xとFreeRTOSの上に、Arduinoを経由せず一から構築されたESP32専用の操作系だ。
特徴は、Linuxが当たり前にしてきた「1つのシェルで複数のプロセス、ファイル、I/O、ネットワーク、ストレージを制御する」体験を、MMU非搭載で数百KBのRAMしか持たないマイコンで再現している点にある。対話的なUARTシェルのほか、WiFi経由でncから接続できるTCPリモートシェル(nc <ip> 2323)も使える。
ファイルシステムはLittleFSを4MBフラッシュに展開し、/root/config/や/root/packages/、/root/data/<パッケージ名>/が再起動後も保持される。各パッケージはFreeRTOSタスクとして起動し、ログや設定は自身のサンドボックスディレクトリに書き込まれる。psで実行中タスクと使用スタックが一覧でき、pkg logsで個別パッケージのログが見られる。
パッケージは独自バイナリ形式「.shpkg」にまとめられ、HTTP POST /pkg/upload経由で無線配布される。付属のデスクトップツール「ShellOS Imager」には、Arduino風の.inoスケッチをLua 5.4に変換して.shpkg化するトランスパイラが組み込まれており、setup()とloop()のコードをWiFi経由でデプロイできる。Lua側のAPIはGPIO、シリアル、ファイル、HTTPなどArduinoに近い名前空間を持つ。
動作確認済みはESP32-CAM(Xtensa LX6)とSeeed XIAO ESP32-C6(RISC-V)の2種類で、前者ではOV2640カメラの実ドライバが、非対応機種ではスタブが使われる。製作者は、MMU非搭載ゆえにパッケージ間のメモリ分離がソフト的な約束事にとどまる点や、Luaの協調スケジューリングで他タスクを飢餓させるリスクを制約として明記する。ライセンスはMIT。