Linuxカーネルとユーザープログラムのみを実行する

Linuxカーネルとユーザープログラムのみを実行する

オペレーティングシステムの代わりに自分のプログラムをロードするシステムでLinuxカーネルのみを実行できますか?

LinuxカーネルでRaspberry Piを使用したいです。私はRaspberry Piでサーバーとクライアントプログラムを作成しようとしています。これには、ネットワークドライバで実行されるカーネルだけが必要です。

Raspberry Piがオンになっているときにのみ私のプログラムを実行させたいと思います。私はオペレーティングシステムの残りの部分を望んでいません。

答え1

Linuxカーネルが起動すると、このプログラムが実行されます/sbin/init。 (これ以降初期化プログラムまたはファイルシステムの初期化) 利用可能な場合は、次の設定場所を使用できます。init 範囲。これ内部にこのプログラムには特別な効果があります。永久に実行されます(SIGKILLを使用してもプログラムが終了するのを防ぐ特別な規則があります)。孤児プロセスもちろん、他のプログラムを起動(および監視)する必要があります。

自分のプログラムをinitとして指定できます。もしそうなら、それはすべてあなたが何を実行しているかに依存します。

しかし、これは多くのことを失う可能性があります。たとえば、物理アクセスなしでプログラムを提供しない限り、どのような方法(ネットワーク構成の変更、ブートローダ設定の変更など)でデバイスを再設定することはできません。最小限のツールセットを実行することをお勧めします。

  • 忙しい箱、初期化実装、シェル、その他のコマンドラインツールを含むシステムツールのセットです。それにもかかわらず、起動時にネットワークを設定するには、少なくともいくつかのBusyBoxツールが必要です(ifconfig、、、route...)。
  • IPテーブル、BusyBoxに含まれていない基本的なファイアウォール設定ツールです。
  • 水滴クマ、デバイスにリモートでログインできるSSHサーバー。
  • 可能その他のガジェット、特にNTPクライアント(時計の設定)とDNS、DNSキャッシュ。

これらのツールはすべて設置スペースが小さくなります。約10MBのRAMと3MBの圧縮ストレージに適しています。これはRaspberry Piでは無視できるレベルです。 RPiでは、システムをデフォルトの組み込みLinuxより低いレベルに下げるという利点はありません。 Linuxカーネルのみを使用してプログラムを起動することは非常に限られた数のデバイスに役立ちますが、RPiはそれより少なくとも2倍高いです。

最も簡単な方法は、さまざまな方法の1つを使用することです。組み込みLinuxディストリビューション。または、次のツールを使用できます。ルート構築カスタムシステムの構築 - これは小規模システムには適していますが、Raspberry Piには少し過剰です。

関連情報