커널의 소스 코드를 다운로드하고 패치를 적용한 후 다시 빌드했는데 이제 커널 모듈이 생겼고 이를 시도하면 insmod
"모듈의 알 수 없는 기호"에 대해 불평하고 dmesg
"기호 버전에 동의하지 않습니다"라는 오류가 발생합니다. ........".
이 모듈의 소스 코드를 찾아 내 커널에 대해 다시 빌드하지 않고 어떻게든 커널이 이 모듈을 수락하도록 강제할 수 있습니까?
위험하다는 걸 알지만 가능하다면 위험을 감수하겠습니다.
답변1
insmod
모듈 로딩을 위한 최고의 도구는 아니지만 modprobe
, 오히려 더 똑똑합니다. 존재하다modprobe
매뉴얼 페이지--force
, 옵션 이 있다는 것을 알게 될 것입니다가능한버전 정보가 충돌하는 모듈을 로드하는 중입니다.
말씀하신 대로 이는 위험하므로 기본적으로 사용해서는 안 됩니다. 시스템이 충돌하면 조각을 집어들 수 있습니다.
답변2
동일한 커널 버전을 다시 빌드하고 이 오류가 발생하는 경우 적용한 패치로 인해 모듈이 참조하는 커널의 내용이 변경되었을 가능성이 높습니다. 이것은 거의 폭발할 것을 보장합니다. 모듈의 소스 코드를 찾아서 올바른 참조가 있도록 새 커널에 대해 다시 컴파일해야 합니다.
전혀 컴파일되지 않을 수도 있으며 커널 패치에서 수정한 내용과 일치하도록 수정해야 할 수도 있습니다.
답변3
make clean을 하고, 모듈 디렉토리에서 다시 make를 하고, insmod를 실행하면 해당 오류가 발생하지 않습니다. 또는 커널 헤더가 누락된 경우도 있을 수 있습니다. 배포판에 따라 설치하십시오.