2016-11-08 4 views
0

Linux에 TPM 드라이버를 등록하려고합니다. 컴파일하는 동안 .ko 출력 파일을 가져올 수 있지만 아래 나열된 오류가 발생합니다. 필자의 의견으로는,이 기능의 정의가 누락 된 내 컴퓨터의 리눅스 헤더와 관련이있다. 나는 리눅스 헤더와 커널을 모두 최신 버전으로 업그레이드했지만 여전히 문제가 발생했다.tpm 드라이버를 컴파일하면 tpm_open()이 정의되지 않습니다.

이러한 기능이 인식되지 않기 때문에 modprobe는 동일한 오류 (이 기능에서 알 수없는 기호 err0)로 실패합니다.

빌딩 모듈, 스테이지 2 MODPOST KERNELRELEASE = 4.4.0-45 제네릭와 건물 2 개 모듈 WARNING "tpm_open은"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 미정! 경고 : "tpm_read"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_remove_hardware"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] undefined! 경고 : "tpm_release"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_show_pubek"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_show_caps"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_write"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_register_hardware"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_store_cancel"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다! 경고 : "tpm_show_pcrs"[/home/burwani/Desktop/tpm_act2_driver_poc/tpm_act2_driver/tpm_act2.ko] 정의되지 않았습니다!

답변

0

커널 4.4.0-45-generic을 사용하고 있습니다. 필자는 tpm_open()과 tpm_read() 같은 메소드가 4.4 이전의 커널에서만 헤더 파일에 선언되었고, tpm.h 헤더 파일에서 선언 된 마지막 커널 은 3.9 : http://lxr.free-electrons.com/source/drivers/char/tpm/tpm.h?v=3.9

버전이 < = 3.9 인 커널에 대해 빌드 된 커널 모듈에 코드를 적용 할 수 있습니까?

커널 4.4에서는 tpm.h 헤더 파일에서 이러한 메소드를 찾을 수 없습니다.

tpm_open()은 커널 4.4에서 정적 메소드로 정의됩니다.

모듈을 modprobe하려고 할 때 "정의되지 않은"것으로 보이는 다른 방법도 정적이라고 정의됩니다.

+0

예. 정말로 옳습니다. 즉, 4.4 버전을 준수하도록 드라이버 코드를 변경해야합니다. – Bwani