2013-10-21 2 views
4

git 저장소에서 다양한 리눅스 커널을 컴파일했습니다. 커널을 다른 시스템에 복사하고 외부 모듈을 컴파일하기 위해 커널 헤더가 필요한 경우가 있습니다.나중에 커널 모듈을 컴파일하기위한 커널 헤더를 추출하는 방법

"make headers_install"을 실행하려고했지만 include/폴더 만 생성했습니다. 내가 그 폴더에 외부 모듈을 가리 키려고 할 때, Makefile을 찾을 수 없다는 불평을한다.

배포를 위해 커널 헤더를 패키지화하는 적절한 방법은 무엇입니까?

감사합니다.

+0

''다른 시스템에 커널을 복사하고 외부 모듈을 컴파일하기 위해 커널 헤더가 필요할 때가 있습니다. ' 커널 루트 디렉토리를 다른 시스템으로 복사 하시겠습니까? 그렇다면 빌드 된 커널의 경로를 제공하여 모듈을 빌드하는 방법을 알아 내면됩니다. –

+0

@VivekS 전체 커널 루트 디렉토리를 다른 시스템에 복사하고 싶지 않습니다. 왜냐하면 그것은 git 트리이기 때문에 엄청납니다. 커널 소스의 스냅 샷 만 복사하려고합니다. 심지어 커널 모듈을 빌드 할 때 .c 파일이 필요하지 않기 때문에 git archive를 사용하고 싶지 않습니다. – Patrick

답변

3

커널 패키지를 만드는 대신 dpkg 기반 배포판의 경우 "make deb-pkg"를 만들고 RPM 기반 배포판의 경우 "rpm-pkg 만들기"를 만듭니다. 이것들은 여러 패키지를 생성하는데, 그 중 하나는 외부 모듈을 빌드하는 데 사용할 수있는 패키지입니다. 데비안 패키지에서는 linux-headers- *이어야하고 RPM 버전에서는 "devel"패키지가 있어야합니다.

+0

거의 정확히 내가 찾고있는 것입니다. 커널 이미지가 거대 (~ 500MB)이기 때문에 헤더 파일 만 생성하면 완벽 할 것이므로 사용되지 않는 커널 이미지를 생성하는 데 시간이 걸립니다. 하지만, 다른 해결책이 없다면 이것은 실행 가능한 솔루션입니다! – Patrick

+0

나는 적어도 소스 패키지를 빌드해서는 안되는 binrpm-pkg 타겟이 있다는 것을 발견했다. (devel 패키지가 소스 패키지로 간주되지 않는 한, 나는 잘 모른다.) Makefile과 스크립트는 scripts/package에 있습니다. RPM 빌드에 대해 많이 알지는 못하지만, 필요한 경우 Makefile에서 rpm 호출을 패치하여 필요한 패키지 만 빌드 할 수 있습니다. –

+0

데비안에는'kernel-package' 패키지에'make-kpkg' 프로그램이 있습니다. 필자는 설치를위한 커널 이미지와 헤더를 만드는 가장 쉬운 방법이라고 생각합니다. –

0

어떤면에서 이것은 단지 the previous answer의 확장 일뿐입니다. 커널 소스에서 scripts/package/builddeb 파일을 보면 커널 빌드에서 외부 모듈을 빌드하는 데 필요한 파일을 선택하고/usr/src/linux-headers- $ version에 넣는 스크립트 코드를 찾을 수 있습니다. builddeb 파일에서 "# Build kernel header package"문자열을 검색하여 로컬 커널 버전에서 해당 스크립트 코드를 찾을 수 있습니다. 손으로 일을하고 싶다면 스크립트 코드를 수동으로 실행할 수 있습니다.

관련 문제