디바이스 드라이버 insmod에서 에러가 ...

wsong의 이미지

처음에는 컴파일이 안되서, OS의 커널 버전의 소스를 따로 다운받아서, make bzImage하고 난 후에
컴파일 하니까 컴파일은 성공했는데요.

그 다음에 insmode에서 아래와 같은 에러가 나옵니다.

$ sudo insmod hello.ko
[sudo] password for user1:
insmod: error inserting 'hello.ko': -1 Invalid module format

이런 에러는 어떤식으로 해결해야하는 걸까요.

wanderer의 이미지


일단 커널을 받아서 make 로 컴파일 후에 make install modules_install 을 실행시켜서 인스톨하고

부트로더에 다가 추가는 하셨나요?

그렇게 컴파일한 커널로 부팅해서 드라이버를 다시 컴파일 및 insmod 를 해보시기 바라겠습니다

wsong의 이미지

감사합니다. 인스톨을 해야되는거군요. 그런데 인스톨 하다가 에러가 나오네요.
혹시 이런 경우는 없으셔싼요? --; 디바이스 드라이버 한번 올려보기가 어렵네요 --;

wsong@ubuntu:/usr/src/linux-source-2.6.38/linux-source-2.6.38$ sudo make install modules_install
[sudo] password for wsong:
sh /usr/src/linux-source-2.6.38/linux-source-2.6.38/arch/x86/boot/install.sh 2.6.38.8 arch/x86/boot/bzImage \
System.map "/boot"
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.38.8 /boot/vmlinuz-2.6.38.8
run-parts: executing /etc/kernel/postinst.d/nvidia-common 2.6.38.8 /boot/vmlinuz-2.6.38.8
run-parts: executing /etc/kernel/postinst.d/pm-utils 2.6.38.8 /boot/vmlinuz-2.6.38.8
run-parts: executing /etc/kernel/postinst.d/update-notifier 2.6.38.8 /boot/vmlinuz-2.6.38.8
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.38.8 /boot/vmlinuz-2.6.38.8
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.38.8
Found linux image: /boot/vmlinuz-2.6.38-8-generic
Found initrd image: /boot/initrd.img-2.6.38-8-generic
Found memtest86+ image: /boot/memtest86+.bin
done
cp: `/usr/src/linux-source-2.6.38/linux-source-2.6.38/modules.order'를 설명할 수 없음: 그런 파일이나 디렉터리가 없습니다

wanderer의 이미지


왠지 ubuntu 에서 커널을 직접 받아서 설치할려고 하는 것 같네요

ubuntu 저장소에서 커널을 받았으면
다음의 링크를 참조해서 컴파일 하고 부팅하면 될것 같습니다

https://help.ubuntu.com/community/Kernel/Compile 혹은 http://www.ubuntu.or.kr/viewtopic.php?f=9&t=4543

커널을 컴파일해서 부팅한다음에 디바이스 드라이버를 make clean && make 한 다음에
insmod 를 실행해보시기 바라겠습니다

White89의 이미지

저도 랜카드쪽에서 이런적이 몇번 있었는데
모드 해제하고 다시하니 되더라구요...

이미 모듈이 insmod 되었을때도 이런 에러가 뜨구요.
rmmod hello.ko
insmod hello.ko
해보세요...

xen으로 부팅하면
insmod 명령이 먹힐때도 있어요..

wsong의 이미지

댓글 감사합니다.
lsmod로 확인해보니, 아직 insmod되있지 않은거 같습니다.T_T

익명 사용자의 이미지

Version 이 달라서 그럴 수도 있습니다.

poplinux의 이미지

새로운 커널 받으셔서 커널 컴파일 하신후에 디바이스 드라이버를 재컴파일하셔야 합니다.

재컴파일 안하시고 기존 드라이버를 올리려고 하신것 같네요.

========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux

임베디드 리눅스 관련 프리렌서 지향