
私はLinuxカーネルをDebianのやり方で構築しています。Debian Linux カーネル ハンドブックしたがって、コンパイル手順では target を使用しdeb-pkg
、正常に終了すると、make deb-pkg
親ディレクトリにいくつかの Debian パッケージが生成されます。
linux-firmware-image-VERSIONS.deb
linux-headers-VERSIONS.deb
linux-image-VERSIONS.deb
linux-image-VERSION-dbg_VERSION.deb
linux-libc-dev_VERSIONS.deb
多くの場合、linux-image-x.y.z.deb
他の 4 つのパッケージは使用せずにインストールするだけです。これはそれほど問題ではありませんが、カーネル デバッグ シンボル ( ) を含むパッケージの生成にかなりの時間がかかることがわかっています。ビルド ターゲットにデバッグ シンボル パッケージを生成しないようlinux-image-x.y.z-dbg_x.y.z_arch.deb
に指示する方法があるかどうか疑問に思っています。deb-pkg
答え1
MariusMatutiae の回答は私が期待していたものとは違っていましたが、カーネルビルドスクリプトをいくつか見て、実行可能な解決策を見つけました。結果として得られる Debian パッケージを生成するスクリプトは、scripts/package/builddeb
BUILD_DEBUG
このスクリプトを見ると、デバッグ シンボルを使用してパッケージをビルドする部分は、指定されたKCONFIG
for をgrep する条件によって囲まれていますCONFIG_DEBUG_INFO=y
。
したがって、デバッグ シンボルを含む Debian パッケージの生成を停止するには、現在、カーネルCONFIG_DEBUG_INFO
オプションを無効にする必要があります。
CONFIG_DEBUG_INFO=n
答え2
カーネルハンドブックこれは次のように示唆しています:
CONFIG_DEBUG_INFO オプションを無効にすると、ビルドで使用するディスク容量が少なくなります。カーネルで crash、kgdb、SystemTap などのバイナリ オブジェクト ツールを使用する予定がある場合にのみ、Debuginfo が必要です。
これは次のコマンドで実現できます:
cd linux-source-4.12
scripts/config --disable DEBUG_INFO
答え3
最新のカーネル バージョン (5.19 以降) をコンパイルする場合、変更する構成シンボルは次のとおりです。
scripts/config --undefine GDB_SCRIPTS
scripts/config --undefine DEBUG_INFO
scripts/config --undefine DEBUG_INFO_SPLIT
scripts/config --undefine DEBUG_INFO_REDUCED
scripts/config --undefine DEBUG_INFO_COMPRESSED
scripts/config --set-val DEBUG_INFO_NONE y
scripts/config --set-val DEBUG_INFO_DWARF5 n
設定ファイルのソース(Ubuntu のバージョンなど)に応じて、以下を実行する必要がある場合があります。
scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
答え4
以下のように設定する必要があります.configシンボル:
CONFIG_FRAME_POINTER=n
CONFIG_KGDB=n
CONFIG_KGDB_SERIAL_CONSOLE=n
また、CONFIG_DEBUG_RODATAがコメントアウトされて設定されていないことを確認する必要があります。
# CONFIG_DEBUG_RODATA
Linuxカーネルをコンパイルするためのすべての情報は、かなり信頼できる方法で見つけることができます。Linuxカーネルのホームページ。