android에 kernel module 올리기(http://dry-kiss.blogspot.kr/search?updated-max=2013-07-04T11:23:00%2B09:00&max-results=1) 에 이어 작성한 글인데 올리지 않고 있다가 이제서야 포스팅.
android용 linux module 설치 시, module의 vermagic 이 맞지 않아 설치가 안되는 경우가 있다.
예를 들면 다음과 같은 메세지가 커널 메세지에 나오고, insmod에 실패한다.
version magic '2.6.29-12345 mod_unload ARMv7' should be '2.6.29-13579 mod_unload ARMv7'
이 경우, 커널 소스의 Makefile 의 최상단에 있는 EXTRAVERSION을 수정함으로써 vermagic의 리눅스 버전 다음 문자열을 바꿀 수 있다.
하지만, 이렇게 변경한 내용을 commit 하지 않으면 다음과 같이 기존 버전넘버와 -dirty 라는 이상한 문자가 붙게 되어 여전히 insmod 에 실패한다.
2.6.29abcd-ge3d684d-dirty mod_unload ARMv7
이는 scripts/setlocalversion 파일에서 git commit 되지 않은 변경사항이 있으면 자동으로 넣어주는 내용이다.
따라서, 해당 파일에서 version magic을 수정하는 부분을 주석 처리하거나, EXTRAVERSION을 변경한 내용을 커밋해 주면 된다.
http://forum.xda-developers.com/showthread.php?t=1236576
http://www.tldp.org/LDP/lkmpg/2.6/html/x380.html