通常の安定した3 *カーネルは現在約70 mbです。しかし、ソフトウェアやその他のものがすぐに使える30〜10 mbのLinuxディストリビューションはほとんどありません。
これらのディストリビューションでLinuxカーネルをどのように小さくすることができますか?不要なモジュールとドライバーのみを削除すると、サイズを劇的に削減できますか?カーネルサイズを縮小するために他に何が行われますか?
通常の安定した3 *カーネルは現在約70 mbです。しかし、ソフトウェアやその他のものがすぐに使える30〜10 mbのLinuxディストリビューションはほとんどありません。
これらのディストリビューションでLinuxカーネルをどのように小さくすることができますか?不要なモジュールとドライバーのみを削除すると、サイズを劇的に削減できますか?カーネルサイズを縮小するために他に何が行われますか?
回答:
はい。それらを削除する場合(必要なものだけをコンパイル/作成するモジュール)、カーネルを圧縮します(サイズを最適化します)...そのような小さなカーネルになります。ターゲットシステム用に、さらに小さいものを作成できます。私は自分のPCを知っているように、自分のものを知っています。したがって、必要なものだけをコンパイルします。私のSATAドライバー、USB用ドライバーなどと同様。他に何もありません。Webカメラも、古いIDEドライブも、何もありません。
また、遭遇する大きなものはWHOLEカーネルです(これは決して使用する必要はありません)。デスクトップのものでさえ(ほとんどの場合、モジュールとして)不要なものがたくさん含まれています。しかし、初心者は、プラグインするあらゆる種類のハードウェアが正常に機能することを期待しています。
(モジュールは必要になるまでロードされません。3つの状態があります:
[ ]
-コンパイルされない、カーネルの一部にならない
[M]
-モジュールとしてコンパイルされます
(modprobeすることができますまたは、システムは必要なときにそれを自動ロードします。
システム、ユーザーランドに依存し
[X]
ます。)-カーネルにコンパイルされ、常に存在します。
小さなカーネルのディストリビューション:
Tom's Root-Boot、MuLinux、Diet-router、(現在は廃止されている)LOAFなどの初期のLinuxディストリビューションは現在出発しており、すべて1つまたは2つの1.44 MBディスケットに動作するLinuxシステムを搭載しました。
Linuxカーネルは成長していますが、モジュール式であることを忘れないでください。カーネルモジュールは必要に応じてロードされます。したがって、非常に小さなフットプリントでLinuxディストリビューションを作成することも可能です。
参照:カーネルサイズチューニングガイド-eLinux.org
Linux_tiny.pdfを読む と、これが表示されます。
デフォルトのカーネル構成は、できるだけ多くのハードウェアをサポートするように構成されています。デフォルト構成のストリップされていないカーネルは、サイズが1897996 kB(カーネル+モジュールを含む)になりました。多くの不要なドライバーとオプションを削除すると(Clevoノートブックを所有している場合にHPモジュールが必要な理由)、892892 kBのサイズになり、ストックカーネルと比較して53%のサイズ削減になりました。
カーネルモジュールをインストールするときに、INSTALL_MOD_STRIP=1
オプションを追加します。これにより、すべてのデバッグシンボルが削除され、サイズが92%減りました(892892 kBから69356 kB)。これはインストールされるモジュールにのみ影響し、カーネル(vmlinuz)自体には影響しないことに注意してください。
make INSTALL_MOD_STRIP=1 modules_install
以下からのドキュメント/ kbuild / kbuild.txt:
INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed. If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used. Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.
ほとんどの主要なディストリビューションは、最大限のハードウェアサポートを使用してカーネルを構成しているため、ほとんどのコンピューターおよび後でプラグインするものであればすぐに使用できます。また、ほとんどの場合必要ないinitrdシステムも使用します。カーネル構成には、ビルドプロセスのサイズを最適化するオプションもあり、より優れた(より遅い)圧縮方法も選択できます。最後に、カーネルソースコードのサイズを確認する場合は、x86 / amd64以外のいくつかのアーキテクチャ、ネットワークプロトコル、ファイルシステム、およびおそらく決して使用しないその他の機能のサポートも含まれることに留意してください。無効にする。
それは非常にシンプルで、最小限のシステムはブートローダー+カーネルを必要とするだけですが、ほとんど役に立たないです。毎日使用されるコマンドのほとんどは、sh、lsなどのシステムのオプションのバイナリです。内部構造に興味がある場合は、Linux From Scratch!良い出発点です。