insmod: error inserting 'simp-blkdev.ko': -1 Invalid module format
2012-12-17 21:28
447 查看
(一)
今天写了个块设备驱动例子,在虚拟机上加载模块insmod simp_blkdev.ko的时候,出现以下错误。
insmod: error inserting 'simple-blk.ko': -1 Invalid module format
其实错误很简单,Makefile的编写失误,因为之前是想让这个驱动模块在TQ2440上运行的,所以,Makefile的编写使用了以下形式:
ifneq ($(KERNELRELEASE),)
obj-m := simp_blkdev.o
else
KDIR := /usr/src/linux-2.6.30.4
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
主要错误在于红色部分,这个内核模块版本与虚拟机的内核模块版本不一致,导致出现以上错误。
用uname -r 命令查看当前系统的版本是多少,我的查询结果是2.6.18-164.el5
故将其改为:KDIR := /lib/modules/2.6.18-164.el5/build
并且将 ARCH=arm CROSS_COMPILE=arm-linux- 去掉,因为我们要在虚拟机上加载模块,故不使用交叉编译工具。改完之后,再make,编译成功,问题解决。
————————————————————————————————
(二)
按照最开始那个Makefile编译出来的.ko文件,通过nfs下载到开发板上,在开发板上加载insmod simp-blkdev.ko 的时候却出现这个错误。
vmap allocation for size 16785408 failed: use vmalloc=<size> to increase size.
insmod: can't insert 'simp-blkdev.ko': Cannot allocate memory
出错原因也很简单,它的意思是不能分配16785408这么大的空间,所以失败,回到simp_blkdev.c上,原来我们在这里分配的内存空间是16M,当然就出错啦,要知道嵌入式里面的内存是相当宝贵的,不是每一次分配那么大的空间内核都会响应给你,所以我把simp_blkdev.c上的分配空间改为16k,再重新编译,错误得到解决。
PS:学驱动也有一些日子了,但是由于临近期末考试,没有更多的时间来写文章,待考完试我再一一详细介绍驱动相关的知识。最后,正如之前你看到的,LWJ祝大家学习愉快。^_^
今天写了个块设备驱动例子,在虚拟机上加载模块insmod simp_blkdev.ko的时候,出现以下错误。
insmod: error inserting 'simple-blk.ko': -1 Invalid module format
其实错误很简单,Makefile的编写失误,因为之前是想让这个驱动模块在TQ2440上运行的,所以,Makefile的编写使用了以下形式:
ifneq ($(KERNELRELEASE),)
obj-m := simp_blkdev.o
else
KDIR := /usr/src/linux-2.6.30.4
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
主要错误在于红色部分,这个内核模块版本与虚拟机的内核模块版本不一致,导致出现以上错误。
用uname -r 命令查看当前系统的版本是多少,我的查询结果是2.6.18-164.el5
故将其改为:KDIR := /lib/modules/2.6.18-164.el5/build
并且将 ARCH=arm CROSS_COMPILE=arm-linux- 去掉,因为我们要在虚拟机上加载模块,故不使用交叉编译工具。改完之后,再make,编译成功,问题解决。
————————————————————————————————
(二)
按照最开始那个Makefile编译出来的.ko文件,通过nfs下载到开发板上,在开发板上加载insmod simp-blkdev.ko 的时候却出现这个错误。
vmap allocation for size 16785408 failed: use vmalloc=<size> to increase size.
insmod: can't insert 'simp-blkdev.ko': Cannot allocate memory
出错原因也很简单,它的意思是不能分配16785408这么大的空间,所以失败,回到simp_blkdev.c上,原来我们在这里分配的内存空间是16M,当然就出错啦,要知道嵌入式里面的内存是相当宝贵的,不是每一次分配那么大的空间内核都会响应给你,所以我把simp_blkdev.c上的分配空间改为16k,再重新编译,错误得到解决。
PS:学驱动也有一些日子了,但是由于临近期末考试,没有更多的时间来写文章,待考完试我再一一详细介绍驱动相关的知识。最后,正如之前你看到的,LWJ祝大家学习愉快。^_^
相关文章推荐
- insmod: error inserting 'simp-blkdev.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'first_drv.ko': -1 Invalid module format
- 解决insmod: error inserting 'helloworld.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- 解决insmod: error inserting 'helloworld.ko': -1 Invalid module format
- 解决insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- insmod: error inserting 'hello.ko': -1 Invalid module format
- 加载模块是提示“insmod: error inserting 'helloworld.ko': -1 Invalid module format”
- insmod: error inserting '***.ko': -1 Invalid parameters 解决办法
- insmod: error inserting './sctp.ko': -1 Unknown symbol in module
- insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists(转)
- ubuntu12.04出现ERROR: Removing &#39;hello&#39;: Device or resource busy和insmod: error inserting &#39;hello.ko&#39;: -1 Device or r
- linux驱动模块加载出错insmod: error inserting './usb_driver.ko': -1 Unknown symbol in module
- ubuntu 12.04出现insmod: error inserting 'hello.ko': -1 Device or resource busy的解决办法