Gentooがインストールされています。カーネルをコンパイルするためにUbuntu 14.04カーネル設定を使用しました。
モジュールライブラリのサイズがなぜそんなに違うのか理解するのは難しいです。
Ubuntuでは
oz123@ubuntu $ du -sh /lib/modules/4.2.0-36-generic/
202M /lib/modules/4.2.0-36-generic/
Gentooから
oz123@gentoo ~ # du -sh /lib/modules/4.2.8-gentoo-1/
1.8G /lib/modules/4.2.8-gentoo-1/
いくつかのコンパイル時オプションが原因ですか?ここで何か抜けましたか?
修正する
私がやった
DIR1=/lib/modules/4.2.0-36-generic/
DIR2=/mnt/gentoo/lib/modules/4.2.8-gentoo-1/
diff -r $DIR1 $DIR2 | grep $DIR2
これは、両方のライブラリのモジュールがバイナリが異なることを示します。たとえば、次のようになります。
Binary files /lib/modules/4.2.0-36-generic/kernel/sound/pci/ac97/snd-ac97-codec.ko and /mnt/gentoo/lib/modules/4.2.8-gentoo-1/kernel/sound/pci/ac97/snd-ac97-codec.ko differ
謎がより明確になり始めます。
$ du -sh /lib/modules/4.2.0-36-generic/kernel/sound/usb/misc/snd-ua101.ko
36K /lib/modules/4.2.0-36-generic/kernel/sound/usb/misc/snd-ua101.ko
$ du -sh /mnt/gentoo/lib/modules/4.2.8-gentoo-1/kernel/sound/usb/misc/snd-ua101.ko
368K /mnt/gentoo/lib/modules/4.2.8-gentoo-1/kernel/sound/usb/misc/snd-ua101.ko
これは私が確認したいくつかのモジュールと一致します。
その場合、Gentooでコンパイルされたモジュールはほぼ10倍大きくなります。なぜですか? ? ?
ああ...答えは服を脱いでいます...
laptop-oz ~ # du -sh /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
368K /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
laptop-oz ~ # strip --strip-unneeded /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
laptop-oz ~ # du -sh /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
44K /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
アップデート2
ストリッピングだけがすべてではありません。コンパイルフラグもあるようです。これを確認するために、UbuntuにFiglet(バージョン2.2.5)をインストールし、gentooでEmergeを使用して同じバージョンをコンパイルしました。
Ubuntuでは:
$ ls -l /usr/bin/figlet-figlet
-rwxr-xr-x 1 root root 43504 Nov 26 2012 /usr/bin/figlet-figlet
Gentooから:
# ls -l /usr/bin/figlet
-rwxr-xr-x 1 root root 47384 Jun 8 16:40 /usr/bin/figlet
Gentooでのコンパイルフラグは次のとおりです。
-O2 -pipe -march=haswell
-O1
Figletを使用してビルドすると、Ubuntuと同様の結果が得られるようです。
# ls -l /usr/bin/figlet
-rwxr-xr-x 1 root root 43288 Jun 8 17:10 /usr/bin/figlet
いくつかの違いは実際にはgccバージョン(Ubuntu 4.8.4、Gentoo 4.9.3)によるものです。
答え1
Gentooモジュールを自分で作成したので、デバッグ情報を削除するのを忘れた可能性があります。努力する
strip --strip-unneeded snd-ua101.ko
影響があることを確認してください。
次にシステムのモジュールを再構築するときは、次のコマンドを使用してすべてのモジュールを削除します。
make INSTALL_MOD_STRIP=1 modules_install