使用 licheerv 的 rtl8723ds wifi 时出现的问题,出现cfg80211: Unknown relocation type 57
,lsmod
是空的,修好后 8723ds.ko 又出现同样的问题,修好后nmcli
又有问题,nmcli d s
看到 wlan0 是 unavailable,执行systemctrl status NetworkManager
看到Failed to D-Bus activate wpa_supplicant service
,据查可能是 NetworkManager 依赖的 wpa_supplicant 有问题,执行which wpa_cli
啥也没有,原来是我安装 NetworkManager 时的方法不对,不应用mmdebstarp ... -include=network-manager...
,不会自动安装依赖,chroot
进去手动安装可以
全志d1是riscv,Unknown relocation type 57 是 riscv 的,在 linux/arch/riscv/include/uapi/asm/elf.h 里的,或者readelf -r ./8723ds.ko | grep R_RISCV_32_PCREL
也能看到。如果linux/arch/riscv/kernel/module.c
里没有[R_RISCV_32_PCREL] = apply_r_riscv_32_pcrel_rela
来处理这个就会有问题(新内核有),可以在编译 linux 时添加KCFLAGS='-fno-asynchronous-unwind-tables -fno-unwind-tables'
来避免生成.eh_frame
段解决,单独编译模块时则在其 Makefile 里添加KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables