
2026/04/22 2:14
Arduino UNO(2KB の RAM を搭載)のために、シェルとファイルシステムを備えた小さな UNIX 風の「OS」を作成しました。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
KernelUNO v1.0 は、Arduino UNO(ATmega328P)上で動作する RAM ベースの軽量シェルであり、マイクロコントローラーハードウェアに Linux 様の環境をもたらします。SRAM に仮想ファイルシステム(
/dev および /home を含む)、GPIO 管理、システム監視(起動時間、メモリー使用量、dmesg)、ファイル作成、LED のトグル動作、リブートなどのタスクに対応する 22 の組み込みコマンドを備えています。チップの 2KB SRAM 約 85% を利用しながらフラッシュメモリ使用量を約 38% に抑えることで、115200 バウ德的シリアルモニター経由でハードウェア上に直接 Linux スクリプティング概念およびシステムコマンド(例:ls, cd, mkdir, pinmode, echo)を試し、検証することを可能にします。本環境は標準的な Arduino IDE および arduino-cli の両方でのインストール方法をサポートしますが、単一ユーザールートセッションであり揮発性メモリのみの動作となります;現状の制限には 32 バイトまでのファイルサイズ上限、ファイル・ディレクトリ最大 10 個、PATH の最大 16 文字、永続化ストレージまたは PWM などのアナログ制御機能の欠如があります。「LED ディスコモード」というイースターエッグがその創造的ポテンシャルを物語っています。今後のアップデートでは EEPROM による永続化、SD カードサポート、拡張 GPIO 機能の追加を計画していますが、KernelUNO v1.0 は複雑なセットアップなしで安価なプラットフォーム上で OS コンセプトやハードウェア操作を探求することを望む学習者にとって障壁を大幅に低減します。本文
KernelUNO Ver. 1.0
Arduino UNO 用の軽量 RAM ベースシェル:ファイルシステムシミュレーション、ハードウェア制御、および対話型シェルを搭載。
主な特徴
- バーチャルファイルシステム: RAM に基づいてファイルやディレクトリを作成可能(
、/dev
など)。/home - ハードウェア制御: ピンモード設定を含む GPIO の管理機能を提供します。
- システムモニタリング: メモリ使用量、稼働時間、カーネルメッセージ(dmesg)の表示に対応。
- 標準搭載コマンド 22 コマンド: 基本的なファイル操作からハードウェア制御まで幅広く対応。
- 対話型シェル: リアルタイムコマンド実行と入力バッファリングを実現。
- LED ディスコモード: GPIO のテスト用に設けたお楽しみ機能(イースターエッグ)。
必要なハードウェア
- Arduino UNO(または互換基板、ATmega328P シリーズ)
- プログラミング用の USB ケーブル
- LED と抵抗(GPIO テストのためオプション)
インストール手順
- このリポジトリをクローンまたはダウンロードする。
を Arduino IDE で開く。KernelUNO.ino- ボードを選択:Tools → Board → Arduino UNO
- ポートを選択:Tools → Port →
(お使いのポートに変更)/dev/ttyUSB0 - コンパイルしてアップロード:Sketch → Upload
- シリアルモニタを開く:Tools → Serial Monitor(ボーレート 115200)
arduino-cli による代替手順
arduino-cli compile --fqbn arduino:avr:uno . arduino-cli upload --fqbn arduino:avr:uno -p /dev/ttyUSB0 .
コマンド一覧
ファイルシステム関連コマンド
: 現在ディレクトリのファイル一覧を表示。ls
: ディレクトリ移動を実行。cd [dir]
: 現在の作業ディレクトリを出力。pwd
: 新しいディレクトリを作成。mkdir [name]
: ファイルを作成。touch [name]
: ファイル内容を表示(読み込み)。cat [file]
: テキストをファイルに書き込む。echo [text] > [file]
: ファイルまたはディレクトリを削除。rm [name]
: ファイルの詳細情報を表示。info [name]
ハードウェア関連コマンド
: ピンの入出力モードを設定。pinmode [pin] [in/out]
: ピンに電圧(HIGH/Low)を出力。write [pin] [high/low]
: ピンの入力値を読み取る。read [pin]
: GPIO の状態を制御(オン/オフ/反転)。gpio [pin] [on/off/toggle]
: LED ディスコモード(イースターエッグ機能)。gpio vixa [count]
システム関連コマンド
: システムの稼働時間を表示。uptime
: システム情報を表示。uname
: カーネルメッセージを表示。dmesg
: 自由なメモリ量を確認。df / free
: 現在の実行ユーザー(ハードコーディングされた root)。whoami
: 画面をクリア。clear
: システム再起動。reboot
: 利用可能なすべてのコマンド一覧を表示。help
使用例
ファイルシステムの操作方法
cd home mkdir myproject cd myproject touch notes.txt echo "Hello World" > notes.txt cat notes.txt
ハードウェア制御の例
pinmode 13 out gpio 13 on gpio 13 toggle read 2
システム情報の確認
uname uptime dmesg df
お楽しみモード(イースターエッグ)
gpio vixa 10
メモリ使用状況
- プログラム: 32KB のフラッシュメモリに対し約 38%
- RAM: 2KB の SRAM に対し約 85%(最適化済み)
- ファイルシステム: 最大 10 ファイル/ディレクトリまで対応可能。
- dmesg バッファ: メッセージは最大 6 つまで保持。
仕様
- ボード:Arduino UNO(ATmega328P)
- クロック周波数:16 MHz
- シリアル通信ボーレート:115200
- ファイルシステム:RAM ベース(EEPROM を使用しない)
- ストレージ:揮発性(電源を切るとすべてクリアされます)。
技術的な詳細
- キャラ配列ベースの入力バッファ(最大 32 バイト)
- ブッファオーバーフローを防ぐための安全なパス連結処理。
- タイムスタンプ付きのカーネルメッセージロギング。
- リアルタイム GPIO 操作機能。
- 効率的なメモリ管理を実現。
制限事項
- 永続化ストレージ(EEPROM/SD カード)未対応。
- ファイルサイズの制限:ファイルごとの内容が最大 32 バイトまで。
- ファイル/ディレクトリ数は最大 10 個まで。
- PATH の文字数制限は 16 文字まで。
- シングルユーザ環境(root)のみサポート。
今後の開発計画(TODO)
- EEPROM を用いたデータの永続化機能の追加
- PWM やアナログ制御の対応
- SD カード読み書き機能の実装
- ファイルサイズ表示機能の追加
- GPIO 関連機能のさらなる拡張
ライセンス BSD 3-Clause ライセンスの詳細は LICENSE ファイルをご参照ください。
著者
Arc1011(アークゼロイチ)
2026 年作成。
貢献について
フォークし、修正・改善をお待ちしております!以下の内容を含むプルリクエスト(PR)をお待ちしています:
- バグ修正
- パフォーマンス向上
- 新しいコマンドの追加
- コード最適化
※本プロジェクトの説明書類(README および QUICKSTART)は、Claude AI が作成しました(一部改修あり)。なぜなら、私が独自に記述しようとすれば、意味が通じない数行の不整合な文章になってしまい、利用者さんにお役に立たないものになってしまうからです。