저는 데비안 사용자는 아니지만 제가 작성한 이 커널 패치를 테스트하려면 데비안 환경이 필요하며, 말할 필요도 없이 지난 며칠 동안 데비안에서 사용자 정의 커널을 구축하는 방법을 알아내려고 노력했습니다. , 그리고 나는 좌절감이 끝이 없습니다 ...
사용자 정의 커널을 성공적으로 설치했지만 구성 옵션을 변경해야 합니다. 실행한 후 make -j5 deb-pkg
다음 오류가 발생합니다.
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/stackdelta' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/stackusage' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tags.sh' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tools-support-relr.sh' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tracing/draw_functrace.py' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tracing/ftrace-bisect.sh' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/ver_linux' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/xz_wrap.sh' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-headers/usr/src/linux-headers-5.8.0+/tools/objtool/objtool: binary file contents changed
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/tools/objtool/objtool' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-image-dbg/usr/lib/debug/lib/modules/5.8.0+/vmlinux: binary file contents changed
dpkg-source: warning: executable mode 0755 of 'debian/linux-image-dbg/usr/lib/debug/lib/modules/5.8.0+/vmlinux' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-image-dbg/usr/share/doc/linux-image-5.8.0+-dbg/changelog.Debian.gz: binary file contents changed
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/postinst' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/postrm' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/preinst' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/prerm' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-image/boot/vmlinuz-5.8.0+: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.alias.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.builtin.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.builtin.modinfo: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.dep.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.symbols.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/usr/share/doc/linux-image-5.8.0+/changelog.Debian.gz: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-libc-dev/usr/share/doc/linux-libc-dev/changelog.Debian.gz: binary file contents changed
dpkg-source: warning: the diff modifies the following upstream files:
.clang-format
.cocciconfig
.config.old
.get_maintainer.ignore
.mailmap
.version
CREDITS
MAINTAINERS
Module.symvers
README
u_f.patch
dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
dpkg-source: error: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -i.git -b . subprocess returned exit status 1
make[1]: *** [scripts/Makefile.package:77: deb-pkg] Error 1
make: *** [Makefile:1520: deb-pkg] Error 2
이 문제를 어떻게 해결할 수 있을까요...?
답변1
정말,dpkg 소스이전에 빌드된 일부 파일은 무시되지 않으며 다음과 같은 오류가 표시됩니다.
make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom
이를 통해 깨끗한 복제 후에 한 번만 빌드할 수 있습니다. 다음 문제로 인해 후속 빌드가 항상 실패합니다.디벅
그러므로Bindb-pkg 만들기도움이 될 다음 빌드 명령은 다음과 같습니다.
make -j `getconf _NPROCESSORS_ONLN` bindeb-pkg LOCALVERSION=-custom
훌륭하게 작동했습니다. 이제 빌드가 성공했습니다.
답변2
이 답변을 조사하는 동안 네이티브가 아닌 패키지에 대한 이 질문에 답변했지만 linux-signed-amd64
소스 패키지(아마도 빌드 중인 패키지)가 네이티브 패키지라는 것을 알게 되었습니다. 불행히도 이로 인해 나에게비로컬 패키지부분적으로는 그렇지만 이 문제가 발생하는 모든 사람에게 여전히 유용할 것이라고 생각합니다.
비로컬 패키지
일반적으로 이 문제가 발생하는 이유는 기본이 아닌 패키지에 추적되지 않은 변경 사항을 적용했기 때문입니다. 이는 debian/source/format
다음과 같은 경우에 적용됩니다 3.0 (quilt)
. 예를 들어:
apt source <package>
cd <package>_<version>
# make changes to sources
dpkg-buildpackage
apt source
원본 업스트림 tarball( +dfsg
릴리스에 없는 경우 원본 작성자의 버전)을 다운로드하고 압축을 푼 다음 데비안 패키징 내용( debian/
디렉토리에 있음)을 추가합니다.
dpkg-buildpackage
(or )를 사용할 debuild
때 가장 먼저 하는 일은 이를 호출하여 dpkg-source
패키지 외부의 모든 것이 debian/
원래 업스트림 타르볼과 정확히 일치하는지 확인하는 것입니다. 이렇게 하면 데비안의 누구도 문서화되지 않은 변경 사항을 추가하지 않습니다.
업스트림 콘텐츠에 대한 모든 변경 사항은 패치로 독립적으로 적용되어야 합니다. quilt
이 목적으로 사용됩니다. 확인이 이루어진 후 패치가 저장 debian/patches
되고 적용됩니다. dpkg-source
이렇게 하면 배포별 콘텐츠가 올바르게 문서화됩니다. 또한 패치 형식에 메타 콘텐츠(또는 헤더)를 위한 공간이 있으므로 어떤 패치가 업스트림(원래 개발자에게)으로 전달되었는지 추적하는 데 도움이 됩니다.
이 문제가 발생할 수 있는 또 다른 방법은 빌드가 소스 코드에서 발생하는 경우입니다(즉, 빌드 아티팩트가 빌드 디렉터리에 격리되지 않거나 스크립트가 소스 파일을 내부에서 수정함을 의미). 모든 것을 원래 상태로 복원하는 것이 가능하기를 바랍니다 debuild -T clean
. 그렇지 않으면 수동으로 수행해야 합니다.
네이티브 패키지
이 예에서는 apt source
네이티브 linux-signed-amd64_*.tar.xz
소스 코드 패키지를 다운로드한 후 압축을 풉니다. debuild
또는 를 사용할 때 dpkg-buildpackage
일반적으로 소스 패키지와 모든 바이너리 패키지를 생성합니다. 소스 패키지가 이미 존재하므로 debuild
이 단계를 건너뛰되 소스 패키지가 현재 소스 트리와 일치하는지 확인하세요. 이것이 모두 실패하는 곳입니다. 가지고 있는 소스 패키지를 교체하는 대신 오류가 발생하도록 선택합니다. 소스 패키지를 제거( 사용 debuild -T clean
)하면 이 충돌이 해결됩니다.
답변3
/usr/src에 설치된 .deb 파일과 디렉터리로 인해 오류가 발생한 것 같습니다 make deb-pkg
. 해당 파일을 제거하여 문제를 해결했고 이제 정상적으로 컴파일되는 것 같습니다.