ESP32向けに自作されたOS「ShellOS」、Luaパッケージを無線配布

FabScene(ファブシーン)  ShellOS v1.0.0 ESP32-CAM boot screen with retro logo and boot messages (UART init, LittleFS mounted, shell loaded).

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。

関連情報

ShellOS v1.0.0 ESP32-CAM boot screen with retro logo and boot messages (UART init, LittleFS mounted, shell loaded).

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!
目次