2013-03-24 3 views
5

아주 특별한 이유로 커널에 여러 모듈이 내장 된 Linux 2.6.32.6 커널을 컴파일하려고합니다. PXE 부팅을 위해 NFS에 루트 파일 시스템을 포함 시켰습니다. LAN을 통해 자체 구제 활동 Live-CD 부팅. ROOT_NFS에 필요한 의존성과 모듈을 포함시킨 후 리눅스 커널을 make bzImage으로 컴파일하려합니다. 이 실행되면 나는 Linux 커널 오류 컴파일 xt_CONNMARK.h

make[4]: *** No rule to make target './linux-2.6.32.6/include/linux/netfilter/xt_CONNMARK.h', needed by './linux-2.6.32.6/usr/include/linux/netfilter/.install'. Stop. 

지금 내가 구성에서 넷 필터 모듈을 사용하지 않도록 노력하고 만들 넷 필터를 필요로 종속성을 찾기 위해 시도 오류를 얻을 수 있지만,이 오류가 계속 발생 유지합니다.

이 오류를 해결하기위한 제안 사항은 훌륭합니다.

+0

아마도'depends' 파일을 지울 필요가 있습니다. * kbuild *는 당신이'.config' 파일을 변경 했음에도 불구하고이 이전 버전의 리눅스에서는 그렇지 않을 수도 있습니다. –

+0

'make clean'을 먼저하거나 수동으로'Makefile' 의존성 정보를 제거하십시오. 귀하의 문제는 매우 익숙한 것 같지만 문제가 무엇인지 기억하지 못합니다. 아마도'make O = ... '와 관련이있을 것입니다. –

+0

여러 번 시도한 후 Kbuild에서 특정 항목을 제거했습니다. 그러나 이상한 일은'xt_CONNMARK.h '에 2 개의 엔트리가있는 곳이었다. 실패한 사람은 모두 대문자 였고 다른 사람은 모두 소문자였습니다. 이 사건으로 몇 가지 사례를 추가했지만 모든 이벤트 (총 5 건)를 제거한 후에는 시스템이 올바르게 컴파일되고 부팅되었습니다. – Blackninja543

답변

10

은 대소 문자를 구별하지 않는 파일 시스템을 통해 전송되기 때문에 소스 파일에서 일부 파일을 손실했기 때문에 발생했을 가능성이 큽니다. 리눅스 소스 트리에는 이름이 같지만 대소 문자가 다른 약 15 개의 서로 다른 파일이 여러 번 있습니다. 합리적인 모든 파일 시스템은 대소 문자를 구별하기 때문에 리눅스 커널을 만드는 사람들에게는 일반적으로 문제가되지 않습니다.

호기심이있는 사람들에게는 이러한 방식의 파일이 모두 netfilter 트리에 있습니다. 예를 들어 include/linux/netfilter/xt_CONNTRACK.hinclude/linux/netfilter/xt_conntrack.h의 v3.0을 참조하십시오.

그래서 파일은 존재하지만 잃어 버렸습니다. 새로운 소스 트리를 가져와 대소 문자를 구분하는 파일 시스템에서 압축을 풀면 더 이상이 오류가 발생하지 않습니다. 또는 "원시"원본 트리 또는 github mirror of the kernel에서 파일을 복사하면 트리 수정 내용이 손실되는 것을 두려워 할 수 있습니다. 컴파일하는 버전의 릴리스에서 변경되지는 않을 가능성이 큽니다.