Linuxでいくつかの実験を実行して、インストールサイズで最小のディストリビューションを探しています。 (RAM、CPUは重要ではありません)
コンパイルプロセスを実行して機能を削減したい場合は、 buildroot を試してください。 6MBのISOイメージに収まる非常に基本的なLinuxインストール(基本的にはカーネル、最小限のBusyboxユーティリティ、および1つの追加アプリケーション)を作成しました。
ここで重要なのは、カーネルとBusyboxの構成( "make linux-nconfig"と "make busybox-menuconfig")を必要最小限に減らし、次に初期カーネルramdiskでXZ圧縮を有効にすることです。必要のないものすべてを削減することで、ISOイメージ全体を約9 MBに削減でき、XZ圧縮を有効にすると、さらに6 MBに削減できました。
カーネルについては、特に必要がない限り、構成メニューの各オプションをオンにして無効にしました。対応するネットワークアダプターがないすべてのネットワークドライバーを無効にしたり、使用が予測されない他のあまり一般的ではないハードウェア(マルチポートシリアルカード、ジョイスティック、多機能デバイスなど)を無効にしたりできます。オン。より洗練されたものではなく、基本的な実装に多くのサブシステムを残すこともできます(たとえば、Intel/AMD CPUアイドル状態ではなく、基本的なACPI CPUアイドル状態)。これは、電力効率とハードウェアサポートのカーネルサイズのトレードオフになる可能性があることを意味します。また、使用する必要がない場合は、休止状態/スリープサポートやサウンドシステムなどのサブシステム全体を無効にすることもできます。
そうすることで多くのスペースを節約できます。たとえば、KVM(virtualization)およびbtrfsサポートモジュール(将来必要になる場合に備えて、ロード可能なモジュールとしてカーネルの外に置くことにしました)は、それ自体で1.1 MBを占有します。これらのモジュールファイルを削除すると、約4.9MBに減少する可能性があります。カーネルバイナリに統合されるスペースが少なくて済む可能性がありますが、他の小さいモジュールのサイズが20〜100キロバイトであるため、異なる場合があります。
Busyboxは単一のバイナリであり、コマンドラインからの呼び出し方法に応じて異なるバイナリのように動作するため、スペースを節約できます。これはデフォルトでBuildrootに含まれています。 ls、df、dd、cat、nc、bashなど、さまざまな動作をすることができます。これらのユーティリティのより完全な機能を備えた/従来の(たとえば、GNU、BSD)バージョンでしか見つけられない特定のユーティリティ拡張が必要でない限り、これは* nixユーザーランド全体の良い代替品のように見えます。 Busyboxは、機能を無効にするという点でカーネルに似ています。必要なバイナリ(AKAアプレット)を除くすべてを無効にすると、サイズが小さくなります。動的にコンパイルされたBusyboxバイナリは、Buildrootでは512キロバイト、Ubuntu 14.10では約2.1MBを占めます。より大きなUbuntuバージョンは、私のBuildrootバージョンよりもはるかに多くサポートし、サイズの点でデフォルトのユーザーランドよりも小さいです-Busyboxの場合は2.1 MBで、すべての基本ユーティリティ(およびmd5、sha256、sha512 sum、telnet、gzip、grep、 df、dd、および他の多くのアプレット)と従来のユーザーランドとの比較-2.1MBでは、Bashとこれらのユーティリティの一部のみが提供されます。
以下のいくつかを試してサイズをさらに小さくすることができますが、作業ディレクトリのバックアップを頻繁に作成します。これは、作業中のBuildrootインストールを中断し、一部のバイナリを再構築する必要がある場合があるためです。
UPXコンプレッサーですべての実行可能ファイル(カーネルを含む)を圧縮します。 UPXは実行可能ファイルの圧縮を実行するように特別に設計されているため、結果として得られる実行可能ファイルは非常に小さくなります。ただし、後ですべての実行可能ファイルをテストし、それらが正しく機能することを確認してください。
別のlibcを使用してください。私はuClibcを使用していますが、muslとdietlibの方がはるかに小さく、実行ファイルが小さいと聞きました。今回はmuslでビルドの問題がいくつかありましたが、うまくいくかもしれません。
一部またはすべてのユーザーランドユーティリティを asmutils に置き換えます。これらのユーティリティは、いくつかの一般的な* nixユーティリティを(Cまたは他の言語ではなく)純粋なアセンブリで実装します。これにより、理論的にははるかにコンパクトなコードが可能になります。それらのいくつかはうまく機能しますが、いくつかは非常に基本的な方法でのみ使用できます(たとえば、「mount」は特定のシーケンスでのみパラメーターを受け取り、FS固有のマウントオプションは実装されていません)。一方、それらは非常に小さいです(ほとんどはコンパイルされた1KB未満で、約139バイト程度のものを小さくします)。使用するものを選択できるため、スペースを節約し、機能が豊富なバージョンをBusyboxアプレットとして保持したいコマンドに対してのみ、これらの置換を使用できます。
OpenWrt も最小の1つです。
Tomsrtbt は数メガバイトです。フロッピーにフィットします。