コンパイルされたモジュールサイズの違いを説明して削除する方法

コンパイルされたモジュールサイズの違いを説明して削除する方法

組み込み(ARMベース)Linux SBCを購入し、製造元はUbuntuが事前に構築されたSDカードを提供しました。

製造元から提供された内容を再現するために、カーネルとモジュールを再コンパイルしようとしています。私はそれを使用していますカーネルソースコードそして/ bootで見つけた設定ですが、そのモジュールと私のモジュールの間に大きなサイズの違いがあります。私のモジュールフォルダはコンパイルされた147 MB​​で、そのフォルダのフォルダは8.9 MBです。

どういうわけか追加のモジュールをコンパイルしたかもしれないと思いましたが、.koファイルを個別に比較しましたが、私のファイルはいつもはるかに大きかったです。

CONFIG_MODULE_COMPRESS_*を介してモジュールを圧縮することが可能だと思いましたが、これが/ boot内部構成の内容です。

CONFIG_MODULE_COMPRESS_NONE=y
# CONFIG_MODULE_COMPRESS_GZIP is not set
# CONFIG_MODULE_COMPRESS_XZ is not set
# CONFIG_MODULE_COMPRESS_ZSTD is not set

make modulesメーカーは実行時に圧縮設定を無視できますか?サイズの違いをどのように説明できますか?

FWIW 次のコマンドを使用して x86 Ubuntu デスクトップから ARM にクロスコンパイルしています。

make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOCALVERSION=-kstr-sama5d27 zImage
make modules -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOCALVERSION=-kstr-sama5d27
make modules_install INSTALL_MOD_PATH=./modules ARCH=arm LOCALVERSION=-kstr-sama5d27

INSTALL_MOD_STRIP=1モジュールのサイズを小さくするために install_modules コマンドに追加を提案するガイドを見たことがありますが、これはエラーを引き起こします。

ストリップ:入力ファイルの形式を認識できません。

編集する:次のコマンドを使用して、.koファイルの1つを手動で削除しようとしました。

arm-linux-gnueabihf-objcopy -g aes-arm-bs.ko aes-arm-bs-stripped.ko

特に、このファイルはオリジナルに近づいています。元の19104バイトと比較すると、18376バイトです。

また、以下を使用して、コンパイルされたモジュールと提供されたモジュールを比較しましたsize

  • 供給
$ size aes-arm-bs.ko
   text    data     bss     dec     hex filename
   9047    2755      20   11822    2e2e aes-arm-bs.ko
  • 私はそれをコンパイルしました
$ size aes-arm-bs.ko
   text    data     bss     dec     hex filename
   8893    2755      20   11668    2d94 aes-arm-bs.ko

関連情報