Next Previous Contents

6. 追求最新版本 Kernel 的迷思

『 究竟該不該升級 Kernel ? 』,這個問題常困擾眾多剛接觸 Linux 朋友。個人電腦快速發展的這些年,我們總是不停的再追逐 CPU 的速度,追逐硬碟的容量。這樣的環境生態底下養成了人們對於電腦相關的事務一定要求:最新、最快、最大。

其實 『 夠用就好 』 是我認為比較正確的觀念,電腦只是輔助我們完成工作的工具罷了,並沒有絕對的好或壞,能夠幫助我們達到目標的工具就是好工具,不用去爭 Intel 或是 AMD ,不用去管 MS Windows 或是 Linux。

Linux kernel 也是如此,幾乎每過幾天就會出現一個版本,除非您是 kernel 的開發者,除非您工作上需要,否則建議您挑一個穩定的版本就好。

筆者的建議,在底下這幾種狀況您可以嘗試更換 kernel:

6.1 Debian 升級 kernel 真輕鬆

  1. 增加 Sources link 到 /etc/sources.list

    在 Debian testing or unstable 裡頭就可以找到目前最新版本的 linux kernel 囉。

  2. 確認升級版本

    先確認您要安裝的版本,因為 Debian 支援平台眾多,您可以先由 dselect 以 『 kernel-image 』 為 keyword 搜尋,就可以得到類似底下畫面 ( 圖 dselect_kernel ) :

    附圖 dselect_kernel

  3. 用 『 apt-get 』指令立刻升級

    再次強調用 『 dselect 』 找軟體,再用 『 apt-get 』 指令安裝軟體,是筆者自己的習慣,無須評論好壞 :-)。

    以筆者電腦為例,我的 NoteBook 電腦是 x86 、單顆 Intel P!!! CPU ,所以我選擇了最目前最新且對我電腦合適的 『 kernel-image-2.4.16-686 』 來安裝:

               # apt-get install kernel-image-2.4.16-686
              
    

    迎面而來的第一個問題詢問您要不要終止安裝,如附圖 install_kernel-1 記得鍵入 『 n 』 繼續下一個步驟,除非您突然反悔不想升級 kernel 了,

    附圖 install_kernel-1

    如果您是安裝完 stable 系統第一次升級 kernel 會看到如 install_kernel-2-1 的詢問畫面:

    附圖 install_kernel-2-1

    請回答 『 Yes 』 按下 『 Enter 』 就可以完成 kernel 升級。

    如果您之前已經升級過 kernel ,就會見到如附圖 install_kernel-2-2 的畫面:

    附圖 install_kernel-2-2

    按下 『 Enter 』 使用預設值即可,接下來出現類似 install_kernel-2-1 的畫面 install_kernel-3:

    附圖 install_kernel-3

    一樣按 『 Enter 』使用預設的 『 Yes 』 選項,到此為止 kernel 就已經升級完畢囉,很輕鬆吧!

第一次升級 kernel 要做的幾個小動作

理論上這個動作應該是升級 kernel 時,系統自動幫我們完成才對,不過目前實際測試結果並非如此,第一次升級 kernel 時我們仍舊要手動這幾個動作:

  1. 製作 /boot/initrd symbol link

    通常在 /boot 底下會有一個名為 『 initrd-(依據您升級的 kernel 版本) 』,為了我們以後升級 kernel 不需一再更改 /etc/lilo.conf ,我們建議做一個 symbol link:

    # ln -s /boot/initrd-(依據您升級的 kernel 版本) /boot/initrd

  2. 編輯 /etc/lilo.conf

    找到 image=/vmlinuz ,在底下加入 『 initrd=/boot/initrd 』,底下是我的 /etc/lilo.conf 設定檔片段:

    # Boot up Linux by default.
    #
    default=Linux
    
    image=/vmlinuz
            label=Linux
            initrd=/boot/initrd
            read-only
    #       restricted
    #       alias=1
    
    image=/vmlinuz.old
            label=LinuxOLD
            read-only
            optional
    #       restricted
    #       alias=2
    
    # If you have another OS on this machine to boot, you can uncomment the
    # following lines, changing the device name on the `other' line to
    # where your other OS' partition is.
    #
     other=/dev/hda1
            label=win
            table=/dev/hda
    #       restricted
    #       alias=3
               
    

  3. 執行 lilo -v -v -v

    執行 『 lilo -v -v -v 』讓剛剛編輯 『 /etc/lilo.conf 』的動作生效。

6.2 手動編譯 kernel

一般來說 Debian 的 kernel-image 套件的維護者在套件的製作過程中都很貼心的為我們把所有的選項都編成 module 了,所以我們在安裝好 kernel-image 套件後,只要執行 modprobe 就可以把我們需要的功能給載入 kernel。如果您想要把某些功能直接編進 kernel,或者想要嘗試編譯屬於自己系統的 kernel,可以使用下面的方法:

(下面的 xxxx 請您填入您準備安裝的版本號碼)

  1. $ apt-get install kernel-source-xxxx
  2. $ cd /usr/src
  3. $ tar zxvf kernel-source-xxxx.tar.gz
  4. $ cd /usr/src/kernel-source-xxxx
  5. $ make config

    (個人建議您使用 make menuconfig 或是 make xconfig ,可以得到各個選項的簡單說明。但是記得要安裝其他相關套件才能執行)

  6. $ make-kpkg -rev Custom.1 --initrd kernel_image

    (Custom.1 可以改成您自己取的版本名稱)

  7. $ cd /usr/src
  8. $ dpkg -i kernel-image-xxxx_Custom.1_i386.deb

其餘修改 lilo 的部份與安裝 kernel-image 套件的過程相同。

p.s. 如果您不滿意目前編譯好的 kernel,而想要再重新編譯一次,記得要先執行 make-kpkg clean 以後再執行 5 8 的步驟。


Next Previous Contents