Module.symvers를 생성하는 방법?


14

최근에 Unpacking kernel-source rpm off-system (OpenSuse)을 겪었 습니까? ; 내 컴퓨터에서> 10 시간이 걸렸을 때 여기에 설명 된 프로세스를 수행 한 후에도 아무 Module.symvers곳도 찾을 수 없다는 것이 놀랍습니다 !

"generate Module.symvers"를 검색하면 다음과 같은 결과가 나타납니다.

참고 : "modules_prepare"는
CONFIG_MODVERSIONS가 설정되어 있어도 Module.symvers를 빌드하지 않습니다 . 따라서
모듈 버전 관리가 작동하려면 전체 커널 빌드를 실행 해야합니다 .
( 리눅스 커널 문서 :: kbuild : modules.txt )

...하지만 실제로는 얻지 못했습니다-이전 단계에서 커널을 빌드하지 않았습니까 (위의 링크에 설명되어 있습니까? CC가 * .o의 전체 무리를 생성하는 데 10 시간 이상 걸리는 것을 알고 있습니다. 파일과 LD를 연결하여 무언가를 만들었을 것입니다. 그렇다면 어디에 Module.symvers있습니까?

보다 명시적인 용어로 Module.symvers를 생성하려면 정확히 어떤 명령을 호출해야합니까? 나는 그것이 make prepare작동하지 않는다는 것을 알고 있지만 그 명령은 무엇입니까?


참고로, 오픈 수세에, 당신은 얻을 수 Module.symvers에 의해 zypper install kernel-source, 그리고 다른 리눅스 배포판에 유사한. 파일은에 있습니다 lib/modules/xxx/build.
Syrtis Major Major

답변:


16

Module.symvers경우는 (재) 컴파일 모듈 생성 (재)입니다. 를 실행 하면 커널 트리의 루트에 파일 make modules이 있어야합니다 Module.symvers.

을 실행 make하지 않고 make modules아직 실행 하지 않은 경우 아직 모듈을 빌드하지 않았습니다. 커널 자체의 기호 ( vmlinux또는 아키텍처 종속 이미지 형식 중 하나)는입니다 System.map.


@Gilles-그 이후에도 Answer : Module.symvers 파일을 찾았습니다 . make modules실제로 만들었 음을 확인할 수 있습니다 Module.symvers. 또한 감사의 차이를 명확하게하기위한 makemake modules, 그리고 관계 System.map. 건배!
sdaau

기계에서 "만들기"를 사용할 수 없으면 어떻게합니까?
bzupnick

3
@bzupnick 설치하십시오. Linux 커널 모듈을 빌드하는 데 필요한 도구 중 하나입니다. 많은 소프트웨어를 만들려면 make가 필요합니다.
Gilles 'SO- 악마 그만해

다른 컴퓨터에서 LKM을 크로스 컴파일하려고합니다. 첫 번째 상자에는 설치할 수 없습니다.
bzupnick

@bzupnick 어쨌든 모듈을 빌드해야합니다. 모든 것은 빌드 머신에서 일어나고 insmod있습니다.를 제외하고 대상 머신에서는 할 일이 없습니다 .
Gilles 'SO- 악마 그만해

3

Derek Molloy의 샘플 LKM 중 하나를 컴파일 할 때 발생하는 경고를 인터넷 검색하여이 질문을 찾은 사람들을 위해 :을 사용하여 빈 것을 만들 수 있습니다 touch Modules.symvers. 커널이 modversions (운영 체제에서 모듈이 커널과 일치하도록하기 위해 사용하는 CRC)를 사용하지 않고 모듈에 다른 모듈에 대한 종속성이없는 경우 경고를 억제하기에 충분합니다.

WARNING: Symbol version dump ./Module.symvers
         is missing; modules will have no dependencies and modversions.

빈 파일은 gcc에 의해 생성 된 파일과 동일합니다. gcc는 수정이 0x00000000없는 시스템 에서 기호가 모두 동일한 CRC 값을 갖습니다.


1

CentOS 및 기타 RedHat 변형에서 실행중인 커널에 해당하는 파일을 추출하십시오.

zcat /boot/symvers-$(uname -r).gz > ./Module.symvers

우분투 및 기타 데비안 변형에서 파일 이음새가 자동으로 발견됩니다. 그러나 필요한 경우 파일은 다음과 같습니다.

/usr/src/linux-headers-$(uname -r)/Module.symvers

linux-headers-$(uname -r)폴더를 찾을 수 없습니다
King Stone
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.