"깨끗한"상태없이 Linux 커널 재 구축


11

4.11을 기반으로 사용자 정의 커널을 작성하고 있습니다 (Mintx64의 경우 중요). 나는 그것이 작동한다는 것을 증명하기 위해 이미 컴파일하고 설치했습니다. 이제 몇 가지 파일을 약간 변경했습니다 (드라이버 및 넷 서브 시스템에서 사용자 정의 커널을 먼저 컴파일해야하는 이유입니다).

이제 수정 된 커널을 만들고 싶습니다. 그러나 내가 달릴 때

fakeroot make -j5 deb-pkg LOCALVERSION=myname KDEB_PKGVERSION=1 

빌드 시스템은 많은 양의 물건을 "깨끗하게"시작하는 것처럼 보이므로 빨리 중단했습니다. 불행히도 내가 사용하는 컴퓨터에는 좋은 CPU가 없으며 처음부터 빌드하는 데 많은 시간이 걸립니다. 따라서 가능하면 다시는하지 않는 것이 좋습니다!

모든 것을 "정리"하지 않고 증분 빌드를 만들 수 있습니까? 아니면 커널 빌드 시스템의 요구 사항입니까?

내가 얻은 결과는 다음과 같습니다.

CHK      include/config/kernel.release
make clean
CLEAN .
CLEAN arch/x86/lib
...

@jc__ 위의 빌드 결과를 참조하십시오. 해당 대상의 makefile이 어디에 있는지 즉시 찾을 수는 없지만 여전히 찾고 있습니다 :)
T Kilney

답변:


12

make clean단지입니다 deb-pkg대상입니다. 살펴보십시오 scripts/package/Makefile:

deb-pkg: FORCE
        $(MAKE) clean
        $(call cmd,src_tar,$(KDEB_SOURCENAME))
        $(MAKE) KBUILD_SRC=
        +$(call cmd,builddeb)

bindeb-pkg: FORCE
        $(MAKE) KBUILD_SRC=
        +$(call cmd,builddeb)

bindeb-pkg대신 빌드하면 깨끗하지 않습니다. 어쨌든 소스 패키지가 필요하지 않을 것입니다.

소스 tarball에서 빌드 아티팩트를 tar하고 싶지 않기 때문에 그것이 깨끗하다고 ​​생각합니다.


2

에 의해 설치되는 다른 도구를 사용하여 해당 deb 패키지를 생성 할 수 있습니다. 그런 다음 예를 들어make-kpkgapt-get install kernel-package

make-kpkg --rootcmd=fakeroot --initrd --uc --us -j2 kernel_image kernel_headers

이 명령은 make clean매번 수행하지 않아야합니다 .


1

deb-pkg 명령의 makefile로 이동하여 스크립트에서 "make clean"을 제거하여이 문제를 해결했습니다. 이것은 빌드에 나쁜 영향을 미치지 않는 것처럼 보였고 지금은 문제없이 1 ~ 2 주 동안 사용자 정의 커널을 실행했습니다. YMMV!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.