2013年2月1日 星期五

在 Fedora 18 用「EDIMAX EW-7811Un」的變通辦法

不斷的更新是 Linux 日益強大的主要力量!但是,最近的更新卻讓筆者陷入夢魘,原本依前文 “在 Fedora 安裝「EDIMAX EW-7811Un」的驅動程式” 的步驟安裝,正享受「無線網路」的高度移動性。沒想到,最近這個享受沒多久的「無線網路」卻不能再連線了。
    想說等 Fedora 18 釋出後,這個問題說不定就解決了。安裝完 Fedora 18 後,不例外地立即有一堆更新,在更新後就依前文安裝「EDIMAX EW-7811Un」的驅動程式,滿心歡喜地等待……等待…………,就是連不上網路。
這下問題大了! 不但 Fedora 17 不能用,連最新的 Fedora 18 也不能用。 WiFi ! WiFi ! 你一定要回來。
這問題是一定要解決,可是也不能一日沒有「無線網路」。因此,第一優先要務是
Fedora 18

無線網路(WiFi)連線
發揮研究精神,遍查各個程式的「日誌檔案」(註一),看看「無線網路」最後成功連線的時間點,和「系統更新」是否有關係,這是根據 Fedora 17 原本可以正常連線,突然某次開機後就不能連線的狀況。接著,再檢查 Fedora 18 的情形,一開始釋出的 Linux 核心版本為 3.6.10-4,而安裝後就立即更新,當再依前文安裝「EDIMAX EW-7811Un」的驅動程式時,就不能正常安裝了。
    檢查的結果可以歸納到,當 Linux 的核心更新到 3.7 以後的版本時,RealTek 提供的驅動程式,就不能正確安裝。顯然問題出現在 kernel-3.7 以後的版本,這問題解決起來是有點花時間。就試試將核心版本凍結在 kernel-3.6,看能不能暫時解決問題。以下是試出來的暫時解決方法,請讀者先看完全部做法後,再依自己的情況進行不同的操作。

註一
:「日誌檔案」是程式用以存放記錄的檔案,通常儲存在「/var/log/」目錄下,其中的記錄包含:重要訊息、程式更新、設定改變、使用時間等。

一、查詢核心(kernel)的版本

如果你已經做過多次更新,則電腦中可能只有三個 3.7.x 的核心,而 3.6.x 核心都被自動移除(註:Fedora 只保留最新三個已安裝核心版本),讀者可以用這個命令(註:詳細請參考 yum 命令的說明)查詢自己的系統
[SiB@M2400 ~]$ yum list kernel --showduplicate
Loaded plugins: langpacks, presto, refresh-packagekit
Installed Packages
kernel.i6863.7.1-2.fc18@updates
kernel.i6863.7.2-204.fc18@updates
kernel.i6863.7.4-204.fc18@updates
Available Packages
kernel.i6863.6.10-4.fc18fedora
kernel.i6863.7.4-204.fc18updates
上例中,電腦系統只保留三個 3.7.x 版核心,都沒有 3.6.x 的核心,則需執行第二個步驟「二、安裝舊版的 kernel-3.6.x」。
    若讀者最近才剛安裝 Fedora 18,或是更新沒有那麼頻繁,系統查詢的結果可能如下,
[SiB@M2400 ~]$ yum list kernel --showduplicate
Loaded plugins: langpacks, presto, refresh-packagekit
Installed Packages
kernel.i6863.6.10-4.fc18@fedora
kernel.i6863.7.2-204.fc18@updates
kernel.i6863.7.4-204.fc18@updates
Available Packages
kernel.i6863.6.10-4.fc18fedora
kernel.i6863.7.4-204.fc18updates
上例中,舊的核心版本仍在電腦中,則可以直接進行第三個步驟「三、開機選擇執行 kernel-3.6.x」。

二、安裝舊的 kernel-3.6.x 版本

要記得先切換到 root 身份,再安裝舊版的核心
[root@M2400 ~]# yum install kernel-3.6.10-4.fc18.i686
若 YUM 發現已經有三個『已安裝版本』,會自動移除最舊的一個『已安裝版本』。待安裝完成後,這時可以重開機了。

註一:核心的版本只要是 3.6.x 就可以,不一定要用最舊。
註二:Fedora 17 釋出時的核心版本為 3.3.4-5,經多次更新歷經 3.6.x 到最近的 3.7.x,筆者是在更新到 3.7.x 後,「無線網路」才不正常。

三、開機選擇執行 kernel-3.6.x

開機時,在「啟動選單」畫面時,手動選擇舊版的核心。如果讀者想由「啟動選單」自動鎖定在某個版本,請參考 “解決「更新 Fedora 後,仍啟動舊版 Kernel」的問題” 的說明設定之。

四、安裝「EDIMAX EW-7811Un」驅動程式

請參考“在 Fedora 安裝「EDIMAX EW-7811Un」的驅動程式”的步驟進行,要特別注意安裝「編譯驅動程式核心模組」所需的套件,即:kernel、kernel-devel 和 gcc 三個套件。但是要注意,前兩者的安裝版本要與第三個步驟所用的版本相同(參考:安裝 Fedora 的某特定版本之套件),要知道目前正在執行的核心版本,可以用這個命令查詢
[SiB@M2400 ~]$ uname -r
3.6.10-4.fc18.i686
上例中,電腦系統正在執行 kernel-3.6.10-4 這個版本。

五、移除新的 kernel-3.7.x 版本

執行新的 kernel-3.7.x 既然不能用「無線網路」,可以把它們移除,以免不小心又執行到它們。移除前要記得先切換到 root 身份,再下移除命令
[root@M2400 ~]# yum remove kernel-3.7.4-204.fc18.i386 kernel-devel-3.7.4-204.fc18.i386
上例中,假設移除的核心版本為 3.7.4-204,在移除過程中可能會有些套件會因關聯連性而跟著移除,在按【y】鍵之先把這些套件名稱記下,待會再補安裝舊版的核心。
    以筆者為例,kernel-tools-libs 這個套件因關聯連到同一版本的 kernel,也被移除了。另外,還有其它套件(如:gnome-applets),因與 kernel-tools-libs 關聯也被移除。這些檔案都要再補安裝回去,
[root@M2400 ~]# yum install gnome-applets
上例中,雖然只下命令安裝 gnome-applets,但是 kernel-tools-libs 也會因關聯性而安裝。
    不過,過程中會發現到,所安裝的 kernel-tools-libs 版本是最新版。只要沒有因此而安裝 3.7.x 版的核心,就不會有問題

六、更新時排除核心更新

新版本的核心不能用「無線網路」,總不能連其它套件也都不更新。因此,在下更新命令時,要抑制 kernel 和 kernel-devel 這兩個套件的更新,而其它套件則繼續更新
[root@M2400 ~]# yum update -x kernel,kernel-devel

七、測試新版核心

Linux 的核心也會持續更新,不知那一版又可以繼續用「無線網路」了 。所以,每有新的核心版本更新,都要試一下。如果不行,再將之移除,以確保 Linux 的核心效能維持在最佳狀態。

後記:


已測試版本:

  • Fedora: 17, 18

4 則留言:

  1. 回覆
    1. 這問題已經有解了,
      可參考 2013-2-21 和 2013-3-4 的記錄。

      刪除
  2. 所以, 關機前, 以指令下達Kernel除外之更新後再關機:
    指令如下, 不知是否正確? 謝謝!

    [root@M2400 ~]# yum update -x kernel,kernel-devel –y ; shutdown –h +1


    回覆刪除
    回覆
    1. 對!詳細可參考
      2012-9-28: 常用的 YUM 命令:安裝、移除、查詢及回復
      2012-8-21: Fedora 中常用的 YUM 更新命令

      刪除

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)