Ubuntu 網(wǎng)絡故障排查

最近碰到一個問題,連接無線網(wǎng)絡的時候,發(fā)現(xiàn)右上角網(wǎng)絡設置中沒有 Enable Wi-Fi 這個選項了,日了狗了。。。

連不上 wifi 的原因無外乎以下幾點

  • 網(wǎng)卡問題
  • 沒有安裝網(wǎng)絡驅動
  • 安裝了網(wǎng)絡驅動,但是沒有加載進內核
  • 以上均沒問題,那么就是路由器沒有接入 internet 了

接下來,一步步排查

查看網(wǎng)卡信息

可以使用以下命令查看網(wǎng)卡信息

$ lshw -C network

正常情況至少會顯示兩個網(wǎng)卡,一個 eth0, 一個 wlan0。運行這個命令,我電腦的情況是: 兩個網(wǎng)卡的 description 字段后面都是 unclaim,并且沒有 logical name。

根據(jù)這個命令的結果,可以得出以下結論

  1. 網(wǎng)卡沒有問題
  2. 考慮到之前能夠連接 wifi,所以系統(tǒng)中肯定存在網(wǎng)絡驅動
  3. 鑒于網(wǎng)卡信息識別為 “unclaim”,網(wǎng)絡驅動應該沒有在運行,即沒有加載進內核

所以,接下來要做的便是: 找到和網(wǎng)卡相關的驅動,然后加載進內核

尋找網(wǎng)卡驅動

運行以下命令

 $ vim /etc/udev/rules.d/70-persistent-net.rules

結果如下

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:53:ed:31:c3:29", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x168c:0x0032 (ath9k)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:3e:8e:d8:10:95", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

從這里得知,eth0, wlan0 的驅動分別是 r8169.ko, ath9k.ko

檢查以上驅動模塊是否在運行

$ lsmod | grep "ath9k"

發(fā)現(xiàn)沒有任何輸出,這個證明模塊 ath9k.ko 沒有被加載

下面檢查系統(tǒng)中是否真的已經(jīng)有這個模塊

$ find / -name "ath9k.ko"

結果為

/lib/modules/3.13.0-32-generic/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
/lib/modules/3.13.0-79-generic/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko
/usr/lib/debug/lib/modules/3.13.0-79-generic/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko

以上說明模塊 ath9k.ko 確實存在!但是,等等,上面前面兩個 ath9k.ko 分別處在不同的內核模塊下,即 3.13.0-32-generic 和 3.13.0-79-generic 下。此時,我們查看以下當前系統(tǒng)的內核版本

$ uname -r

結果顯示的是

3.13.0-92-generic

到這里問題已經(jīng)很明朗了,我們系統(tǒng)中確實存在無線網(wǎng)卡驅動模塊,ath9k.ko,但是當前運行的內核版本中卻沒有!解決辦法有兩個

  1. 在當前內核版本中,下載相應的 ath9k.ko,并通過 insmod 命令安裝
  2. 將當前的內核回退到 3.13.0-79-generic 版本

由于我這里不僅僅是無線模塊沒有加載,eth0 模塊也沒有,所以猜測是因為系統(tǒng)在升級到 3.13.0-92 的過程中,發(fā)生錯誤導致的,所以,我這里選擇將系統(tǒng)回退。

系統(tǒng)回退

由于系統(tǒng)上已經(jīng)存在 3.13.0-79-generic,所以不需要下載,安裝

修改 boot 啟動選項

$ vim /boot/grub/grub.cfg

在打開的文件中,存在諸多的 menuentry,每個 menuentry 對應開機菜單中的一個選項,找到 3.13.0-79-generic 內核對應的 menuentry,確定它的位置序號,第一個 menuentry 位置為 0,逐次加 1。

然后修改 /etc/default/grub 中的 GRUB_DEFAULT 值為剛才那個序列號

最后運行 update-grub,以及 reboot 即可

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容