あなたは夢を見ていると思います。主な問題は、RAMの制限です。
2004年に、Eric Beidermanは2.5 MBのRAMでカーネルを起動し、多くの機能を削除しました。
ただし、それはx86でのことであり、ARMのことです。そこで、「汎用性のある」プラットフォーム(最も単純なプラットフォームの1つ)向けに、可能な限り最小のARMカーネルを構築しようとしました。探しているオプション(USB、WiFi、SPI、I2C)を含むすべての構成可能なオプションをオフにして、どれだけ小さくなるかを確認しました。今、私はここに、カーネルを参照していますが、これは含まれていない任意のユーザースペースコンポーネントを。
良いニュース:フラッシュに収まります。結果のzImageは383204バイトです。
悪いニュース:256kBのRAMでは、起動できません:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
.textセグメントは使用可能なRAMよりも大きいため、カーネルは解凍できず、起動用のメモリを割り当てることはできません。
回避策の1つは、システムでサポートされている場合(つまり、Flashから直接命令をフェッチできる場合)、インプレース実行サポート(CONFIG_XIP)を使用することです。ただし、それは、カーネルがフラッシュに非圧縮で収まる必要があり、734kB> 700kBであることを意味します。また、.dataセクションと.bssセクションの合計は66kBであり、他のすべて(つまり、カーネル内のすべての動的に割り当てられたデータ構造)に約190kBを残します。
それはただのカーネルです。必要なドライバー、またはユーザー空間なし。
したがって、はい、もう少しRAMが必要になります。