カーネルの再構築とか modprobeとか

更に小容量のメモリで動かすためにカーネルの再構築してみた。しかし、これは労多くして益少なし、だった。
現在のLinuxカーネルは殆どの機能がローダブル・モジュール形式になっているので、デバイスが存在しなかったり、機能を使わない間はメモリを消費しない。幾つかの機能(例えばIPマルチキャスティングなど)はビルトインになっているため再構築してカーネルから除外できるが、全部合わせてもせいぜい数百KB程度の話だし。サポートするマルチCPUの数等の“定数”を削っても大したことはない*1

カーネルの再構築は組込みOSとして32MBとか64MBのメモリでLinuxを動かす(しかもその製品が量産されコストダウン効果が高い)場合には有効だが、一般のPCでメモリの削除を目的としては余り意味が無さそうだ。

ただし、不必要なドライバ類を削除することで、起動時に各モジュールが必要かどうかの判断(プロービング)は省略できるので起動時間の短縮には役立つ場合がある(特に、応答待ちになるデバイスなど)。しかし、これも塵積の世界なのでかなりの労力が必要となる。

カーネルの機能の多くはローダブルモジュールなので、メモリの抑制であれば modprbeに対するコンフィグレーション(/etc/modprobe.d/)で不必要なモジュールをロードしないようにする方が現実的だろう。ただし、これもカーネルの再構築と同様にあまり削除するところは無い。(不必要なモジュールはロードしないようになっているため。)

やはり一番効果が高いのは、上で書いてきた通り、不必要なアプリケーションを動かさない、または削除する(apt-get purge)ことだろう。

*1:Ubuntuカーネルの再構築は“Ubuntuのカーネル再構築”を参照のこと。