主题 : 怎么用fedora虚拟机编译一个KO模块再安装到fedora本身的系统上 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 122117
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2016-01-09
最后登录: 2016-06-19
楼主  发表于: 2016-04-21 13:06

 怎么用fedora虚拟机编译一个KO模块再安装到fedora本身的系统上

我用光盘打包好的fedora虚拟机做linux设备驱动实验 就一个简单的hello_world驱动模块 ,把它编译并安装在这个fedoraPC系统上 老是出问题。调了4天都没有解决,希望大神提供帮助
这是C程序
复制代码
  1. #include <linux/kernel.h>
  2. #nclude <linux/module.h>
  3. #include <linux/kernel.h>
  4. #include <linux/init.h>
  5. static int init_hello_4(void)
  6. {
  7.    printk(KERN_ALERT "Hello, world 4 ");
  8.    return 0;
  9. }
  10. static void cleanup_hello_4(void)
  11. {
  12.    printk(KERN_ALERT "Goodbye, world 4 ");
  13. }
  14. module_init(init_hello_4);
  15. module_exit(cleanup_hello_4);
  16. MODULE_LICENSE("GPL");
  17. MODULE_AUTHOR("Playmud");
  18. MODULE_DESCRIPTION("Test only!");
  19. include <linux/init.h>
  20. include <linux/init.h>


下面是Makefile
复制代码
  1. ifneq ($(KERNELRELEASE),)
  2. obj-m :=hello.o
  3. else
  4. #KERNELDIR ?=/home/student/linux-2.6.39-rc1
  5. KERNELDIR ?= /lib/modules/`uname -r`/build
  6. PWD :=$(shell pwd)
  7. default:
  8.         $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
  9. endif


下面是KO的信息
[root@embedclub hello]# modinfo hello.ko
filename:       hello.ko
description:    Test only!
author:         Playmud
license:        GPL
srcversion:     8582FEB4B426329AE9D05F7
depends:
vermagic:       2.6.35.13-92.fc14.i686 SMP mod_unload 686
[root@embedclub hello]#

下面是安装信息 (老是错误)
[root@embedclub hello]# insmod hello.ko
insmod: error inserting 'hello.ko': -1 Invalid module format
[root@embedclub hello]#

下面是内核信息
[root@embedclub hello]# uname -a
Linux embedclub 2.6.35.13-92.fc14.i686.PAE #1 SMP Sat May 21 17:33:09 UTC 2011 i686 i686 i386 GNU/Linux

希望高手相助