私は定期的にSlackware Linux用のパッケージを作成し、そのプロセスの一部はスペースを少なくするためにバイナリを削除することです。カーネルモジュールがある場合strip --strip-all
(またはstrip
オプションがない場合)、通常プラグインが失敗することがわかりました。
致命的:cloop挿入エラー(/lib/modules/2.6.38.7-smp/kernel/fs/cloop/cloop.ko):無効なモジュール形式
カーネルモジュールにはどのレベルのストリッピングが推奨されますか?を使用している場合、--strip-debug
システムのパフォーマンスやエラーログに悪影響を及ぼす可能性があるデバッグシンボルを削除しますか?
答え1
すべてのシンボルを削除すると、モジュールから呼び出されたシンボル名が削除されます。これはうまくいきません。
strip --strip-debug *.ko
デバッグシンボルを削除するには(=)を使用するのがstrip -g *.ko
安全です。実行すると、カーネルmakefileはこれを行いますmake INSTALL_MOD_STRIP=1 modules_install
。
CONFIG_DEBUG_INFO
カーネルを定義しないように設定して、デバッグシンボルが挿入されるのを防ぎます。
また、見ることができますLinuxカーネルモジュールを壊さずにローカルシンボルを削除する方法は?
答え2
私は最も安全な方法があると思いますstrip --strip-unneeded
。