
나는 (대부분의 경우) 지시에 따라 데비안 방식으로 리눅스 커널을 구축하고 있습니다.데비안 리눅스 커널 핸드북. 따라서 컴파일 단계에서는 target 을 사용 deb-pkg
하고 성공적으로 종료되면 make deb-pkg
상위 디렉터리에 몇 가지 데비안 패키지가 생성됩니다.
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가 제공한 답변은 제가 기대했던 것과는 달랐지만 일부 커널 빌드 스크립트를 살펴보고 실행 가능한 솔루션을 찾았습니다. 결과 데비안 패키지를 생성하는 스크립트는 다음과 같습니다.scripts/package/builddeb
. 이 스크립트를 보면 디버깅 기호를 사용하여 패키지를 빌드하는 부분은 BUILD_DEBUG
주어진 greps KCONFIG
에 따라 달라지는 조건문으로 둘러싸여 있습니다 CONFIG_DEBUG_INFO=y
.
따라서 디버깅 기호가 있는 데비안 패키지 생성을 중지하려면 현재 커널 CONFIG_DEBUG_INFO
옵션을 비활성화해야 합니다:
CONFIG_DEBUG_INFO=n
답변2
커널 핸드북다음과 같이 제안합니다.
CONFIG_DEBUG_INFO 옵션이 비활성화된 경우 빌드는 더 적은 디스크 공간을 사용합니다. Debuginfo는 커널에서 crash, kgdb 및 SystemTap과 같은 바이너리 개체 도구를 사용하려는 경우에만 필요합니다.
이는 다음 명령으로 달성할 수 있습니다.
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 커널 홈페이지에서.