linuxカーネルってこんなに小さいの?

kernel linux

普通の安定した3*カーネルは今では70mbくらいになっています。しかし、30~10mbのlinuxディストリビューションは、ソフトなどが出ているものはほとんどありません

これらのディストロでは、どうして linux カーネルはこんなに小さくできるのでしょうか?不要なモジュールとドライバだけを取り除くことで、サイズを劇的に小さくすることができるのでしょうか?カーネルのサイズを小さくするために他に何をしているのでしょうか?

  57  puzzled tux  2011-12-22


ベストアンサー

そうですね、それらを削ぎ落として(必要なものだけをコンパイル/モジュール化して)、カーネルを圧縮して(サイズを最適化して)いけば、こんなに小さなカーネルができあがります。狙ったシステムのために、もっと小さいものを作ることもできる。自分のPCを知っているように、自分のものを知っているように。だから必要なものだけコンパイルする。自作のSATAドライバとかUSB用のドライバとか。他には何もない。ウェブカメラも古いIDEドライブも何もない

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

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

カーネルが小さいDistros

37  Apache  2011-12-22


Tom’s Root-Boot, MuLinux, Diet-router, (現在は廃止されています) LOAF, その他多くのものは、1つか2つの1.44 MBのディスクにLinuxシステムが動作するようになっています

Linux カーネルは成長しましたが、それはモジュール化されています: カーネルモジュールは必要に応じてロードされます。このようにして、非常に小さなフットプリントで Linux ディストリビューションを作成することが可能になりました

ご覧ください。カーネルサイズチューニングガイド – eLinux.org を参照してください

Linux_tiny.pdfを読むとこんな感じです

  • 歴史的な 0.99pl15 カーネル。Slackware 1.1.2, 1994: 301K
  • Fedora Core 2: 1.2M
  • SuSE 9.1: 1.5M
  • 2.6.5-tiny1のテスト設定。IDE, ext2, TCP, NIC: 363K

21  RedGrittyBrick  2011-12-22


デフォルトのカーネル構成は、できるだけ多くのハードウェアをサポートするように構成されています。デフォルトの設定でカーネルをストリップしていない場合、サイズは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.

11  Lekensteyn  2011-12-24


ほとんどの主要なディストロはカーネルを最大のハードウェアサポートで設定しているので、ほとんどのコンピュータや後からプラグインしたものですぐに動作します。また、ほとんどの場合には必要のない initrd システムを使用しています。カーネルの設定には、ビルドプロセスをサイズに最適化するオプションがあり、より良い(遅いですが)圧縮方法も選択できます。最後に、カーネルのソースコードのサイズを見ているのであれば、x86/amd64 以外のアーキテクチャ、ネットワークプロトコル、ファイルシステム、そしておそらく使わないであろう他の機能のサポートも含まれており、それらを無効にすることができることを覚えておいてください

3  Jonathan Amend  2011-12-22


極めてシンプルで、最低限のシステムであれば、ブートローダ+カーネルが必要なだけで、ほとんど意味がありません。日常的に使うコマンドのほとんどは、shやlsなどのように、システムのためのオプションのバイナリです。内部に興味があれば、Linux from Scratch!

1  pinxue  2011-12-22


タイトルとURLをコピーしました