Ubuntu系統網路故障排查的方法

NO IMAGE

一、首先說明的是連不上 wifi 的原因無外乎以下幾點

     1、網絡卡問題

     2、沒有安裝網路驅動

     3、安裝了網路驅動,但是沒有載入進核心

     4、以上均沒問題,那麼就是路由器沒有接入 internet 了

接下來,一步步排查

二、檢視網絡卡資訊

可以使用以下命令檢視網絡卡資訊


$ lshw -C network

正常情況至少會顯示兩個網絡卡,一個 eth0, 一個 wlan0。執行這個命令,我電腦的情況是: 兩個網絡卡的 description 欄位後面都是 unclaim,並且沒有 logical name。

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

     1、網絡卡沒有問題

     2、考慮到之前能夠連線 wifi,所以系統中肯定存在網路驅動

     3、鑑於網絡卡資訊識別為 “unclaim”,網路驅動應該沒有在執行,即沒有載入進核心

所以,接下來要做的便是: 找到和網絡卡相關的驅動,然後載入進核心

三、尋找網絡卡驅動

執行以下命令


$ 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"

發現沒有任何輸出,這個證明模組 ath9k.ko 沒有被載入

下面檢查系統中是否真的已經有這個模組


$ 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 下。此時,我們檢視以下當前系統的核心版本


$ uname -r

結果顯示的是


3.13.0-92-generic

到這裡問題已經很明朗了,我們系統中確實存在無線網絡卡驅動模組,ath9k.ko,但是當前執行的核心版本中卻沒有!解決辦法有兩個

     1、在當前核心版本中,下載相應的 ath9k.ko,並通過 insmod 命令安裝

     2、將當前的核心回退到 3.13.0-79-generic 版本

由於我這裡不僅僅是無線模組沒有載入,eth0 模組也沒有,所以猜測是因為系統在升級到 3.13.0-92 的過程中,發生錯誤導致的,所以,我這裡選擇將系統回退。

四、系統回退

由於系統上已經存在 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 即可

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家能有一定的幫助,如果有疑問大家可以留言交流,謝謝大家對指令碼之家的支援。

您可能感興趣的文章:

Ubuntu中為Android HAL編寫JNI方法提供JAVA訪問硬體服務介面ubuntu下迅雷極速版的安裝與使用Ubuntu下安裝Docker教程騰訊雲ubuntu伺服器tomcat訪問慢的原因分析及解決方法ubuntu 設定靜態IP的實現方法ubuntu mysql更改tmp路徑的方法VMware Tools(ubuntu系統)安裝圖文教程Ubuntu 安裝 vsftpd FTP詳細步驟Ubuntu Server 16.04安裝MySQL設定遠端訪問出現問題的完美解決方案(error:10061)Ubuntu 使用Jni開發例項詳解