[커널 컴파일] 커널 버전과 상관없이 모듈을 사용가능하게 ??
글쓴이: FruitsCandy / 작성시간: 금, 2005/12/09 - 3:00오후
환경은 RH9이고 커널의 버전과 상관없이 다른 버전의 모듈도 사용하고 싶습니다.
Loadable module support -> Set version information on all module symbols 을 해제했습니다.
.config파일의 CONFIG_MODVERSIONS 은 not set으로 되었구요
make modules , make modules_install 을 실행하지 않고
make bzImage만 해서 커널만 만들었습니다.
새 커널로 바꾸니 부팅 중 대부분의 모듈을 올리는중 unresolved symbol이 나타나네요.
'insmod -f 모듈' 을 하면 version mismatch와 unresolved symbol가 동시에 나타납니다.
버전을 체크하지 않게 컴파일 했는데 왜 버전을 체크할까요??
Forums:
추측성 발언입니다만, 지금 make modules, make module
추측성 발언입니다만, 지금 make modules, make modules_install을 해놓으시면, 앞으로 unresolved symbol이 안나온다는 말 아닐까요?
"Set version information on all module s
"Set version information on all module symbols" 을 해석해 보면
"모든 모듈 심볼에 버젼 정보를 넣는다"는 말이니까 심볼 이름에 버젼 정보가 모듈에는 있는데 새로 컴파일한 커널에는 없기 때문이 아닐지... 저도 그냥 추측입니다.
CONFIG_MODVERSIONS를 not set 한 커널로 make m
CONFIG_MODVERSIONS를 not set 한 커널로 make modules , make modules_install을 해보니
당연히! 심볼에러는 나지 않고, insmod에서 강제로 다른 버전의 모듈을 올려보니 올라가지가 않습니다.
반대로 CONFIG_MODVERSIONS를 set한 커널은 insmod에서 강제로 다른 커널 버전을 모듈을 올리면
경고 메세지를 뿌려주면서 로딩이 됩니다.
http://www.skynet.ie/~mark/home/kernel/symbols.html
제가 잘 못 알고 있었군요..
CONFIG_MODVERSIONS옵션을 disable한 커널은 오히려 같은 커널로 컴파일된 모듈만 올릴수 있고
enable한 커널은 다른 버전의 커널로 컴파일된 모듈도 올릴 수 있다는 군요.
디바이스 드라이버쪽 공부를 좀 해야겠습니다 :)
댓글 달기