我遇到了以下问题。我需要重新编译 btusb 模块才能使用蓝牙修补 当我最终运行补丁时,模块没有加载:
$ lsmod | grep bluetooth
bluetooth 557056 10 btrtl,btintel,bnep,btbcm
我确实尝试手动加载模块并出现此错误:
$ sudo modprobe btusb
modprobe: ERROR: could not insert 'btusb': Exec format error
我尝试的最后一件事是编译并加载原始代码,但显示了相同的错误。
这可能是 btusb 源代码中的错误吗?如果答案是肯定的,我会在 launchpad 上报告该错误,但我先在这里发帖以确保万无一失。我提供了更多信息这里
谢谢您的进步。
更新:有关该模块的更多信息:
$ modinfo btusb | egrep 'filename|vermagic'
filename: /lib/modules/4.10.0-20-generic/kernel/drivers/bluetooth/btusb.ko
vermagic: 4.10.8 SMP mod_unload
答案1
您需要返回到源代码的 drivers/bluetooth 目录,然后
make -C /lib/modules/$(uname -r)/build M=$(pwd) clean
cp /usr/src/linux-headers-$(uname -r)/.config ./
cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symvers
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth
sudo modprobe -r btusb
sudo modprobe -v btusb
发生错误是因为源代码是在错误的内核头上编译的。modinfo
结果证实了这一点,因为 vermagic 信息(内核 4.10.8)与文件名信息(4.10.0-20)不匹配