組み込み(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