每次升級 CentOS Kernel 真麻煩 ….

為何 CentOS 的 Kernel 永遠就停留在那一版啊 !!!!

我的主機版網卡要 r8168 的 driver  ~ 為何都沒有加入 ....

啊不就好加在我還稍微懂一點 shell 知道怎麼遠端也一併編譯新 kernel 網卡的 driver

趕緊把 r8168 怎麼在 Kernel 更新完後還沒重開機前的編譯步驟寫下來

  1. 先更新 CentOS Kernel , 不能重新開機 , 並且記下 Kernel 版本 , 怎麼記 ? 其實更新完畢後去 /boot 目錄看最新版的檔案就知道版本編號了 , 假設發現有 vmlinuz-2.6.18-92.1.17.el5 這個檔案是最新的 , 那麼 2.6.18-92.1.17.el5 就是更新過後的版本編號
  2. 假設已經到 RealTek 網站下載了最新 Driver Source code , 並且解壓縮後 , 我們可以看看目錄下有個 readme 檔案 , 那裏面已經有說明怎麼手動編譯此 driver 及安裝 , 但由於我是遠端安裝 , 我必須要先作一些前置作業 , 不然若照 readme 的安裝法 , 會安裝到目前的 Kernel 版本的目錄(因為我還沒有重開機啊 ...)
  3. r8168 source code 目錄下還有個目錄叫 src , src/Makefile 這個檔案是重點 , 裡面寫了簡單的編譯 shell , 我們只需要改此檔案 , 一開始就可以看一行 KVER           := $(shell uname -r) , 這一行的目的是把目前的 Kernel 版本丟到 KVER 的變數 , 而後面的 shell 就會進行編譯或安裝的時候都會按照 KVER 指定的版本去進行 , 所以我們只要把這一行改為固定的版本 , 也就是我們更新後的版本 , 可以寫成  KVER            := "2.6.18-92.1.17.el5" , 然後存檔
  4. 我們現在退回 src 上一層目錄 , 也就是 r8168 source code 的第一層 , 直接執行
    make clean modules
    make install
  5. 若按照 readme 說法 , 當 make install 之後還要作 depmod -a , 但因為我們尚未重開機 , 所以不能此刻作 , 那就只好把 depmod -a 寫到 /etc/rc.d/rc.local 了 , 寫完之後重開機試試

就這樣啦 ... 開機後網路就通囉 , 以後要更新 CentOS Kernel 都要做這個步驟 , 不然網路都不會通 .... 真是雪特

發佈留言