截至今天下午,我的 Dell XPS 13 上的 WiFi 停止工作(运行内核为 4.4.0-1-amd64 的 Debian sid)。lspci
检测到我的 wifi 卡,但ifconfig -a
仅显示环回接口。
我尝试插入最近在这台笔记本电脑上使用的 USB wifi 适配器,但它也没有被识别为网络接口。在启动过程中和插入 USB WiFi 加密狗后,都会出现以下消息dmesg
:
cfg80211: Unknown symbol wireless_nlevent_flush (err 0)
cfg80211
听起来它将用于配置 802.11(即 wifi),所以我怀疑这个内核模块没有正确加载。事实上,如果我尝试这样做,modprobe cfg80211
我会收到以下错误:
modprobe: ERROR: could not insert 'cfg80211':? Unknown symbol in module, or unknown parameter (see dmesg)
并检查dmesg
我看到与上面相同的消息。
谷歌搜索"unknown symbol wireless_nlevent_flush"
产生的结果为零,尽管谷歌搜索wireless_nlevent_flush
似乎暗示它与wext
某种方式有关。一页建议rfkill
必须先加载cfg80211
,但rfkill
已经加载了。如果有任何建议,我将非常感激。
答案1
您的cfg80211
模块和正在运行的内核不兼容。内核中的内部编程接口变化相当频繁,因此当您升级内核时,需要保持模块同步。 (例外是一些专门维护的树外模块,以便在大范围的内核版本上工作。)
如果自上次重新引导后升级了内核软件包,则您可能有一个正在运行的内核,该内核不再与磁盘上的内核版本匹配,因此modprobe
正在尝试加载更新内核的模块。确保不要卸载linux-image-…
与正在运行的内核对应的软件包。您可以使用以下命令检查正在运行的内核版本uname -r
;根据 Debian 的软件包命名约定,linux-image-$(uname -r)
应该安装该软件包。
如果您已删除该软件包,则需要重新安装或重新启动。要重新安装,请检查 中是否仍然有该软件包/var/cache/apt/archives
。如果没有,请在以下位置查找该包快照.debian.org(与匹配的版本版本包的linux-image-…
版本,即 的第二列dpkg -l
,它并不总是与名称中包含的版本完全相同)。