insmod 错误,模块格式无效,fedora 35
insmod error, invalid module format, fedora 35
我正在尝试了解内核模块,然后是一个简单的 hello world 示例。我的电脑是 运行ning fedora 35。当我 运行 sudo insmod mymodule.ko
我得到错误 insmod: ERROR: could not insert module mymodule.ko: Invalid module format
.
从阅读其他人的问题来看,它似乎与内核版本与编译模块的目标不匹配有关,但是 uname -r
returns 5.16.18-200.fc35.x86_64
和 modinfo mymodule.ko
给出 vermagic: 5.16.18-200.fc35.x86_64 SMP preempt mod_unload
这似乎表明它们是相同的。
根据其他一些帖子,我尝试了 dmesg 并得到:
[ 1689.372354] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 00000000d2334323, val ffffffffc140e000
这与其他用户的体验完全不同(并且似乎与内核版本无关),但我无法理解它。
我的makefile,如果有用的话:
obj-m += mymodule.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
这个 post 让我走上了正确的道路,可能会帮助其他不使用 fedora 的人
问题出在内核头文件上,问题一如既往地通过可靠的卸载和重新安装得到解决:
sudo dnf remove kernel-devel
sudo dnf install kernel-devel
我正在尝试了解内核模块,然后是一个简单的 hello world 示例。我的电脑是 运行ning fedora 35。当我 运行 sudo insmod mymodule.ko
我得到错误 insmod: ERROR: could not insert module mymodule.ko: Invalid module format
.
从阅读其他人的问题来看,它似乎与内核版本与编译模块的目标不匹配有关,但是 uname -r
returns 5.16.18-200.fc35.x86_64
和 modinfo mymodule.ko
给出 vermagic: 5.16.18-200.fc35.x86_64 SMP preempt mod_unload
这似乎表明它们是相同的。
根据其他一些帖子,我尝试了 dmesg 并得到:
[ 1689.372354] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 00000000d2334323, val ffffffffc140e000
这与其他用户的体验完全不同(并且似乎与内核版本无关),但我无法理解它。
我的makefile,如果有用的话:
obj-m += mymodule.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
这个 post 让我走上了正确的道路,可能会帮助其他不使用 fedora 的人
问题出在内核头文件上,问题一如既往地通过可靠的卸载和重新安装得到解决:
sudo dnf remove kernel-devel
sudo dnf install kernel-devel