module verification failed
NVIDIA/Error

module verification failed

728x90

Jetson 장치에 커스텀 모듈을 등록할시 아래와 같이 에러가 뜬다.

[    4.048159] nvidia: module license 'NVIDIA' taints kernel.
[    4.048160] Disabling lock debugging due to kernel taint
[    4.048164] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[    4.048165] nvidia: module license taints kernel

 

해당 에러는 현재 Jetson 장치에 있는 서명 키(sig key)와 등록하려는 모듈의 서명 키가 다르기 때문에 발생하는 증상이다. 로그가 남긴 하지만 모듈은 정상적으로 등록된다.

modinfo {module}.ko

위 명령어를 사용하여 모듈의 정보를 볼 수 있다.

 

이는 JETAPACK 5.1.2 이후 부터 추가된 기능으로 보안의 목적으로 생긴 기능이다. 해당 기능은 설치 중에 모듈에 서명한 다음 모듈을 로드할 때 서명을 확인하고, 이를 통해 서명되지 않은 모듈이나 잘못된 키로 서명된 모듈의 로드를 허용하지 않아 커널 보안을 강화할 수 있다.

 

커널 모듈 서명은 defconfig에 CONFIG_MODULE_SIG 속성 값을 따르게 된다. 서명 키는 커널을 빌드 할 때 마다 새로 생성되며, module_install 작업을 진행 시 적용된다.

CONFIG_MODULE_SIG_FORCE 값에 따라 모듈 등록을 로드하거나 제한할 수 있다. 설정 되어 있지 않을 경우 기본 OFF 이다.

 

OFF 

  • 모듈에 서명이 있는 경우 신뢰할 수 있는 서명이 있어야 합니다.
  • 모듈이 서명되지 않은 경우에도 로드될 수 있으며 커널은 오염됨으로 표시됩니다.

ON

  • 모듈은 신뢰할 수 있는 서명으로 서명된 경우에만 로드될 수 있습니다.
  • 다른 모듈에서는 오류가 발생합니다.

서명 키를 본인이 원하는 대로 지정 하기위해서는 CONFIG_MODULE_SIG_KEY PEM 형식의 개인 키로 설정할 수 있다.

 

기본적으로 CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"이변경되지 않으면 커널은 커널 모듈 서명을 위한 PEM 형식 서명 키를 자동으로 생성하게 된다.

 

CONFIG_MODULE_SIG_KEY기본값 이 아닌 다른 값으로 설정하면 certs/signing_key.pem 서명 키의 자동 생성이 비활성화되고 사용자가 선택한 키로 커널 모듈에 서명할 수 있다.

 

참고 :

https://www.kernel.org/doc/Documentation/admin-guide/module-signing.rst

 

 

 

728x90

'NVIDIA > Error' 카테고리의 다른 글

JETPACK 5.1.2 HDMI ERROR  (1) 2024.01.11
NX Booting Error  (0) 2023.11.25
XAVIER NX EMMC, DDR 변경  (0) 2023.07.02
XavierNX Uart Error  (0) 2023.03.21