GNU/Linux >> Linux の 問題 >  >> Linux

Linux カーネルはどうしてこんなに小さいのでしょうか?

はい。それらを取り除くと(モジュールを必要なものだけをコンパイル/作成します)、カーネルを圧縮します(サイズを最適化します)...非常に小さなカーネルになります。ターゲットシステム用に、さらに小さいものを作成できます。私は自分の PC を知っているように、自分のものを知っています。ということで、必要なものだけまとめます。私自身の SATA ドライバー、USB 用のドライバーなどのように。他には何もありません。ウェブカメラも、古い IDE ドライブも、何もありません。

また、あなたが遭遇するより大きなものは、カーネル全体です(これは決して使用する必要はありません)。デスクトップのものでさえ、(ほとんどの場合、モジュールとして)多くの不要なものが含まれています。しかし、初心者は、プラグインするすべての種類のハードウェアが正常に機能することを期待しています。

(モジュールは必要になるまでロードされないことに注意してください。3 つの状態があります。
[ ] - コンパイルされず、カーネルの一部になりません。
[M] - モジュールとしてコンパイルされます。
(modprobe するか、必要なときにシステムが自動ロードします。
システム、ユーザーランドに依存します。)
[X] - カーネルにコンパイルされ、常に存在します。

小さなカーネルのディストリビューション:

  • Tiny Core Linux、Micro Core Linux、12MB Linux GUI デスクトップ、ライブ、質素、拡張可能
  • Puppy Linux コミュニティ ホーム - はじめに

Tom's Root-Boot、MuLinux、Diet-router、(現在は廃止された) LOAF などの初期の Linux ディストリビューションや、現在は廃止された他の多くのディストリビューションはすべて、1 枚または 2 枚の 1.44 MB ディスケットで動作する Linux システムに適合します。

Linux カーネルは大きくなりましたが、モジュラーです。カーネル モジュールは必要に応じてロードされます。したがって、フットプリントが非常に小さい Linux ディストリビューションを作成することは依然として可能です。

参照:カーネル サイズ チューニング ガイド - eLinux.org

Linux_tiny.pdf を読むと、これが表示されます

  • 歴史的な 0.99pl15 カーネル:Slackware 1.1.2、1994:301K
  • Fedora コア 2:1.2M
  • SuSE 9.1:1.5M
  • 2.6.5-tiny1 テスト構成:IDE、ext2、TCP、NIC:363K

デフォルトのカーネル構成は、できるだけ多くのハードウェアをサポートするように構成されています。デフォルト構成のストリップされていないカーネルは、1897996 kB のサイズになりました (カーネル + モジュールを含む)。多くの不要なドライバーとオプションを取り除くと (Clevo ノートブックを所有しているのに、なぜ HP モジュールが必要になるのでしょうか)、892892 kB のサイズになりました。これは、ストック カーネルと比較して 53% のサイズ削減です。

カーネル モジュールをインストールするときは、INSTALL_MOD_STRIP=1 を追加します。 オプション。これにより、すべてのデバッグ シンボルが取り除かれ、サイズが 92% 縮小されます (892892 kB から 69356 kB に)。これはインストールされるモジュールにのみ影響し、カーネル (vmlinuz) 自体には影響しないことに注意してください:

make INSTALL_MOD_STRIP=1 modules_install

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.

Linux
  1. Linux LKM ローダブル カーネル モジュールを作成、コンパイル、ロードする方法

  2. Linuxでファイルをシンボリックリンクするにはどうすればよいですか?

  3. Linux で Xcode を実行できますか?

  1. なしでは生きていけないLinuxカーネルモジュール

  2. Linux カーネルモジュールのコーディング方法は?

  3. Linux で停止したジョブを再開するにはどうすればよいですか?

  1. Linuxデスクトップでカーネルをアップグレードする方法

  2. Linuxでカーネルバージョンを確認する方法

  3. Linux –カーネルモジュールを適切にリロードする方法は?