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