编译内核模块的时候,需要使用一个编译过的内核文件来支持,如果在makefile里面指定的内核路径下的内核未经过编译,在这里编译内核模块是不能通过的,这个比较重要。
编译完成之后,nfs起根文件系统。把测试程序和内核模块memdev.ko都拷贝到根文件系统下,进行测试。
可是遇到错误如下:
# ls
test/
app-mem
memdev.ko
# insmod
memdev.ko
insmod: cannot insert 'memdev.ko': Device or resource
busy
于是使用 cat /proc/devices 命令查看系统已使用的设备号。
这才发现:静态申请的设备号没申请到,因为申请的号已经被系统占用了,所以会出现Device or resource busy
于是改掉主设备号,改成203,这个数字比较好,哈哈。
crw-r--r-- 1 0 0 203, 0 Apr 24 10:05 memdev0
申请成功。