dbg 패키지를 생성하지 않고 Linux 커널 deb-pkg 대상을 컴파일하시겠습니까?

dbg 패키지를 생성하지 않고 Linux 커널 deb-pkg 대상을 컴파일하시겠습니까?

나는 (대부분의 경우) 지시에 따라 데비안 방식으로 리눅스 커널을 구축하고 있습니다.데비안 리눅스 커널 핸드북. 따라서 컴파일 단계에서는 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 커널 홈페이지에서.

관련 정보