开发板上Linux安装驱动出现loading out-of-tree module taints kernel
风筝丶
领域专家: 嵌入式与硬件开发技术领域 2017-06-12 05:22:07 开发板是jz2440开发板(arm9)
Linux Kernel是4.8.17版本
虚拟机上是16.04的ubuntu,
busybox是1.26版本
gcc是4.4.3版本
制作好跟文件后,开发板设置为从服务器上启动根文件.
安装驱动程序是发现:
/ # ls
bin first_drv.ko linuxrc root tmp
dev firstdrvtest mnt sbin usr
etc lib proc sys
/ # insmod first_drv.ko
first_drv: loading out-of-tree module taints kernel.
/ # lsmod
lsmod: can't open '/proc/modules': No such file or directory
/ # random: crng init done
/ # insmod first_drv.ko
insmod: can't insert 'first_drv.ko': File exists
/ #
安装不了驱动程序啊,为什么啊?
值得一提的是,为了让busybox编译成功,我把:
Linux System Utilities->blkdiscard
Linux System Utilities->nsenter
Coreutils->sync
在make menuconfig时都取消选中了.
求助大佬了
驱动程序部分如下:
static struct file_operations first_drv_fops = {
.owner = THIS_MODULE, /* 这是一个宏,推向编译模块时自动创建的__this_module变量 */
.open = first_drv_open,
.write = first_drv_write,
};
int major;
static int first_drv_init(void)
{
major = register_chrdev(0, "first_drv", &first_drv_fops); // 注册, 告诉内核
firstdrv_class = class_create(THIS_MODULE, "firstdrv");
//firstdrv_class_dev = class_device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "xyz"); /* /dev/xyz */
firstdrv_class_dev = device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "xyz"); /* /dev/xyz */
gpfcon = (volatile unsigned long *)ioremap(0x56000050, 16);
gpfdat = gpfcon + 1;
return 0;
}
static void first_drv_exit(void)
{
unregister_chrdev(major, "first_drv"); // 卸载
//class_device_unregister(firstdrv_class_dev);
device_destroy(firstdrv_class_dev,MKDEV(major, 0));
class_destroy(firstdrv_class);
iounmap(gpfcon);
}
module_init(first_drv_init);
module_exit(first_drv_exit);
MODULE_LICENSE("GPL");