我对诊断 Linux 系统上的硬件问题并不陌生。即使过去几年我的大部分专业工作都涉及虚拟化,我仍然喜欢蹲在桌子底下,摸索着设备和内存模块。好吧,除了“蹲在桌子底下”的部分。但这并不意味着持续存在的神秘错误不会令人沮丧。最近,我在我的 Ubuntu 18.04 工作站上遇到了其中一个错误,这个问题持续了几个月都没有解决。
在这里,我将分享我的问题以及我为解决这个问题所做的许多尝试。即使你可能永远不会遇到我遇到的具体问题,但这个故障排除过程可能会有所帮助。此外,你还可以沾沾自喜,觉得我浪费了大量时间和精力去追寻无用的线索。
一切都始于我注意到我的工作站上的网络延迟和下载速度都很糟糕。嗯,让我先退一步。实际上,它始于几年前,我搬家了,懒得把电缆穿过我的新家,连接到所有需要连接的房间。相反,我买了一堆 USB WiFi 适配器。性能不如以太网,但足够好了——通常在机器之间为 2Mbps 到 4Mbps。
但后来在一个阴沉的冬天,我的工作站连接恶化了。据我所知,它似乎是在我短暂地将我的接口置于监控模式以尝试网络嗅探的时候开始的。现在延迟很高,我经常很幸运能获得 300kbps 的下载速度,并且 ifconfig 报告了大量的传输错误。情况太糟糕了,我经常将较大的基于互联网的软件包下载到笔记本电脑上,然后使用 USB 将它们传输到我的工作站。这是什么世纪?
排除不可能
我的 USB WiFi 接口是否会随着时间的推移而退化?没问题:家里可能散落着 10 个——都是不同的型号。所以我尝试了另外两三个,但结果同样令人沮丧。
虽然可能性很小,但检查我的 ISP 服务连接不会有什么坏处。多个 DSL 速度测试网站都证实我的提供商正在提供他们所承诺的一切。也许我的 ISP 提供的 WiFi 路由器是罪魁祸首。不是。即使笔记本电脑就坐在工作站旁边,它也能很好地连接到同一个路由器。
我确定是 WiFi 问题吗?也许是普通的网络问题。为了查明真相,我组合了两根旧的 CAT5 电缆,并将它们从路由器拉出,穿过餐桌下方、穿过客厅、穿过一个大厅,然后进入我的办公室。瞬间连接恢复:25Mbps 下载速度。但我意识到,从长远来看,我的妻子可能不会对餐桌上的电缆有很好的反应。这不是一个解决方案,但它确实证实了问题是 WiFi 特有的。
我短暂切换到监控模式是否以某种方式搞乱了某些晦涩的 WPA_supplicant 设置?(WPA_supplicant 是一个使用 WPA(WiFi Protected Access)协议管理客户端连接的软件包。) 最快确定这一点的方法是将我的工作站启动到 live USB Ubuntu 会话,以获得原始的开箱即用的操作系统体验。结果呢?即使使用 live 会话,我的连接仍然很差。这几乎排除了软件配置,不是吗?
那么还剩下什么?在绝望中,我给一位老朋友发了电子邮件,他给我了一些合理的建议,包括检查 dmesg 是否有错误、lsmod 是否有冲突的驱动程序以及我的无线芯片组的固件版本。鉴于过去几年在将如此广泛的 WiFi 芯片组集成到 Linux 内核中所取得的进展,以及深入研究固件版本可能会有多么复杂,我跳过了最后一项并寄希望于最好的结果。
最后,我的朋友建议我清除 wpa_supplicant 并重新安装它。考虑到我当时没有任何 WiFi 连接,这个“重新安装”可能会变得很棘手。但这是可行的。所以我这样做了,而且,我的连接确实有所改善……持续了一个星期左右。然后又回到了 250kbps 的黑暗时代。
在绝望中,我尝试卸载 NetworkManager 并用 Wicd 软件包替换它。关于这一点有两个有趣的观察:
- 你知道在 GNOME 3 中卸载 NetworkManager 会自动导致 gnome-control-center 也被卸载吗?顺便说一句,这被认为是功能,而不是错误。
- 你知道为什么 Wicd 不是我熟悉的任何 Linux 发行版使用的默认 WiFi 工具吗?我现在非常确定,虽然它在某些边缘情况下可以成为救星,但这是因为该模块更有可能引入许多令人讨厌的错误行为。
新硬件,老问题
所以在几周不舒服之后,由于一些基本无关的原因,我决定构建一个替换工作站。
令人高兴的是,我与新机器的连接是稳定的。直到它不再稳定。
几天之内,我又回到了透过浓雾观看互联网的状态。速度测试表明我的延迟在 100 毫秒范围内,传输速度非常慢。怎么回事?两台机器共享的唯一硬件是电源,而且这不可能成为一个因素。
事实上,工作站升级让我的事情变得更简单了,因为它几乎排除了所有可能性。而且,正如夏洛克·福尔摩斯所说,当你排除不可能的时候,剩下的就是可能的。
那么还剩下什么?实际上只有一件事,但需要所有这些死胡同和失败才能让我意识到这一点。因为我的工作站位于我的桌子下面,而且 WiFi 接收可能会受到太多物理屏障的影响,所以我希望尽可能地抬高我的 USB WiFi 适配器。为此,我通过一个三英尺长的 USB 延长线将其连接到我的工作站,并将其放在我的桌面上。凭直觉,我拔掉了延长线,并将适配器直接插入集成 USB 端口之一。
瞬间成功。也许从一开始使用延长线就是一个坏主意,或者更有可能的是,它随着时间的推移而退化,但现在一切都运行得很顺利。我敢打赌你没有猜到这个结局。我当然没有。
7 条评论