insmod: error inserting 'kernel.ko': -1 Inavalid parameters

我自己在linux 6.0编译内核,如下如我的内核源码:

文件名:kernel.c

代码:

#include <linux/module.h>

#include <net/sock.h>

#include <linux/netlink.h>

#include <linux/skbuff.h>

#define NETLINK_USER 31

struct sock *nl_sk = NULL;

static void hello_nl_recv_msg(struct sk_buff *skb)

{

struct nlmsghdr *nlh;

int pid;

struct sk_buff *skb_out;

int msg_size;

char *msg = "Hello from kernel";

int res;

printk(KERN_INFO "Entering: %s\n", __FUNCTION__);

msg_size = strlen(msg);

nlh = (struct nlmsghdr *)skb->data;

printk(KERN_INFO "Netlink received msg payload:

%s\n", (char *)nlmsg_data(nlh));

pid = nlh->nlmsg_pid; /*pid of sending process */

skb_out = nlmsg_new(msg_size, 0);

if (!skb_out)

{

printk(KERN_ERR "Failed to allocate new skb\n");

return;

}

nlh = nlmsg_put(skb_out, 0, 0, NLMSG_DONE, msg_size, 0);

NETLINK_CB(skb_out).dst_group = 0; /* not in mcast group */

strncpy(nlmsg_data(nlh), msg, msg_size);

res = nlmsg_unicast(nl_sk, skb_out, pid);

if (res < 0)

printk(KERN_INFO "Error while sending bak to user\n");

}

static int __init hello_init(void)

{

printk("Entering: %s\n", __FUNCTION__);

nl_sk = netlink_kernel_create(&init_net, NETLINK_USER, 0, hello_nl_recv_msg,

NULL, THIS_MODULE);

if (!nl_sk)

{

printk(KERN_ALERT "Error creating socket.\n");

return -10;

}

return 0;

}

static void __exit hello_exit(void)

{

printk(KERN_INFO "exiting hello module\n");

netlink_kernel_release(nl_sk);

}

module_init(hello_init); module_exit(hello_exit);

MODULE_LICENSE("GPL");

文件名:Makefile

代码:

obj-m = kernel.o

KVERSION = $(shell uname -r)

all:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

当我一次执行命令:

1.make

2.insmod kernle.ko

然后内核报错:

insmod: error inserting ‘kernel.ko‘: -1 Inavalid parameters

出错原因:

解决办法:

将kernel.c的文件名换成hello.c,同时将Makefile中对应的名称也换成hello,然后重新make,insmod问题解决~~

关于这个问题我还想补充几点:

1.Makefile文件中注意命令执行的部分,前面一定用tab键开头,否则编译的时候会出错。

2.这个编译程序是适用于linux平台下的,ubuntu平台下可能会报异常,大家一定注意!!!

3.关于这个问题,我还看到过csdn上另一个博客,如果我的方法无法解决,大家可以参考这篇博客:

http://blog.csdn.net/miaohongyu1/article/details/20938515

最后,good luck~~

insmod: error inserting 'kernel.ko': -1 Inavalid parameters

时间: 2025-01-14 11:30:52

insmod: error inserting 'kernel.ko': -1 Inavalid parameters的相关文章

insmod: error inserting &#39;simp-blkdev.ko&#39;: -1 Invalid module format

(一) 今天写了个块设备驱动例子,在虚拟机上加载模块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 K

insmod: error inserting &#39;hello.ko&#39;: -1 Invalid module format

在学习编写linux驱动程序的时候,一般都是从写一个helloworld的模块开始.但是在编译完成后,进行模块加载的时候,有时会出现如下错误: insmod: error inserting 'hello.ko': -1 Invalid module format 其实,出现这个问题的原因很简单,就是:编译的内核版本与实机运行的内核版本不一致. 所以解决起来也很简单,实机运行的系统的代码树位置一般在/usr/src/kernels.只要将Makefile中的代码树改成实际运行的内核代码即可. i

insmod: error inserting : -1 Invalid module format

Linux(Ubuntu)添加module提示错误 原因:所用内核版本号和正在运行的版本号不对应. 解决方案:重新编译你用的内核,然后安装内核 怎么编译和升级内核,请参见 http://blog.csdn.net/robinsonmhj/article/details/41720835 另外的解决方案请参见 http://m.blog.csdn.net/blog/zyj_123456789/17288823 http://askubuntu.com/questions/14627/no-symb

解决FATAL: Error inserting ip_vs ... Unknown symbol in module, or unknown parameter

在使用yum install ipvsadm -y安装lvs管理工具后,发现指令ipvsadm相关指令一直报错: FATAL: Error inserting ip_vs (/lib/modules/2.6.32-358.18.1.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko): Unknown symbol in module, or unknown parameter (see dmesg) Can't initialize ipvs: Prot

ddr不稳定导致1-bit error引起kernel panic(Unable to handle kernel paging request )

Panic log: [ 939.136378] c0 11060 (kworker/u8:5) binder: release 29969:29969 transaction 41327 out, still active [ 951.095433] c1 1026 (Binder_6) binder: 644:1026 transaction failed 29189, size 18336-0 [ 951.103360] c1 1026 (Binder_6) binder: send fa

内核模块基础

l  什么是内核模块? 1. 内核模块是一种没有经过链接,不能独立运行的目标文件,实在内核空间中运行的程序.经过链接装载到内核里面成为内核的一部分,可以访问内核的公用符号(函数和变量) 2. 内核模块可以让操作系统内核在需要时载入和执行,在不需要的时候由操作系统卸载.它们扩展了操作系统内核的功能却不需要重新启动系统 3. 如果没有内核模块,我们不得不一次又一次重新编译生成单内核操作系统的内核镜像来加入新的功能,这还意味着一个臃肿的内核. l  模块机制的优缺点 优点:1.减小内核映像尺寸,增加系

Linux 驱动之EXPORT_SYMBOL 函数以及2.6内核 Unknown symbol bug解决办法

1.Linux中EXPORT_SYMBOL的用法 EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用.您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试. //mod1.c #include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> MODULE_LICENSE("DUAL BSD/GPL&q

在centos7(EL7.3 即 kernel-3.10.0-514.X )上安装BCM4312无线网卡驱动要注意的问题

我新装的centos7主机无法使用里面自带的网卡,查询后发现网卡型号为BCM4312.我在看资料安装的过程中遇到了些问题,纠结了好久,现在分享下要注意的点,为后来的遇到同样问题的人提供点帮助.现在开始说正事: 若要安装以 Broadcom BCM4311.BCM4312.BCM4313.BCM4321.BCM4322.BCM43224.BCM43225.BCM43227 或 BCM43228 为基础的无线网络卡,请遵照以下的步骤: 第 1 步:辨认无线网络芯片及安装时依赖的组件 首先,请确定你是

第1个linux驱动___安装驱动模块之内核再爱我一次

在上一篇博文中,我们已经通过Makefile编译得到first_drv.ko文件,这是一个可以被安装到ubuntu中的驱动模块,要怎样做呢? 在/work/my_drivers/first_drv/1th/目录下执行:insmod first_drv.ko 如果你是在普通用户状态下执行的这条命令,可以看到系统提醒我们:insmod: error inserting 'first_drv.ko': -1 Operation not permitted 这是因为安装驱动模块需要超级权限,你可以在普通