オペレーティングシステムの代わりにプログラムをロードするシステムでLinuxカーネルのみを実行することは可能ですか?
LinuxカーネルでRaspberryPiを使用したいと思います。 Raspberry Piでサーバーとクライアントプログラムを作成しようとしています。このために必要なのは、ネットワークドライバーで動作するカーネルだけです。
Raspberry Piをオンにしたときに、自分のプログラムのみを実行したい。残りのオペレーティングシステムは必要ありません。
Linuxカーネルが起動すると、プログラム/sbin/init
が実行されます。 (それは initrd または initramfs の後にあります)、場所はinit
parameter で構成できます。 init プログラムには特別な役割があります。プログラムは永久に実行され続け(SIGKILLを使用しても強制終了されないようにする特別なルールがあります)、 孤立したプロセス を採用します。もちろん他のプログラムを起動(および監視)することになっています。
独自のプログラムをinitとして指定できます。その後、何を実行するかは完全にあなた次第です。
ただし、これを行うと多くの損失が発生します。たとえば、プログラムを提供しない限り、物理的なアクセスなしにデバイスを再構成することはできません(ネットワーク構成の変更やブートローダーの設定の変更など)。少なくとも最小限のツールセットを実行することをお勧めします。
ifconfig
、route
、…)。これらのツールはすべてフットプリントが小さく、約10MBのRAMおよび3MBの圧縮ストレージに快適に収まります。これはRaspberryPiでは無視できます。RPiで削減しても何も得られません。 Linuxカーネルを使用して1つのプログラムを起動するだけで、非常に限られたデバイスに役立つ場合がありますが、RPiはそれより少なくとも2桁上です。
最も簡単な方法は、多くの 組み込みLinuxディストリビューション のいずれかを使用することです。または、 Buildroot などのツールを使用してカスタムシステムを構築することもできます。これは小さなシステムには便利ですが、RPiには少しやり過ぎです。