我对诊断 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 条评论