通常の安定した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 、(現在は機能しなくなった)などの初期のLinuxディストリビューション [〜#〜 ] loaf [〜#〜] と他の多くの人が現在出発しましたが、どれも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
From Documentation/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! が良い出発点です。